nmbug-status: Use 'show-ref --heads' for loading configs

When loading configs from Git, the bare branch name (without a
refs/heads/ prefix or similar) matches all branches of that name
(including remote-tracking branches):

  .nmbug $ git show-ref config
  48f3bbf1d1492e5f3d2f01de6ea79a30d3840f20 refs/heads/config
  48f3bbf1d1492e5f3d2f01de6ea79a30d3840f20 refs/remotes/origin/config
  4b6dbd9ffd152e7476f5101eff26747f34497cee refs/remotes/wking/config

Instead of relying on the ordering of the matching references, use
--heads to ensure we only match local branches.
This commit is contained in:
W. Trevor King 2015-03-22 15:51:41 -07:00 committed by David Bremner
parent a351df1a06
commit 244f873954
3 changed files with 17 additions and 1 deletions

15
NEWS
View file

@ -23,6 +23,21 @@ Contrib
previously provided by `notmuch-deliver` should now be provided by
`notmuch insert`, provided by the main notmuch binary.
nmbug-status
------------
`nmbug-status` now only matches local branches when reading
`status-config.json` from the `config` branch of the `NMBGIT`
repository. To help new users running `nmbug-status`, `nmbug clone`
now creates a local `config` branch tracking `origin/config`. Folks
who use `nmbug-status` with an in-Git config (i.e. you don't use the
`--config` option) who already have `NMBGIT` set up are encouraged to
run:
git checkout config origin/config
in their `NMBGIT` repository (usually `~/.nmbug`).
Notmuch 0.19 (2014-11-14)
=========================

View file

@ -308,6 +308,7 @@ def clone(repository):
wait=True)
_git(args=['config', '--unset', 'core.worktree'], wait=True)
_git(args=['config', 'core.bare', 'true'], wait=True)
_git(args=['branch', 'config', 'origin/config'], wait=True)
def _is_committed(status):

View file

@ -92,7 +92,7 @@ def read_config(path=None, encoding=None):
# read only the first line from the pipe
sha1_bytes = subprocess.Popen(
['git', '--git-dir', nmbhome, 'show-ref', '-s', branch],
['git', '--git-dir', nmbhome, 'show-ref', '-s', '--heads', branch],
stdout=subprocess.PIPE).stdout.readline()
sha1 = sha1_bytes.decode(encoding).rstrip()
if not sha1: