nmbug: Auto-checkout in clone if it wouldn't clobber

We currently auto-checkout after pull and merge to make those more
convenient.  They're guarded against data-loss with a leading
_insist_committed().  This commit adds the same convenience to clone,
since in most cases users will have no NMBPREFIX-prefixed tags in
their database when they clone.  Users that *do* have
NMBPREFIX-prefixed tags will get a warning (and I've bumped the
default log level to warning so folks who don't set --log-level will
see it) like:

  $ nmbug clone http://nmbug.notmuchmail.org/git/nmbug-tags.git
  Cloning into '/tmp/nmbug-clone.g9dvd0tv'...
  Checking connectivity: 16674, done.
  Branch config set up to track remote branch config from origin.
  Not checking out to avoid clobbering existing tags: notmuch::0.25, ...
This commit is contained in:
W. Trevor King 2017-10-10 15:49:51 -07:00 committed by David Bremner
parent 0a1558471f
commit 7ef3b65376

View file

@ -54,7 +54,7 @@ except ImportError: # Python 2
__version__ = '0.2' __version__ = '0.2'
_LOG = _logging.getLogger('nmbug') _LOG = _logging.getLogger('nmbug')
_LOG.setLevel(_logging.ERROR) _LOG.setLevel(_logging.WARNING)
_LOG.addHandler(_logging.StreamHandler()) _LOG.addHandler(_logging.StreamHandler())
NMBGIT = _os.path.expanduser( NMBGIT = _os.path.expanduser(
@ -311,6 +311,13 @@ def clone(repository):
_git(args=['config', '--unset', 'core.worktree'], wait=True, expect=(0, 5)) _git(args=['config', '--unset', 'core.worktree'], wait=True, expect=(0, 5))
_git(args=['config', 'core.bare', 'true'], wait=True) _git(args=['config', 'core.bare', 'true'], wait=True)
_git(args=['branch', 'config', 'origin/config'], wait=True) _git(args=['branch', 'config', 'origin/config'], wait=True)
existing_tags = get_tags()
if existing_tags:
_LOG.warning(
'Not checking out to avoid clobbering existing tags: {}'.format(
', '.join(existing_tags)))
else:
checkout()
def _is_committed(status): def _is_committed(status):