--- a/hgext/rebase.py Thu Feb 28 21:53:13 2013 -0600
+++ b/hgext/rebase.py Tue Mar 19 16:19:20 2013 -0700
@@ -112,6 +112,7 @@
Returns 0 on success, 1 if nothing to rebase.
"""
originalwd = target = None
+ activebookmark = None
external = nullrev
state = {}
skipped = set()
@@ -159,7 +160,7 @@
ui.warn(_('tool option will be ignored\n'))
(originalwd, target, state, skipped, collapsef, keepf,
- keepbranchesf, external) = restorestatus(repo)
+ keepbranchesf, external, activebookmark) = restorestatus(repo)
if abortf:
return abort(repo, originalwd, target, state)
else:
@@ -245,7 +246,7 @@
# Keep track of the current bookmarks in order to reset them later
currentbookmarks = repo._bookmarks.copy()
- activebookmark = repo._bookmarkcurrent
+ activebookmark = activebookmark or repo._bookmarkcurrent
if activebookmark:
bookmarks.unsetcurrent(repo)
@@ -258,7 +259,7 @@
ui.progress(_("rebasing"), pos, ("%d:%s" % (rev, repo[rev])),
_('changesets'), total)
storestatus(repo, originalwd, target, state, collapsef, keepf,
- keepbranchesf, external)
+ keepbranchesf, external, activebookmark)
p1, p2 = defineparents(repo, rev, target, state,
targetancestors)
if len(repo.parents()) == 2:
@@ -516,7 +517,7 @@
marks.write()
def storestatus(repo, originalwd, target, state, collapse, keep, keepbranches,
- external):
+ external, activebookmark):
'Store the current status to allow recovery'
f = repo.opener("rebasestate", "w")
f.write(repo[originalwd].hex() + '\n')
@@ -525,6 +526,7 @@
f.write('%d\n' % int(collapse))
f.write('%d\n' % int(keep))
f.write('%d\n' % int(keepbranches))
+ f.write('%s\n' % (activebookmark or ''))
for d, v in state.iteritems():
oldrev = repo[d].hex()
if v > nullmerge:
@@ -545,6 +547,7 @@
target = None
collapse = False
external = nullrev
+ activebookmark = None
state = {}
f = repo.opener("rebasestate")
for i, l in enumerate(f.read().splitlines()):
@@ -560,6 +563,10 @@
keep = bool(int(l))
elif i == 5:
keepbranches = bool(int(l))
+ elif i == 6 and not (len(l) == 81 and ':' in l):
+ # line 6 is a recent addition, so for backwards compatibility
+ # check that the line doesn't look like the oldrev:newrev lines
+ activebookmark = l
else:
oldrev, newrev = l.split(':')
if newrev in (str(nullmerge), str(revignored)):
@@ -577,7 +584,7 @@
repo.ui.debug('computed skipped revs: %s\n' % skipped)
repo.ui.debug('rebase status resumed\n')
return (originalwd, target, state, skipped,
- collapse, keep, keepbranches, external)
+ collapse, keep, keepbranches, external, activebookmark)
except IOError, err:
if err.errno != errno.ENOENT:
raise
--- a/setup.py Thu Feb 28 21:53:13 2013 -0600
+++ b/setup.py Tue Mar 19 16:19:20 2013 -0700
@@ -149,7 +149,8 @@
# a missing __init__.py in mercurial/locale, we also ignore that.
err = [e for e in err.splitlines()
if not e.startswith(b('Not trusting file')) \
- and not e.startswith(b('warning: Not importing'))]
+ and not e.startswith(b('warning: Not importing')) \
+ and not e.startswith(b('obsolete feature not enabled'))]
if err:
print >> sys.stderr, "stderr from '%s':" % (' '.join(cmd))
print >> sys.stderr, '\n'.join([' ' + e for e in err])
@@ -519,11 +520,36 @@
setup(name='mercurial',
version=setupversion,
- author='Matt Mackall',
- author_email='mpm@selenic.com',
+ author='Matt Mackall and many others',
+ author_email='mercurial@selenic.com',
url='http://mercurial.selenic.com/',
- description='Scalable distributed SCM',
- license='GNU GPLv2+',
+ download_url='http://mercurial.selenic.com/release/',
+ description=('Fast scalable distributed SCM (revision control, version '
+ 'control) system'),
+ long_description=('Mercurial is a distributed SCM tool written in Python.'
+ ' It is used by a number of large projects that require'
+ ' fast, reliable distributed revision control, such as '
+ 'Mozilla.'),
+ license='GNU GPLv2 or any later version',
+ classifiers=[
+ 'Development Status :: 6 - Mature',
+ 'Environment :: Console',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: System Administrators',
+ 'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'Natural Language :: Danish',
+ 'Natural Language :: English',
+ 'Natural Language :: German',
+ 'Natural Language :: Italian',
+ 'Natural Language :: Japanese',
+ 'Natural Language :: Portuguese (Brazilian)',
+ 'Operating System :: Microsoft :: Windows',
+ 'Operating System :: OS Independent',
+ 'Operating System :: POSIX',
+ 'Programming Language :: C',
+ 'Programming Language :: Python',
+ 'Topic :: Software Development :: Version Control',
+ ],
scripts=scripts,
packages=packages,
py_modules=pymodules,
--- a/tests/test-rebase-conflicts.t Thu Feb 28 21:53:13 2013 -0600
+++ b/tests/test-rebase-conflicts.t Tue Mar 19 16:19:20 2013 -0700
@@ -7,7 +7,7 @@
> publish=False
>
> [alias]
- > tglog = log -G --template "{rev}:{phase} '{desc}' {branches}\n"
+ > tglog = log -G --template "{rev}:{phase} '{desc}' {branches} {bookmarks}\n"
> EOF
$ hg init a
@@ -36,11 +36,12 @@
$ echo l3 >> extra2
$ hg add extra2
$ hg ci -m L3
+ $ hg bookmark mybook
$ hg phase --force --secret 4
$ hg tglog
- @ 5:secret 'L3'
+ @ 5:secret 'L3' mybook
|
o 4:secret 'L2'
|
@@ -81,7 +82,7 @@
saved backup bundle to $TESTTMP/a/.hg/strip-backup/*-backup.hg (glob)
$ hg tglog
- @ 5:secret 'L3'
+ @ 5:secret 'L3' mybook
|
o 4:secret 'L2'
|
@@ -118,4 +119,8 @@
$ hg cat -r 5 common
resolved merge
+Bookmark stays active after --continue
+ $ hg bookmarks
+ * mybook 5:d67b21408fc0
+
$ cd ..