--- a/README Mon Oct 12 01:22:41 2015 -0700
+++ b/README Mon Oct 12 01:23:59 2015 -0700
@@ -51,6 +51,11 @@
Changelog
=========
+5.3.0 --
+
+- split: add a new command to split changesets
+- add some progress data during changesets discovery
+
5.2.1 --
- add compatibility with Mercurial 3.6
--- a/hgext/directaccess.py Mon Oct 12 01:22:41 2015 -0700
+++ b/hgext/directaccess.py Mon Oct 12 01:23:59 2015 -0700
@@ -129,6 +129,8 @@
hashre = util.re.compile('[0-9a-fA-F]{1,40}')
+_listtuple = ('symbol', '_list')
+
def gethashsymbols(tree):
# Returns the list of symbols of the tree that look like hashes
# for example for the revset 3::abe3ff it will return ('abe3ff')
@@ -143,8 +145,18 @@
if hashre.match(tree[1]):
return [tree[1]]
return []
- elif len(tree) == 3:
- return gethashsymbols(tree[1]) + gethashsymbols(tree[2])
+ elif tree[0] == "func" and tree[1] == _listtuple:
+ # the optimiser will group sequence of hash request
+ result = []
+ for entry in tree[2][1].split('\0'):
+ if hashre.match(entry):
+ result.append(entry)
+ return result
+ elif len(tree) >= 3:
+ results = []
+ for subtree in tree[1:]:
+ results += gethashsymbols(subtree)
+ return results
else:
return []
--- a/hgext/evolve.py Mon Oct 12 01:22:41 2015 -0700
+++ b/hgext/evolve.py Mon Oct 12 01:23:59 2015 -0700
@@ -805,74 +805,82 @@
nodeid was actually created. If created is False, nodeid
references a changeset existing before the rewrite call.
"""
- if len(old.parents()) > 1: #XXX remove this unecessary limitation.
- raise error.Abort(_('cannot amend merge changesets'))
- base = old.p1()
- updatebookmarks = _bookmarksupdater(repo, old.node())
-
- # commit a new version of the old changeset, including the update
- # collect all files which might be affected
- files = set(old.files())
- for u in updates:
- files.update(u.files())
-
- # Recompute copies (avoid recording a -> b -> a)
- copied = copies.pathcopies(base, head)
-
-
- # prune files which were reverted by the updates
- def samefile(f):
- if f in head.manifest():
- a = head.filectx(f)
- if f in base.manifest():
- b = base.filectx(f)
- return (a.data() == b.data()
- and a.flags() == b.flags())
+ wlock = lock = tr = None
+ try:
+ wlock = repo.wlock()
+ lock = repo.lock()
+ tr = repo.transaction('rewrite')
+ if len(old.parents()) > 1: #XXX remove this unecessary limitation.
+ raise error.Abort(_('cannot amend merge changesets'))
+ base = old.p1()
+ updatebookmarks = _bookmarksupdater(repo, old.node(), tr)
+
+ # commit a new version of the old changeset, including the update
+ # collect all files which might be affected
+ files = set(old.files())
+ for u in updates:
+ files.update(u.files())
+
+ # Recompute copies (avoid recording a -> b -> a)
+ copied = copies.pathcopies(base, head)
+
+
+ # prune files which were reverted by the updates
+ def samefile(f):
+ if f in head.manifest():
+ a = head.filectx(f)
+ if f in base.manifest():
+ b = base.filectx(f)
+ return (a.data() == b.data()
+ and a.flags() == b.flags())
+ else:
+ return False
else:
- return False
- else:
- return f not in base.manifest()
- files = [f for f in files if not samefile(f)]
- # commit version of these files as defined by head
- headmf = head.manifest()
- def filectxfn(repo, ctx, path):
- if path in headmf:
- fctx = head[path]
- flags = fctx.flags()
- mctx = memfilectx(repo, fctx.path(), fctx.data(),
- islink='l' in flags,
- isexec='x' in flags,
- copied=copied.get(path))
- return mctx
- return None
-
- message = cmdutil.logmessage(repo.ui, commitopts)
- if not message:
- message = old.description()
-
- user = commitopts.get('user') or old.user()
- date = commitopts.get('date') or None # old.date()
- extra = dict(commitopts.get('extra', {}))
- extra['branch'] = head.branch()
-
- new = context.memctx(repo,
- parents=newbases,
- text=message,
- files=files,
- filectxfn=filectxfn,
- user=user,
- date=date,
- extra=extra)
-
- if commitopts.get('edit'):
- new._text = cmdutil.commitforceeditor(repo, new, [])
- revcount = len(repo)
- newid = repo.commitctx(new)
- new = repo[newid]
- created = len(repo) != revcount
- updatebookmarks(newid)
-
- return newid, created
+ return f not in base.manifest()
+ files = [f for f in files if not samefile(f)]
+ # commit version of these files as defined by head
+ headmf = head.manifest()
+ def filectxfn(repo, ctx, path):
+ if path in headmf:
+ fctx = head[path]
+ flags = fctx.flags()
+ mctx = memfilectx(repo, fctx.path(), fctx.data(),
+ islink='l' in flags,
+ isexec='x' in flags,
+ copied=copied.get(path))
+ return mctx
+ return None
+
+ message = cmdutil.logmessage(repo.ui, commitopts)
+ if not message:
+ message = old.description()
+
+ user = commitopts.get('user') or old.user()
+ date = commitopts.get('date') or None # old.date()
+ extra = dict(commitopts.get('extra', old.extra()))
+ extra['branch'] = head.branch()
+
+ new = context.memctx(repo,
+ parents=newbases,
+ text=message,
+ files=files,
+ filectxfn=filectxfn,
+ user=user,
+ date=date,
+ extra=extra)
+
+ if commitopts.get('edit'):
+ new._text = cmdutil.commitforceeditor(repo, new, [])
+ revcount = len(repo)
+ newid = repo.commitctx(new)
+ new = repo[newid]
+ created = len(repo) != revcount
+ updatebookmarks(newid)
+
+ tr.close()
+ return newid, created
+ finally:
+ lockmod.release(lock, wlock, tr)
class MergeFailure(util.Abort):
pass
@@ -935,7 +943,10 @@
'unresolved merge conflicts (see hg help resolve)')
if commitmsg is None:
commitmsg = orig.description()
- extra = {'rebase_source': orig.hex()}
+ extra = dict(orig.extra())
+ if 'branch' in extra:
+ del extra['branch']
+ extra['rebase_source'] = orig.hex()
backup = repo.ui.backupconfig('phases', 'new-commit')
try:
@@ -971,13 +982,13 @@
for book in destbookmarks: # restore bookmark that rebase move
repo._bookmarks[book] = dest.node()
if oldbookmarks or destbookmarks:
- repo._bookmarks.write()
+ repo._bookmarks.recordchange(tr)
tr.close()
finally:
tr.release()
return nodenew
-def _bookmarksupdater(repo, oldid):
+def _bookmarksupdater(repo, oldid, tr):
"""Return a callable update(newid) updating the current bookmark
and bookmarks bound to oldid to newid.
"""
@@ -989,7 +1000,7 @@
repo._bookmarks[b] = newid
dirty = True
if dirty:
- repo._bookmarks.write()
+ repo._bookmarks.recordchange(tr)
return updatebookmarks
### bookmarks api compatibility layer ###
@@ -1081,8 +1092,8 @@
fn, opts, _syn = entry
else:
fn, opts, = entry
- deprecationwarning = _('%s have been deprecated in favor of %s\n' % (
- oldalias, newalias))
+ deprecationwarning = _('%s have been deprecated in favor of %s\n') % (
+ oldalias, newalias)
def newfn(*args, **kwargs):
ui = args[0]
ui.warn(deprecationwarning)
@@ -1500,17 +1511,17 @@
@command('^evolve|stabilize|solve',
[('n', 'dry-run', False,
- 'do not perform actions, just print what would be done'),
+ _('do not perform actions, just print what would be done')),
('', 'confirm', False,
- 'ask for confirmation before performing the action'),
- ('A', 'any', False, 'also consider troubled changesets unrelated to current working directory'),
- ('r', 'rev', [], 'solves troubles of these revisions'),
- ('', 'bumped', False, 'solves only bumped changesets'),
- ('', 'divergent', False, 'solves only divergent changesets'),
- ('', 'unstable', False, 'solves only unstable changesets (default)'),
- ('a', 'all', False, 'evolve all troubled changesets related to the current '
- 'working directory and its descendants'),
- ('c', 'continue', False, 'continue an interrupted evolution'),
+ _('ask for confirmation before performing the action')),
+ ('A', 'any', False, _('also consider troubled changesets unrelated to current working directory')),
+ ('r', 'rev', [], _('solves troubles of these revisions')),
+ ('', 'bumped', False, _('solves only bumped changesets')),
+ ('', 'divergent', False, _('solves only divergent changesets')),
+ ('', 'unstable', False, _('solves only unstable changesets (default)')),
+ ('a', 'all', False, _('evolve all troubled changesets related to the current '
+ 'working directory and its descendants')),
+ ('c', 'continue', False, _('continue an interrupted evolution')),
] + mergetoolopts,
_('[OPTIONS]...'))
def evolve(ui, repo, **opts):
@@ -1706,16 +1717,23 @@
obs = obs.parents()[0]
newer = obsolete.successorssets(repo, obs.node())
if len(newer) > 1:
- msg = _("skipping %s: divergent rewriting. can't choose destination\n" % obs)
+ msg = _("skipping %s: divergent rewriting. can't choose destination\n") % obs
ui.write_err(msg)
return 2
targets = newer[0]
assert targets
if len(targets) > 1:
- msg = _("does not handle split parents yet\n")
- ui.write_err(msg)
- return 2
- target = targets[0]
+ # split target, figure out which one to pick, are they all in line?
+ targetrevs = [repo[r].rev() for r in targets]
+ roots = repo.revs('roots(%ld)', targetrevs)
+ heads = repo.revs('heads(%ld)', targetrevs)
+ if len(roots) > 1 or len(heads) > 1:
+ msg = "cannot solve split accross two branches\n"
+ ui.write_err(msg)
+ return 2
+ target = repo[heads.first()]
+ else:
+ target = targets[0]
displayer = cmdutil.show_changeset(ui, repo, {'template': shorttemplate})
target = repo[target]
if not ui.quiet or confirm:
@@ -1750,13 +1768,13 @@
bumped = repo[bumped.rev()]
# For now we deny bumped merge
if len(bumped.parents()) > 1:
- msg = _('skipping %s : we do not handle merge yet\n' % bumped)
+ msg = _('skipping %s : we do not handle merge yet\n') % bumped
ui.write_err(msg)
return 2
prec = repo.set('last(allprecursors(%d) and public())', bumped).next()
# For now we deny target merge
if len(prec.parents()) > 1:
- msg = _('skipping: %s: public version is a merge, this not handled yet\n' % prec)
+ msg = _('skipping: %s: public version is a merge, this not handled yet\n') % prec
ui.write_err(msg)
return 2
@@ -1778,9 +1796,9 @@
if progresscb: progresscb()
newid = tmpctx = None
tmpctx = bumped
- bmupdate = _bookmarksupdater(repo, bumped.node())
# Basic check for common parent. Far too complicated and fragile
tr = repo.transaction('bumped-stabilize')
+ bmupdate = _bookmarksupdater(repo, bumped.node(), tr)
try:
if not list(repo.set('parents(%d) and parents(%d)', bumped, prec)):
# Need to rebase the changeset at the right place
@@ -1904,7 +1922,7 @@
displayer.show(other)
ui.write(_('base: '))
displayer.show(base)
- if confirm and ui.prompt('perform evolve? [Ny]', 'n') != 'y':
+ if confirm and ui.prompt(_('perform evolve? [Ny]'), 'n') != 'y':
raise util.Abort(_('evolve aborted by user'))
if dryrun:
ui.write('hg update -c %s &&\n' % divergent)
@@ -1984,13 +2002,15 @@
@command('^previous',
[('B', 'move-bookmark', False,
- _('Move active bookmark after update')),
- ('', 'merge', False, _('bring uncommited change along'))],
- '[-B]')
+ _('move active bookmark after update')),
+ ('', 'merge', False, _('bring uncommitted change along')),
+ ('n', 'dry-run', False, _('do not perform actions, just print what would be done'))],
+ '[OPTION]...')
def cmdprevious(ui, repo, **opts):
"""update to parent and display summary lines"""
wkctx = repo[None]
wparents = wkctx.parents()
+ dryrunopt = opts['dry_run']
if len(wparents) != 1:
raise util.Abort('merge in progress')
if not opts['merge']:
@@ -2006,17 +2026,22 @@
p = parents[0]
bm = bmactive(repo)
shouldmove = opts.get('move_bookmark') and bm is not None
- ret = hg.update(repo, p.rev())
- if not ret:
- wlock = repo.wlock()
- try:
- if shouldmove:
- repo._bookmarks[bm] = p.node()
- repo._bookmarks.write()
- else:
- bmdeactivate(repo)
- finally:
- wlock.release()
+ if dryrunopt:
+ ui.write('hg update %s;\n' % p.rev())
+ if shouldmove:
+ ui.write('hg bookmark %s -r %s;\n' % (bm, p.rev()))
+ else:
+ ret = hg.update(repo, p.rev())
+ if not ret:
+ wlock = repo.wlock()
+ try:
+ if shouldmove:
+ repo._bookmarks[bm] = p.node()
+ repo._bookmarks.write()
+ else:
+ bmdeactivate(repo)
+ finally:
+ wlock.release()
displayer.show(p)
return 0
else:
@@ -2027,10 +2052,11 @@
@command('^next',
[('B', 'move-bookmark', False,
- _('Move active bookmark after update')),
- ('', 'merge', False, _('bring uncommited change along')),
- ('', 'evolve', False, _('evolve the next changeset if necessary'))],
- '[-B]')
+ _('move active bookmark after update')),
+ ('', 'merge', False, _('bring uncommitted change along')),
+ ('', 'evolve', False, _('evolve the next changeset if necessary')),
+ ('n', 'dry-run', False, _('do not perform actions, just print what would be done'))],
+ '[OPTION]...')
def cmdnext(ui, repo, **opts):
"""update to next child
@@ -2039,6 +2065,7 @@
The summary line of the destination is displayed for clarity"""
wkctx = repo[None]
wparents = wkctx.parents()
+ dryrunopt = opts['dry_run']
if len(wparents) != 1:
raise util.Abort('merge in progress')
if not opts['merge']:
@@ -2054,17 +2081,22 @@
c = children[0]
bm = bmactive(repo)
shouldmove = opts.get('move_bookmark') and bm is not None
- ret = hg.update(repo, c.rev())
- if not ret:
- wlock = repo.wlock()
- try:
- if shouldmove:
- repo._bookmarks[bm] = c.node()
- repo._bookmarks.write()
- else:
- bmdeactivate(repo)
- finally:
- wlock.release()
+ if dryrunopt:
+ ui.write('hg update %s;\n' % c.rev())
+ if shouldmove:
+ ui.write('hg bookmark %s -r %s;\n' % (bm, c.rev()))
+ else:
+ ret = hg.update(repo, c.rev())
+ if not ret:
+ wlock = repo.wlock()
+ try:
+ if shouldmove:
+ repo._bookmarks[bm] = c.node()
+ repo._bookmarks.write()
+ else:
+ bmdeactivate(repo)
+ finally:
+ wlock.release()
displayer.show(c)
result = 0
elif children:
@@ -2083,14 +2115,14 @@
ui.warn(msg % len(aspchildren))
result = 1
elif 1 < len(aspchildren):
- ui.warn("ambigious next (unstable) changeset:\n")
+ ui.warn(_("ambigious next (unstable) changeset:\n"))
for c in aspchildren:
displayer.show(repo[c])
ui.warn(_('(run "hg evolve --rev REV" on one of them)\n'))
return 1
else:
cmdutil.bailifchanged(repo)
- result = _solveone(ui, repo, repo[aspchildren[0]], False,
+ result = _solveone(ui, repo, repo[aspchildren[0]], dryrunopt,
False, lambda:None, category='unstable')
if not result:
ui.status(_('working directory now at %s\n') % repo['.'])
@@ -2157,6 +2189,8 @@
('r', 'rev', [], _("revisions to prune")),
('k', 'keep', None, _("does not modify working copy during prune")),
('', 'biject', False, _("do a 1-1 map between rev and successor ranges")),
+ ('', 'fold', False, _("record a fold (multiple precursors, one successors)")),
+ ('', 'split', False, _("record a split (on precursor, multiple successors)")),
('B', 'bookmark', '', _("remove revs only reachable from given"
" bookmark"))] + metadataopts,
_('[OPTION] [-r] REV...'))
@@ -2179,12 +2213,22 @@
revisions to prune and successor changesets. This option may be removed in
a future release (with the functionality absorbed automatically).
+ If you specify multiple revisions in --succ, you are recording a "split"
+ and have to acknowledge it by usng --split. The same logic apply when you
+ prune multiple changesets with a single successors, this will record a
+ "fold" requires a --fold flag.
"""
revs = scmutil.revrange(repo, list(revs) + opts.get('rev'))
succs = opts['new'] + opts['succ']
bookmark = opts.get('bookmark')
metadata = _getmetadata(**opts)
biject = opts.get('biject')
+ fold = opts.get('fold')
+ split = opts.get('split')
+
+ options = [o for o in ('biject', 'fold', 'split') if opts.get(o)]
+ if 1 < len(options):
+ raise util.Abort(_("can only specify one of %s") % ', '.join(options))
if bookmark:
marks,revs = _reachablefrombookmark(repo, revs, bookmark)
@@ -2224,15 +2268,20 @@
if not biject and len(sucs) > 1 and len(precs) > 1:
msg = "Can't use multiple successors for multiple precursors"
raise util.Abort(msg)
-
- if biject and len(sucs) != len(precs):
+ elif biject and len(sucs) != len(precs):
msg = "Can't use %d successors for %d precursors" \
% (len(sucs), len(precs))
raise util.Abort(msg)
-
- relations = [(p, sucs) for p in precs]
- if biject:
+ elif (len(precs) == 1 and len(sucs) > 1) and not split:
+ msg = "please add --split if you want to do a split"
+ raise util.Abort(msg)
+ elif len(sucs) == 1 and len(precs) > 1 and not fold:
+ msg = "please add --fold if you want to do a fold"
+ raise util.Abort(msg)
+ elif biject:
relations = [(p, (s,)) for p, s in zip(precs, sucs)]
+ else:
+ relations = [(p, sucs) for p in precs]
wdp = repo['.']
@@ -2303,7 +2352,7 @@
# slower. The new forms makes as much sense and a much faster.
for dest in ctx.ancestors():
if not dest.obsolete():
- updatebookmarks = _bookmarksupdater(repo, ctx.node())
+ updatebookmarks = _bookmarksupdater(repo, ctx.node(), tr)
updatebookmarks(dest.node())
break
@@ -2488,7 +2537,6 @@
if len(old.parents()) > 1:
raise util.Abort(_("cannot uncommit merge changeset"))
oldphase = old.phase()
- updatebookmarks = _bookmarksupdater(repo, old.node())
rev = None
@@ -2505,6 +2553,7 @@
# Recommit the filtered changeset
tr = repo.transaction('uncommit')
+ updatebookmarks = _bookmarksupdater(repo, old.node(), tr)
newid = None
includeorexclude = opts.get('include') or opts.get('exclude')
if (pats or includeorexclude or opts.get('all')):
@@ -2557,6 +2606,84 @@
finally:
lockmod.release(lock, wlock)
+@command('^split',
+ [('r', 'rev', [], _("revision to fold")),
+ ] + commitopts + commitopts2,
+ _('hg split [OPTION]... [-r] REV'))
+def cmdsplit(ui, repo, *revs, **opts):
+ """Split the current commit using interactive selection
+
+ By default, split the current revision by prompting for all its hunk to be
+ redistributed into new changesets.
+
+ Use --rev for splitting a given changeset instead.
+ """
+ tr = wlock = lock = None
+ newcommits = []
+
+ revopt = opts.get('rev')
+ if revopt:
+ revs = scmutil.revrange(repo, revopt)
+ if len(revs) != 1:
+ raise util.Abort(_("you can only specify one revision to split"))
+ else:
+ rev = list(revs)[0]
+ else:
+ rev = '.'
+
+ try:
+ wlock = repo.wlock()
+ lock = repo.lock()
+ cmdutil.bailifchanged(repo)
+ tr = repo.transaction('split')
+ ctx = repo[rev]
+ r = ctx.rev()
+ disallowunstable = not obsolete.isenabled(repo,
+ obsolete.allowunstableopt)
+ if disallowunstable:
+ # XXX We should check head revs
+ if repo.revs("(%d::) - %d", rev, rev):
+ raise util.Abort(_("cannot split commit: %s not a head") % ctx)
+
+ if len(ctx.parents()) > 1:
+ raise util.Abort(_("cannot split merge commits"))
+ prev = ctx.p1()
+ bmupdate = _bookmarksupdater(repo, ctx.node(), tr)
+ bookactive = bmactive(repo)
+ if bookactive is not None:
+ repo.ui.status(_("(leaving bookmark %s)\n") % bmactive(repo))
+ bmdeactivate(repo)
+ hg.update(repo, prev)
+
+ commands.revert(ui, repo, rev=r, all=True)
+ def haschanges():
+ modified, added, removed, deleted = repo.status()[:4]
+ return modified or added or removed or deleted
+ while haschanges():
+ pats = ()
+ cmdutil.dorecord(ui, repo, commands.commit, 'commit', False,
+ cmdutil.recordfilter, *pats, **opts)
+ # TODO: Does no seem like the best way to do this
+ # We should make dorecord return the newly created commit
+ newcommits.append(repo['.'])
+ if haschanges():
+ if ui.prompt('Done splitting? [yN]', default='n') == 'y':
+ commands.commit(ui, repo, **opts)
+ newcommits.append(repo['.'])
+ break
+ else:
+ ui.status("no more change to split\n")
+
+ tip = repo[newcommits[-1]]
+ bmupdate(tip.node())
+ if bookactive is not None:
+ bmactivate(repo, bookactive)
+ obsolete.createmarkers(repo, [(repo[r], newcommits)])
+ tr.close()
+ finally:
+ lockmod.release(tr, lock, wlock)
+
+
@eh.wrapcommand('strip', extension='strip', opts=[
('', 'bundle', None, _("delete the commit entirely and move it to a "
"backup bundle")),
@@ -2940,6 +3067,8 @@
missing = set()
common = set()
undecided = set(probeset)
+ totalnb = len(undecided)
+ ui.progress("comparing with other", 0, total=totalnb)
_takefullsample = setdiscovery._takefullsample
if remote.capable('_evoext_obshash_1'):
getremotehash = remote.evoext_obshash1
@@ -2957,6 +3086,8 @@
sample = _takefullsample(dag, undecided, size=fullsamplesize)
roundtrips += 1
+ ui.progress("comparing with other", totalnb - len(undecided),
+ total=totalnb)
ui.debug("query %i; still undecided: %i, sample size is: %i\n"
% (roundtrips, len(undecided), len(sample)))
# indices between sample and externalized version must match
@@ -2976,6 +3107,7 @@
undecided.difference_update(common)
+ ui.progress("comparing with other", None, total=totalnb)
result = dag.headsetofconnecteds(common)
ui.debug("%d total queries\n" % roundtrips)
@@ -3294,6 +3426,7 @@
cache = []
unfi = repo.unfiltered()
markercache = {}
+ repo.ui.progress("preparing locally", 0, total=len(unfi))
for i in unfi:
ctx = unfi[i]
entry = 0
@@ -3323,6 +3456,8 @@
cache.append((ctx.node(), sha.digest()))
else:
cache.append((ctx.node(), nullid))
+ repo.ui.progress("preparing locally", i, total=len(unfi))
+ repo.ui.progress("preparing locally", None)
return cache
@command('debugobsrelsethashtree',
@@ -3368,11 +3503,11 @@
[('', 'new-format', _bestformat, _('Destination format for markers.'))],
'')
def debugobsconvert(ui, repo, new_format):
+ origmarkers = repo.obsstore._all # settle version
if new_format == repo.obsstore._version:
msg = _('New format is the same as the old format, not upgrading!')
raise util.Abort(msg)
f = repo.svfs('obsstore', 'wb', atomictemp=True)
- origmarkers = repo.obsstore._all
known = set()
markers = []
for m in origmarkers:
@@ -3418,7 +3553,8 @@
return capabilities(oldcap, repo, proto)
wireproto.commands['capabilities'] = (newcap, args)
-def _helploader():
+# Mercurial >= 3.6 passes ui
+def _helploader(ui=None):
return help.gettext(evolutionhelptext)
@eh.uisetup
--- a/hgext/inhibit.py Mon Oct 12 01:22:41 2015 -0700
+++ b/hgext/inhibit.py Mon Oct 12 01:23:59 2015 -0700
@@ -208,8 +208,11 @@
try:
extensions.find('directaccess')
except KeyError:
- errormsg = _('Cannot use inhibit without the direct access extension')
- raise error.Abort(errormsg)
+ errormsg = _('cannot use inhibit without the direct access extension\n')
+ hint = _("(please enable it or inhibit won\'t work)\n")
+ ui.warn(errormsg)
+ ui.warn(hint)
+ return
# Wrapping this to inhibit obsolete revs resulting from a transaction
extensions.wrapfunction(localrepo.localrepository,
--- a/tests/test-amend.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-amend.t Mon Oct 12 01:23:59 2015 -0700
@@ -115,6 +115,7 @@
branch: foo
commit: 1 unknown (clean)
update: (current)
+ phases: 3 draft
Check the help
$ hg amend -h
--- a/tests/test-corrupt.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-corrupt.t Mon Oct 12 01:23:59 2015 -0700
@@ -101,7 +101,7 @@
summary: add A
- $ hg kill -n -1 -- -2 -3
+ $ hg kill --fold -n -1 -- -2 -3
2 changesets pruned
$ hg push ../other
pushing to ../other
@@ -110,8 +110,7 @@
adding manifests
adding file changes
added 1 changesets with 2 changes to 2 files
- pushing 2 obsolescence markers (*) (glob)
- 2 obsolescence markers added
+ 2 new obsolescence markers
$ hg -R ../other verify
checking changesets
checking manifests
--- a/tests/test-evolve-bumped.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-evolve-bumped.t Mon Oct 12 01:23:59 2015 -0700
@@ -49,7 +49,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
(run 'hg update' to get a working copy)
$ hg log -r 'draft()'
1:4d1169d82e47@default(draft) modify a
@@ -68,7 +67,6 @@
pulling from ../public
searching for changes
no changes found
- pull obsolescence markers
1 new bumped changesets
$ hg evolve -a -A --bumped
--- a/tests/test-evolve-order.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-evolve-order.t Mon Oct 12 01:23:59 2015 -0700
@@ -110,13 +110,13 @@
atop:[13] bprime
move:[8] add _d
atop:[14] add _c
- working directory is now at 225d2cc5d3fc
+ working directory is now at 739f18ac1d03
$ hg log -G
- @ 15:225d2cc5d3fc@default(draft) add _d
+ @ 15:739f18ac1d03@default(draft) add _d
|
- o 14:0fc229278e4d@default(draft) add _c
+ o 14:e5960578d158@default(draft) add _c
|
- o 13:c3741b9eafae@default(draft) bprime
+ o 13:4ad33fa88946@default(draft) bprime
|
o 12:9a584314f3f3@default(draft) asecond
|
@@ -139,21 +139,21 @@
1 changesets pruned
1 new unstable changesets
$ hg log -G -r "desc(_d)::"
- @ 22:a329855d0bc1@default(draft) add c1second
+ @ 22:dcf786e878fd@default(draft) add c1second
|
- | o 21:072276ece1bf@default(draft) add c2prime
+ | o 21:507d52d715f6@default(draft) add c2prime
| |
- | x 20:f137acd06692@default(draft) add c1prime
+ | x 20:c995cb124ddc@default(draft) add c1prime
|/
- | o 19:0a1d9b2ce733@default(draft) add c4_
+ | o 19:d096a2437fd0@default(draft) add c4_
| |
- | o 18:e2874f41c56c@default(draft) add c3_
+ | o 18:cde95c6cba7a@default(draft) add c3_
| |
- | x 17:3247c33339fa@default(draft) add c2_
+ | x 17:e0d9f7a099fe@default(draft) add c2_
| |
- | x 16:df322257c182@default(draft) add c1_
+ | x 16:43b7c338b1f8@default(draft) add c1_
|/
- o 15:225d2cc5d3fc@default(draft) add _d
+ o 15:739f18ac1d03@default(draft) add _d
|
Second set of stack with no successor for b2_:
@@ -168,45 +168,45 @@
1 changesets pruned
$ hg log -G -r "desc(_d)::"
- @ 28:ba4c348b6d5e@default(draft) add b3prime
+ @ 28:b253ff5b65d1@default(draft) add b3prime
|
- o 27:8fe985f5d0aa@default(draft) add b1prime
+ o 27:4acf61f11dfb@default(draft) add b1prime
|
- | o 26:1d9ba2e75c93@default(draft) add b4_
+ | o 26:594e1fbbd61f@default(draft) add b4_
| |
- | x 25:aec6a9657b6c@default(draft) add b3_
+ | x 25:be27500cfc76@default(draft) add b3_
| |
- | x 24:a69b58575918@default(draft) add b2_
+ | x 24:b54f77dc5831@default(draft) add b2_
| |
- | x 23:3564eb18e448@default(draft) add b1_
+ | x 23:0e1eba27e9aa@default(draft) add b1_
|/
- | o 22:a329855d0bc1@default(draft) add c1second
+ | o 22:dcf786e878fd@default(draft) add c1second
|/
- | o 21:072276ece1bf@default(draft) add c2prime
+ | o 21:507d52d715f6@default(draft) add c2prime
| |
- | x 20:f137acd06692@default(draft) add c1prime
+ | x 20:c995cb124ddc@default(draft) add c1prime
|/
- | o 19:0a1d9b2ce733@default(draft) add c4_
+ | o 19:d096a2437fd0@default(draft) add c4_
| |
- | o 18:e2874f41c56c@default(draft) add c3_
+ | o 18:cde95c6cba7a@default(draft) add c3_
| |
- | x 17:3247c33339fa@default(draft) add c2_
+ | x 17:e0d9f7a099fe@default(draft) add c2_
| |
- | x 16:df322257c182@default(draft) add c1_
+ | x 16:43b7c338b1f8@default(draft) add c1_
|/
- o 15:225d2cc5d3fc@default(draft) add _d
+ o 15:739f18ac1d03@default(draft) add _d
|
Solve the full second stack and only part of the first one
$ echo "(desc(_d)::) - desc(c3_)"
(desc(_d)::) - desc(c3_)
$ hg evolve --rev "(desc(_d)::) - desc(c3_)"
- cannot solve instability of 0a1d9b2ce733, skipping
+ cannot solve instability of d096a2437fd0, skipping
move:[21] add c2prime
atop:[22] add c1second
move:[26] add b4_
atop:[28] add b3prime
- working directory is now at 4897c8ed7645
+ working directory is now at ea93190a9cd1
Cleanup
$ hg evolve --rev "(desc(_d)::)"
@@ -214,23 +214,23 @@
atop:[29] add c2prime
move:[19] add c4_
atop:[31] add c3_
- working directory is now at 4ee8feb52325
+ working directory is now at 35e7b797ace5
$ hg log -G -r "desc(_d)::"
- @ 32:4ee8feb52325@default(draft) add c4_
+ @ 32:35e7b797ace5@default(draft) add c4_
|
- o 31:08a530ce67e1@default(draft) add c3_
+ o 31:0b9488394e89@default(draft) add c3_
|
- | o 30:4897c8ed7645@default(draft) add b4_
+ | o 30:ea93190a9cd1@default(draft) add b4_
| |
- o | 29:3abc7618dd5f@default(draft) add c2prime
+ o | 29:881b9c092e53@default(draft) add c2prime
| |
- | o 28:ba4c348b6d5e@default(draft) add b3prime
+ | o 28:b253ff5b65d1@default(draft) add b3prime
| |
- | o 27:8fe985f5d0aa@default(draft) add b1prime
+ | o 27:4acf61f11dfb@default(draft) add b1prime
| |
- o | 22:a329855d0bc1@default(draft) add c1second
+ o | 22:dcf786e878fd@default(draft) add c1second
|/
- o 15:225d2cc5d3fc@default(draft) add _d
+ o 15:739f18ac1d03@default(draft) add _d
|
Test multiple revision with some un-evolvable because parent is splitted
@@ -258,6 +258,6 @@
$ hg evolve --rev 'unstable()'
move:[30] add b4_
atop:[35] b3second
- skipping 08a530ce67e1: divergent rewriting. can't choose destination
- working directory is now at a51a8a82fdba
+ skipping 0b9488394e89: divergent rewriting. can't choose destination
+ working directory is now at 31809a198477
--- a/tests/test-evolve-split.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-evolve-split.t Mon Oct 12 01:23:59 2015 -0700
@@ -43,7 +43,7 @@
$ printf "pp" > pp;
$ hg add pp
$ hg commit -m "_pp"
- $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')"
+ $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split
1 changesets pruned
1 new unstable changesets
$ hg log -G
@@ -58,4 +58,6 @@
o 0:58663bb03074@default(draft) add aa
$ hg evolve --rev "0::"
- does not handle split parents yet
+ move:[2] add uu
+ atop:[4] _pp
+ working directory is now at 6f5bbe2e3df3
--- a/tests/test-evolve.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-evolve.t Mon Oct 12 01:23:59 2015 -0700
@@ -335,7 +335,7 @@
move:[4] another feature (child of 568a468b60fc)
atop:[6] a nifty feature
merging main-file-1
- working directory is now at 5c9c8d9c2e4e
+ working directory is now at 99833d22b0c6
$ hg log
7 feature-B: another feature (child of ba0ec09b1bab) - test
6 feature-A: a nifty feature - test
@@ -376,10 +376,10 @@
recreate:[8] another feature that rox
atop:[7] another feature (child of ba0ec09b1bab)
computing new diff
- committed as 476d0454d60e
- working directory is now at 476d0454d60e
+ committed as 2d8c5414e9f0
+ working directory is now at 2d8c5414e9f0
$ hg glog
- @ 9 feature-B: bumped update to 5c9c8d9c2e4e: - test
+ @ 9 feature-B: bumped update to 99833d22b0c6: - test
|
o 7 : another feature (child of ba0ec09b1bab) - test
|
@@ -436,7 +436,7 @@
move:[11] dansk 3!
atop:[14] dansk 2!
merging main-file-1
- working directory is now at cfb5ebed336d
+ working directory is now at 536984593824
$ hg glog
@ 15 : dansk 3! - test
|
@@ -474,7 +474,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
$ cd alpha
$ cat << EOF > A
@@ -531,8 +530,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
- 2 obsolescence markers added
+ 2 new obsolescence markers
(run 'hg update' to get a working copy)
$ hg up
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -811,11 +809,11 @@
2 changesets folded
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ glog
- @ 16:d6239ff09c9f@default(draft) Folding with custom commit message
+ @ 16:d1297ecc971f@default(draft) Folding with custom commit message
|
- o 13:56ade053f46d@default(draft) dansk!
+ o 13:27b934eaf1f9@default(draft) dansk!
|
- o 7:5c9c8d9c2e4e@default(public) another feature (child of ba0ec09b1bab)
+ o 7:99833d22b0c6@default(public) another feature (child of ba0ec09b1bab)
|
o 6:ba0ec09b1bab@default(public) a nifty feature
|
@@ -830,9 +828,9 @@
2 changesets folded
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg qlog
- 17 - dba606655966 A longer
+ 17 - 0b1eca0e871b A longer
commit message (draft)
- 7 - 5c9c8d9c2e4e another feature (child of ba0ec09b1bab) (public)
+ 7 - 99833d22b0c6 another feature (child of ba0ec09b1bab) (public)
6 - ba0ec09b1bab a nifty feature (public)
0 - e55e0562ee93 base (public)
@@ -897,11 +895,11 @@
$ hg evolve
move:[5] a2
atop:[7] a1_
- working directory is now at 5406c5cfee42
+ working directory is now at eb07e22a0e63
$ hg evolve
move:[6] a3
atop:[8] a2
- working directory is now at c7661e655801
+ working directory is now at 777c26ca5e78
$ hg log -G --template '{rev} [{branch}] {desc|firstline}\n'
@ 9 [mybranch] a3
|
@@ -950,7 +948,7 @@
move:[8] a2
atop:[10] a1__
(leaving bookmark testbookmark)
- working directory is now at f37ed7a60f43
+ working directory is now at d952e93add6f
$ ls .hg/bookmarks*
.hg/bookmarks
@@ -1016,12 +1014,12 @@
recreate:[12] add new file bumped
atop:[11] a2
computing new diff
- committed as d66b1e328488
- working directory is now at d66b1e328488
+ committed as f15d32934071
+ working directory is now at f15d32934071
$ hg evolve --any
move:[9] a3
- atop:[13] bumped update to f37ed7a60f43:
- working directory is now at 7d2ce5f38f9b
+ atop:[13] bumped update to d952e93add6f:
+ working directory is now at cce26b684bfe
Check that we can resolve troubles in a revset with more than one commit
$ hg up 14 -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -1040,7 +1038,7 @@
|/
@ 14 : a3 - test
|
- o 13 : bumped update to f37ed7a60f43: - test
+ o 13 : bumped update to d952e93add6f: - test
|
o 11 : a2 - test
|
@@ -1059,7 +1057,7 @@
| |/
| x 14 : a3 - test
|/
- o 13 : bumped update to f37ed7a60f43: - test
+ o 13 : bumped update to d952e93add6f: - test
|
o 11 : a2 - test
|
@@ -1082,7 +1080,7 @@
atop:[18] a3
move:[16] add gh
atop:[18] a3
- working directory is now at db3d894869b0
+ working directory is now at e02107f98737
$ hg glog
@ 20 : add gh - test
|
@@ -1090,7 +1088,7 @@
|/
o 18 : a3 - test
|
- o 13 : bumped update to f37ed7a60f43: - test
+ o 13 : bumped update to d952e93add6f: - test
|
o 11 : a2 - test
|
@@ -1212,26 +1210,26 @@
$ hg amend
2 new unstable changesets
$ glog -r "18::"
- @ 25:4c0bc042ef3b@default(draft) add j1
+ @ 25:8dc373be86d9@default(draft) add j1
|
- | o 23:c70048fd3350@default(draft) add j3
+ | o 23:d7eadcf6eccd@default(draft) add j3
| |
- | o 22:714e60ca57b7@default(draft) add j2
+ | o 22:2223ea564144@default(draft) add j2
| |
- | x 21:b430835af718@default(draft) add j1
+ | x 21:48490698b269@default(draft) add j1
|/
- | o 20:db3d894869b0@default(draft) add gh
+ | o 20:e02107f98737@default(draft) add gh
| |
- o | 19:10ffdd7e3cc9@default(draft) add gg
+ o | 19:24e63b319adf@default(draft) add gg
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
$ hg evolve --rev 23 --any
abort: cannot specify both "--rev" and "--any"
[255]
$ hg evolve --rev 23
- cannot solve instability of c70048fd3350, skipping
+ cannot solve instability of d7eadcf6eccd, skipping
Check that uncommit respects the allowunstable option
With only createmarkers we can only uncommit on a head
@@ -1239,30 +1237,30 @@
> [experimental]
> evolution=createmarkers, allnewcommands
> EOF
- $ hg up 4c0bc042ef3b^
+ $ hg up 8dc373be86d9^
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg uncommit --all
abort: cannot uncommit in the middle of a stack
[255]
- $ hg up 4c0bc042ef3b
+ $ hg up 8dc373be86d9
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg uncommit --all
new changeset is empty
(use "hg prune ." to remove it)
$ glog -r "18::"
- @ 26:04b32348803e@default(draft) add j1
+ @ 26:044804d0c10d@default(draft) add j1
|
- | o 23:c70048fd3350@default(draft) add j3
+ | o 23:d7eadcf6eccd@default(draft) add j3
| |
- | o 22:714e60ca57b7@default(draft) add j2
+ | o 22:2223ea564144@default(draft) add j2
| |
- | x 21:b430835af718@default(draft) add j1
+ | x 21:48490698b269@default(draft) add j1
|/
- | o 20:db3d894869b0@default(draft) add gh
+ | o 20:e02107f98737@default(draft) add gh
| |
- o | 19:10ffdd7e3cc9@default(draft) add gg
+ o | 19:24e63b319adf@default(draft) add gg
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
Check that prune respects the allowunstable option
@@ -1279,19 +1277,19 @@
atop:[26] add j1
move:[23] add j3
atop:[27] add j2
- working directory is now at 920a35e8dbd0
+ working directory is now at c9a20e2d74aa
$ glog -r "18::"
- @ 28:920a35e8dbd0@default(draft) add j3
+ @ 28:c9a20e2d74aa@default(draft) add j3
|
- o 27:31e050d895dd@default(draft) add j2
+ o 27:b0e3066231e2@default(draft) add j2
|
- o 26:04b32348803e@default(draft) add j1
+ o 26:044804d0c10d@default(draft) add j1
|
- | o 20:db3d894869b0@default(draft) add gh
+ | o 20:e02107f98737@default(draft) add gh
| |
- o | 19:10ffdd7e3cc9@default(draft) add gg
+ o | 19:24e63b319adf@default(draft) add gg
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
$ hg up 19
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
@@ -1306,30 +1304,30 @@
$ hg prune '26::'
3 changesets pruned
$ glog -r "18::"
- @ 29:5a6c53544778@default(draft) add c5_
+ @ 29:2251801b6c91@default(draft) add c5_
|
- | o 20:db3d894869b0@default(draft) add gh
+ | o 20:e02107f98737@default(draft) add gh
| |
- o | 19:10ffdd7e3cc9@default(draft) add gg
+ o | 19:24e63b319adf@default(draft) add gg
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
Check that fold respects the allowunstable option
- $ hg up 0bb66d4c1968
+ $ hg up edc3c9de504e
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ mkcommit unstableifparentisfolded
created new head
$ glog -r "18::"
- @ 30:30ecefd67c0a@default(draft) add unstableifparentisfolded
+ @ 30:68330ac625b8@default(draft) add unstableifparentisfolded
|
- | o 29:5a6c53544778@default(draft) add c5_
+ | o 29:2251801b6c91@default(draft) add c5_
| |
- +---o 20:db3d894869b0@default(draft) add gh
+ +---o 20:e02107f98737@default(draft) add gh
| |
- | o 19:10ffdd7e3cc9@default(draft) add gg
+ | o 19:24e63b319adf@default(draft) add gg
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
$ hg fold --exact "19 + 18"
@@ -1350,13 +1348,13 @@
> EOF
$ glog -r "18::"
- o 31:5cc6eda0f00d@default(draft) add gg
+ o 31:580886d07058@default(draft) add gg
|
- | @ 30:30ecefd67c0a@default(draft) add unstableifparentisfolded
+ | @ 30:68330ac625b8@default(draft) add unstableifparentisfolded
|/
- | o 20:db3d894869b0@default(draft) add gh
+ | o 20:e02107f98737@default(draft) add gh
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
Create a split commit
@@ -1374,27 +1372,29 @@
$ printf "pp" > pp;
$ hg add pp
$ hg commit -m "_pp"
- $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')"
+ $ hg prune --succ "desc(_oo) + desc(_pp)" -r "desc('oo+pp')" --split
1 changesets pruned
1 new unstable changesets
$ glog -r "18::"
- @ 35:072908d77206@default(draft) _pp
+ @ 35:7a555adf2b4a@default(draft) _pp
|
- o 34:68e429987343@default(draft) _oo
+ o 34:2be4d2d5bf34@default(draft) _oo
|
- | o 33:030868870864@default(draft) add uu
+ | o 33:53f0c003e03e@default(draft) add uu
| |
- | x 32:7e9688cf0a1b@default(draft) oo+pp
+ | x 32:1bf2152f4f82@default(draft) oo+pp
|/
- | o 31:5cc6eda0f00d@default(draft) add gg
+ | o 31:580886d07058@default(draft) add gg
| |
- o | 30:30ecefd67c0a@default(draft) add unstableifparentisfolded
+ o | 30:68330ac625b8@default(draft) add unstableifparentisfolded
|/
- | o 20:db3d894869b0@default(draft) add gh
+ | o 20:e02107f98737@default(draft) add gh
|/
- o 18:0bb66d4c1968@default(draft) a3
+ o 18:edc3c9de504e@default(draft) a3
|
$ hg evolve --rev "18::"
- does not handle split parents yet
+ move:[33] add uu
+ atop:[35] _pp
+ working directory is now at 43c3f5ef149f
--- a/tests/test-inhibit.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-inhibit.t Mon Oct 12 01:23:59 2015 -0700
@@ -133,6 +133,7 @@
branch: default
commit: (clean)
update: 1 new changesets, 2 branch heads (merge)
+ phases: 6 draft
check public revision got cleared
(when adding the second inhibitor, the first one is removed because it is public)
@@ -352,10 +353,18 @@
+cD
$ hg export 1 3
- abort: filtered revision '1' (not in 'visible-directaccess-nowarn' subset)!
+ abort: hidden revision '1'!
+ (use --hidden to access hidden revisions)
[255]
+Test directaccess in a larger revset
+
+ $ hg log -r '. + .^ + 2db36d8066ff' -T '{node|short}\n'
+ 55c73a90e4b4
+ cf5c4f4554ce
+ 2db36d8066ff
+
With severals hidden sha, rebase of one hidden stack onto another one:
$ hg update -C 0
0 files updated, 0 files merged, 4 files removed, 0 files unresolved
@@ -397,12 +406,12 @@
o 0:54ccbc537fc2 add cA
$ hg rebase -s 10 -d 3
- abort: filtered revision '3' (not in 'visible-directaccess-warn' subset)!
+ abort: hidden revision '3'!
+ (use --hidden to access hidden revisions)
[255]
$ hg rebase -r ad78ff7d621f -r 53a94305e133 -d 2db36d8066ff
Warning: accessing hidden changesets 2db36d8066ff for write operation
- Warning: accessing hidden changesets ad78ff7d621f for write operation
- Warning: accessing hidden changesets 53a94305e133 for write operation
+ Warning: accessing hidden changesets ad78ff7d621f,53a94305e133 for write operation
rebasing 10:ad78ff7d621f "add cK"
rebasing 11:53a94305e133 "add cL"
$ hg log -G
@@ -722,9 +731,10 @@
> directaccess=!
> testextension=!
> EOF
- $ hg up 15
- abort: Cannot use inhibit without the direct access extension
- [255]
+ $ hg up .
+ cannot use inhibit without the direct access extension
+ (please enable it or inhibit won't work)
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo "directaccess=$(echo $(dirname $TESTDIR))/hgext/directaccess.py" >> $HGRCPATH
$ cd ..
@@ -758,8 +768,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pushing 33 obsolescence markers (*) (glob)
- 2 obsolescence markers added
+ 2 new obsolescence markers
Pulling from a inhibit repo to a non-inhibit repo should work
--- a/tests/test-obsolete.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-obsolete.t Mon Oct 12 01:23:59 2015 -0700
@@ -184,8 +184,7 @@
adding manifests
adding file changes
added 5 changesets with 5 changes to 5 files (+1 heads)
- pushing 2 obsolescence markers (*) (glob)
- 2 obsolescence markers added
+ 2 new obsolescence markers
$ hg -R ../other-new verify
checking changesets
checking manifests
@@ -239,8 +238,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 3 obsolescence markers (*) (glob)
- 1 obsolescence markers added
+ 1 new obsolescence markers
$ qlog -R ../other-new
5
- 95de7fc6918d
@@ -262,8 +260,6 @@
pushing to ../other-new
searching for changes
no changes found
- pushing 3 obsolescence markers (*) (glob)
- 0 obsolescence markers added
[1]
$ hg up --hidden -q .^ # 3
@@ -279,9 +275,8 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re)
- pull obsolescence markers
- 1 obsolescence markers added
- (run 'hg heads' to see heads, 'hg merge' to merge)
+ 1 new obsolescence markers
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
$ qlog -R ../other-new
6
- 909a0fb57e5d
@@ -370,9 +365,8 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re)
- pull obsolescence markers
- 1 obsolescence markers added
- (run 'hg heads' to see heads, 'hg merge' to merge)
+ 1 new obsolescence markers
+ (run 'hg heads .' to see heads, 'hg merge' to merge)
$ hg up -q 7 # to check rollback update behavior
$ qlog
@@ -395,6 +389,7 @@
branch: default
commit: 1 deleted, 2 unknown (clean)
update: 2 new changesets, 2 branch heads (merge)
+ phases: 4 draft
unstable: 1 changesets
$ qlog
6
@@ -544,8 +539,7 @@
adding manifests
adding file changes
added 2 changesets with 1 changes to [12] files (re)
- pushing 7 obsolescence markers (*) (glob)
- 3 obsolescence markers added
+ 3 new obsolescence markers
$ hg up -q 10
$ mkcommit "obsol_d'''"
created new head
@@ -557,8 +551,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 8 obsolescence markers (*) (glob)
- 1 obsolescence markers added
+ 1 new obsolescence markers
$ cd ..
check bumped detection
@@ -659,7 +652,7 @@
#no produced by 2.3
33d458d86621f3186c40bfccd77652f4a122743e 3734a65252e69ddcced85901647a4f335d40de1e 0 {'date': '* *', 'user': 'test'} (glob)
-Check divergence detection
+Check divergence detection (note: multiple successors is sorted by changeset hash)
$ hg up 9468a5f5d8b2 # add obsol_d''
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
@@ -670,6 +663,7 @@
branch: default
commit: (clean)
update: (2|9|11) new changesets, (3|9|10) branch heads \(merge\) (re)
+ phases: 3 draft
bumped: 1 changesets
$ hg debugobsolete `getid a7a6f2b5d8a5` `getid 50f11e5e3a63`
$ hg log -r 'divergent()'
--- a/tests/test-prev-next.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-prev-next.t Mon Oct 12 01:23:59 2015 -0700
@@ -22,6 +22,10 @@
* mark 0:a154386e50d1
hg next -B should move active bookmark
+ $ hg next -B --dry-run
+ hg update 1;
+ hg bookmark mark -r 1;
+ [1] added b
$ hg next -B
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
[1] added b
@@ -29,6 +33,9 @@
* mark 1:6e742c9127b3
hg prev should unset active bookmark
+ $ hg prev --dry-run
+ hg update 0;
+ [0] added a
$ hg prev
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
[0] added a
@@ -152,6 +159,11 @@
no children
(1 unstable changesets to be evolved here, do you want --evolve?)
[1]
+ $ hg next --evolve --dry-run
+ move:[2] added c
+ atop:[3] added b (2)
+ hg rebase -r 4e26ef31f919 -d 9ad178109a19
+ working directory now at 9ad178109a19
$ hg next --evolve
move:[2] added c
atop:[3] added b (2)
--- a/tests/test-prune.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-prune.t Mon Oct 12 01:23:59 2015 -0700
@@ -32,6 +32,19 @@
o 0:1f0dee641bb7[] (stable/public) add a
+Check arguments exclusive to each other
+---------------------------------------
+
+ $ hg prune --fold --biject
+ abort: can only specify one of biject, fold
+ [255]
+ $ hg prune --split --fold
+ abort: can only specify one of fold, split
+ [255]
+ $ hg prune --split --fold --biject
+ abort: can only specify one of biject, fold, split
+ [255]
+
Check simple case
----------------------------
@@ -150,6 +163,9 @@
one old, two new
$ hg prune 'desc("add dd")' -s 'desc("add nD")' -s 'desc("add nC")'
+ abort: please add --split if you want to do a split
+ [255]
+ $ hg prune 'desc("add dd")' -s 'desc("add nD")' -s 'desc("add nC")' --split
1 changesets pruned
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'user': 'blah'}
@@ -190,6 +206,9 @@
two old, one new:
$ hg prune 'desc("add cc")' 'desc("add bb")' -s 'desc("add nB")'
+ abort: please add --fold if you want to do a fold
+ [255]
+ $ hg prune 'desc("add cc")' 'desc("add bb")' -s 'desc("add nB")' --fold
2 changesets pruned
$ hg debugobsolete
9d206ffc875e1bc304590549be293be36821e66c 0 {47d2a3944de8b013de3be9578e8e344ea2e6c097} (Sat Dec 15 00:00:00 1979 +0000) {'user': 'blah'}
--- a/tests/test-sharing.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-sharing.t Mon Oct 12 01:23:59 2015 -0700
@@ -46,7 +46,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Let's commit a preliminary change and push it to ``test-repo`` for
@@ -88,8 +87,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pull obsolescence markers
- 2 obsolescence markers added
+ 2 new obsolescence markers
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Figure SG03
@@ -140,8 +138,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pushing 4 obsolescence markers (*) (glob)
- 4 obsolescence markers added
+ 4 new obsolescence markers
Now that the fix is public, we cannot amend it any more.
$ hg amend -m 'fix bug 37'
@@ -161,8 +158,6 @@
pushing to ../dev-repo
searching for changes
no changes found
- pushing 4 obsolescence markers (*) (glob)
- 0 obsolescence markers added
[1]
$ hg -R ../dev-repo shortlog -r 'draft()'
@@ -196,8 +191,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pushing 4 obsolescence markers (*) (glob)
- 0 obsolescence markers added
exporting bookmark bug15
$ hg -R ../review bookmarks
bug15 2:f91e97234c2b
@@ -213,8 +206,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 6 obsolescence markers (*) (glob)
- 2 obsolescence markers added
+ 2 new obsolescence markers
updating bookmark bug15
$ hg -R ../review bookmarks
bug15 3:cbdfbd5a5db2
@@ -241,8 +233,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 4 obsolescence markers (*) (glob)
- 0 obsolescence markers added
exporting bookmark featureX
$ hg -R ../review bookmarks
bug15 3:cbdfbd5a5db2
@@ -259,8 +249,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 6 obsolescence markers (*) (glob)
- 2 obsolescence markers added
+ 2 new obsolescence markers
updating bookmark featureX
Bob receives second review, amends, and pushes to public:
@@ -274,8 +263,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pushing 8 obsolescence markers (*) (glob)
- 4 obsolescence markers added
+ 4 new obsolescence markers
$ hg -R ../public bookmarks
no bookmarks set
$ hg push ../review
@@ -286,8 +274,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 8 obsolescence markers (*) (glob)
- 2 obsolescence markers added
+ 2 new obsolescence markers
updating bookmark featureX
$ hg -R ../review bookmarks
bug15 3:cbdfbd5a5db2
@@ -357,8 +344,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pull obsolescence markers
- 4 obsolescence markers added
+ 4 new obsolescence markers
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg log -G -q -r 'head()'
o 5:540ba8f317e6
@@ -388,8 +374,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pushing 11 obsolescence markers (*) (glob)
- 3 obsolescence markers added
+ 3 new obsolescence markers
$ hg push ../review
pushing to ../review
searching for changes
@@ -397,8 +382,7 @@
adding manifests
adding file changes
added 1 changesets with 0 changes to 1 files
- pushing 11 obsolescence markers (*) (glob)
- 1 obsolescence markers added
+ 1 new obsolescence markers
updating bookmark bug15
Figure SG08: review and public changesets after Alice pushes.
@@ -460,8 +444,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
- 0 obsolescence markers added
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo 'better fix (alice)' >> file1
$ hg amend -u alice -m 'fix bug 24 (v2 by alice)'
@@ -489,8 +471,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pull obsolescence markers
- 2 obsolescence markers added
+ 2 new obsolescence markers
(run 'hg heads' to see heads, 'hg merge' to merge)
2 new divergent changesets
--- a/tests/test-simple4server.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-simple4server.t Mon Oct 12 01:23:59 2015 -0700
@@ -96,7 +96,7 @@
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 2 obsolescence markers (*) (glob)
+ pushing 2 obsolescence markers (* bytes) (glob)
$ cat ../errors.log
$ hg push
pushing to http://localhost:$HGPORT/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-split.t Mon Oct 12 01:23:59 2015 -0700
@@ -0,0 +1,338 @@
+test of the split command
+-----------------------
+
+ $ cat >> $HGRCPATH <<EOF
+ > [defaults]
+ > amend=-d "0 0"
+ > fold=-d "0 0"
+ > split=-d "0 0"
+ > amend=-d "0 0"
+ > [web]
+ > push_ssl = false
+ > allow_push = *
+ > [phases]
+ > publish = False
+ > [diff]
+ > git = 1
+ > unified = 0
+ > [ui]
+ > interactive = true
+ > [extensions]
+ > hgext.graphlog=
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH
+ $ mkcommit() {
+ > echo "$1" > "$1"
+ > hg add "$1"
+ > hg ci -m "add $1"
+ > }
+
+
+Basic case, split a head
+ $ hg init testsplit
+ $ cd testsplit
+ $ mkcommit _a
+ $ mkcommit _b
+ $ mkcommit _c
+ $ mkcommit _d
+ $ echo "change to a" >> _a
+ $ hg amend
+ $ hg debugobsolete
+ 9e84a109b8eb081ad754681ee4b1380d17a3741f aa8f656bb307022172d2648be6fb65322f801225 0 (*) {'user': 'test'} (glob)
+ f002b57772d7f09b180c407213ae16d92996a988 0 {9e84a109b8eb081ad754681ee4b1380d17a3741f} (*) {'user': 'test'} (glob)
+
+To create commits with the number of split
+ $ echo 0 > num
+ $ cat > editor.sh << '__EOF__'
+ > NUM=$(cat num)
+ > NUM=`expr "$NUM" + 1`
+ > echo "$NUM" > num
+ > echo "split$NUM" > "$1"
+ > __EOF__
+ $ export HGEDITOR="\"sh\" \"editor.sh\""
+ $ hg split << EOF
+ > y
+ > y
+ > y
+ > n
+ > N
+ > y
+ > y
+ > EOF
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ reverting _a
+ adding _d
+ diff --git a/_a b/_a
+ 1 hunks, 1 lines changed
+ examine changes to '_a'? [Ynesfdaq?] y
+
+ @@ -1,0 +2,1 @@
+ +change to a
+ record change 1/2 to '_a'? [Ynesfdaq?] y
+
+ diff --git a/_d b/_d
+ new file mode 100644
+ examine changes to '_d'? [Ynesfdaq?] y
+
+ @@ -0,0 +1,1 @@
+ +_d
+ record change 2/2 to '_d'? [Ynesfdaq?] n
+
+ created new head
+ Done splitting? [yN] N
+ diff --git a/_d b/_d
+ new file mode 100644
+ examine changes to '_d'? [Ynesfdaq?] y
+
+ @@ -0,0 +1,1 @@
+ +_d
+ record this change to '_d'? [Ynesfdaq?] y
+
+ no more change to split
+
+ $ hg debugobsolete
+ 9e84a109b8eb081ad754681ee4b1380d17a3741f aa8f656bb307022172d2648be6fb65322f801225 0 (*) {'user': 'test'} (glob)
+ f002b57772d7f09b180c407213ae16d92996a988 0 {9e84a109b8eb081ad754681ee4b1380d17a3741f} (*) {'user': 'test'} (glob)
+ aa8f656bb307022172d2648be6fb65322f801225 a98b35e86cae589b61892127c5ec1c868e41d910 5410a2352fa3114883327beee89e3085eefac25c 0 (*) {'user': 'test'} (glob)
+ $ hg glog
+ @ changeset: 7:5410a2352fa3
+ | tag: tip
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split2
+ |
+ o changeset: 6:a98b35e86cae
+ | parent: 2:102002290587
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split1
+ |
+ o changeset: 2:102002290587
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: add _c
+ |
+ o changeset: 1:37445b16603b
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: add _b
+ |
+ o changeset: 0:135f39f4bd78
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: add _a
+
+
+Cannot split a commit with uncommited changes
+ $ hg up "desc(_c)"
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo "_cd" > _c
+ $ hg split
+ abort: uncommitted changes
+ [255]
+
+Split a revision specified with -r
+ $ hg up "desc(_c)" -C
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo "change to b" >> _b
+ $ hg amend -m "_cprim"
+ 2 new unstable changesets
+ $ hg evolve --all
+ move:[6] split1
+ atop:[9] _cprim
+ move:[7] split2
+ atop:[10] split1
+ working directory is now at * (glob)
+ $ hg log -r "desc(_cprim)" -v -p
+ changeset: 9:719157b217ac
+ parent: 1:37445b16603b
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ files: _b _c
+ description:
+ _cprim
+
+
+ diff --git a/_b b/_b
+ --- a/_b
+ +++ b/_b
+ @@ -1,0 +2,1 @@
+ +change to b
+ diff --git a/_c b/_c
+ new file mode 100644
+ --- /dev/null
+ +++ b/_c
+ @@ -0,0 +1,1 @@
+ +_c
+
+ $ hg split -r "desc(_cprim)" <<EOF
+ > y
+ > y
+ > y
+ > n
+ > y
+ > EOF
+ 2 files updated, 0 files merged, 2 files removed, 0 files unresolved
+ reverting _b
+ adding _c
+ diff --git a/_b b/_b
+ 1 hunks, 1 lines changed
+ examine changes to '_b'? [Ynesfdaq?] y
+
+ @@ -1,0 +2,1 @@
+ +change to b
+ record change 1/2 to '_b'? [Ynesfdaq?] y
+
+ diff --git a/_c b/_c
+ new file mode 100644
+ examine changes to '_c'? [Ynesfdaq?] y
+
+ @@ -0,0 +1,1 @@
+ +_c
+ record change 2/2 to '_c'? [Ynesfdaq?] n
+
+ created new head
+ Done splitting? [yN] y
+
+Stop before splitting the commit completely creates a commit with all the
+remaining changes
+
+ $ hg debugobsolete
+ 9e84a109b8eb081ad754681ee4b1380d17a3741f aa8f656bb307022172d2648be6fb65322f801225 0 (*) {'user': 'test'} (glob)
+ f002b57772d7f09b180c407213ae16d92996a988 0 {9e84a109b8eb081ad754681ee4b1380d17a3741f} (*) {'user': 'test'} (glob)
+ aa8f656bb307022172d2648be6fb65322f801225 a98b35e86cae589b61892127c5ec1c868e41d910 5410a2352fa3114883327beee89e3085eefac25c 0 (*) {'user': 'test'} (glob)
+ 10200229058723ce8d67f6612c1f6b4f73b1fe73 719157b217acc43d397369a448824ed4c7a302f2 0 (*) {'user': 'test'} (glob)
+ 5d0c8b0f2d3e5e1ff95f93d7da2ba06650605ab5 0 {10200229058723ce8d67f6612c1f6b4f73b1fe73} (*) {'user': 'test'} (glob)
+ a98b35e86cae589b61892127c5ec1c868e41d910 286887947725085e03455d79649197feaef1eb9d 0 (*) {'user': 'test'} (glob)
+ 5410a2352fa3114883327beee89e3085eefac25c 0b67cee46a7f2ad664f994027e7af95b36ae25fe 0 (*) {'user': 'test'} (glob)
+ 719157b217acc43d397369a448824ed4c7a302f2 ced8fbcce3a7cd33f0e454d2cd63882ce1b6006b 73309fb98db840ba4ec5ad528346dc6ee0b39dcb 0 (*) {'user': 'test'} (glob)
+ $ hg evolve --all
+ move:[10] split1
+ atop:[13] split4
+ move:[11] split2
+ atop:[14] split1
+ working directory is now at f200e612ac86
+ $ hg glog
+ @ changeset: 15:f200e612ac86
+ | tag: tip
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split2
+ |
+ o changeset: 14:aec57822a8ff
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split1
+ |
+ o changeset: 13:73309fb98db8
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split4
+ |
+ o changeset: 12:ced8fbcce3a7
+ | parent: 1:37445b16603b
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split3
+ |
+ o changeset: 1:37445b16603b
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: add _b
+ |
+ o changeset: 0:135f39f4bd78
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ summary: add _a
+
+
+Split should move bookmarks on the last split successor and preserve the
+active bookmark as active
+ $ hg book bookA
+ $ hg book bookB
+ $ echo "changetofilea" > _a
+ $ hg amend
+ $ hg book
+ bookA 17:39d16b69c75d
+ * bookB 17:39d16b69c75d
+ $ hg glog -r "14::"
+ @ changeset: 17:39d16b69c75d
+ | bookmark: bookA
+ | bookmark: bookB
+ | tag: tip
+ | parent: 14:aec57822a8ff
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split2
+ |
+ o changeset: 14:aec57822a8ff
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split1
+ |
+ $ hg split <<EOF
+ > y
+ > y
+ > n
+ > y
+ > EOF
+ (leaving bookmark bookB)
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ reverting _a
+ adding _d
+ diff --git a/_a b/_a
+ 1 hunks, 2 lines changed
+ examine changes to '_a'? [Ynesfdaq?] y
+
+ @@ -1,2 +1,1 @@
+ -_a
+ -change to a
+ +changetofilea
+ record change 1/2 to '_a'? [Ynesfdaq?] y
+
+ diff --git a/_d b/_d
+ new file mode 100644
+ examine changes to '_d'? [Ynesfdaq?] n
+
+ created new head
+ Done splitting? [yN] y
+ $ hg glog -r "14::"
+ @ changeset: 19:a2b5c9d9b362
+ | bookmark: bookA
+ | bookmark: bookB
+ | tag: tip
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split6
+ |
+ o changeset: 18:bf3402785e72
+ | parent: 14:aec57822a8ff
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split5
+ |
+ o changeset: 14:aec57822a8ff
+ | user: test
+ | date: Thu Jan 01 00:00:00 1970 +0000
+ | summary: split1
+ |
+ $ hg book
+ bookA 19:a2b5c9d9b362
+ * bookB 19:a2b5c9d9b362
+
+Cannot specify multiple revisions with -r
+ $ hg split -r "desc(_a)::"
+ abort: you can only specify one revision to split
+ [255]
+
+Cannot split a commit that is not a head if instability is not allowed
+ $ cat >> $HGRCPATH <<EOF
+ > [experimental]
+ > evolution=createmarkers
+ > evolutioncommands=split
+ > EOF
+ $ hg split -r "desc(split3)"
+ abort: cannot split commit: ced8fbcce3a7 not a head
+ [255]
+
+
--- a/tests/test-stabilize-order.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-stabilize-order.t Mon Oct 12 01:23:59 2015 -0700
@@ -73,9 +73,9 @@
b
committing manifest
committing changelog
- working directory is now at bede829dd2d3
+ working directory is now at 81b8bbcd5892
$ glog
- @ 8:bede829dd2d3@default(draft) addb
+ @ 8:81b8bbcd5892@default(draft) addb
|
o 7:005fe5914f78@default(draft) adda
|
@@ -96,7 +96,7 @@
$ hg evolve -v
move:[3] addc
atop:[8] addb
- hg rebase -r 7a7552255fb5 -d bede829dd2d3
+ hg rebase -r 7a7552255fb5 -d 81b8bbcd5892
resolving manifests
getting b
resolving manifests
@@ -105,7 +105,7 @@
c
committing manifest
committing changelog
- working directory is now at 65095d7d0dd5
+ working directory is now at 0f691739f917
$ hg debugobsolete > successors.new
$ diff -u successors.old successors.new
--- successors.old* (glob)
@@ -113,16 +113,16 @@
@@ -3,3 +3,4 @@
93418d2c0979643ad446f621195e78720edb05b4 005fe5914f78e8bc64c7eba28117b0b1fa210d0d 0 (*) {'user': 'test'} (glob)
7a7d76dc97c57751de9e80f61ed2a639bd03cd24 0 {93418d2c0979643ad446f621195e78720edb05b4} (*) {'user': 'test'} (glob)
- 22619daeed78036f80fbd326b6852519c4f0c25e bede829dd2d3b2ae9bf198c23432b250dc964458 0 (*) {'user': 'test'} (glob)
- +7a7552255fb5f8bd745e46fba6f0ca633a4dd716 65095d7d0dd5e4f15503bb7b1f433a5fe9bac052 0 (*) {'user': 'test'} (glob)
+ 22619daeed78036f80fbd326b6852519c4f0c25e 81b8bbcd5892841efed41433d7a5e9df922396cb 0 (*) {'user': 'test'} (glob)
+ +7a7552255fb5f8bd745e46fba6f0ca633a4dd716 0f691739f91762462bf8ba21f35fdf71fe64310e 0 (*) {'user': 'test'} (glob)
[1]
$ glog
- @ 9:65095d7d0dd5@default(draft) addc
+ @ 9:0f691739f917@default(draft) addc
|
- o 8:bede829dd2d3@default(draft) addb
+ o 8:81b8bbcd5892@default(draft) addb
|
o 7:005fe5914f78@default(draft) adda
|
@@ -140,11 +140,11 @@
$ hg amend
1 new unstable changesets
$ glog
- @ 11:036cf654e942@default(draft) addb
+ @ 11:7a68bc4596ea@default(draft) addb
|
- | o 9:65095d7d0dd5@default(draft) addc
+ | o 9:0f691739f917@default(draft) addc
| |
- | x 8:bede829dd2d3@default(draft) addb
+ | x 8:81b8bbcd5892@default(draft) addb
|/
o 7:005fe5914f78@default(draft) adda
|
@@ -159,7 +159,7 @@
$ hg evolve --any -v
move:[9] addc
atop:[11] addb
- hg rebase -r 65095d7d0dd5 -d 036cf654e942
+ hg rebase -r 0f691739f917 -d 7a68bc4596ea
resolving manifests
removing c
getting b
@@ -169,11 +169,11 @@
c
committing manifest
committing changelog
- working directory is now at e99ecf51c867
+ working directory is now at 2256dae6521f
$ glog
- @ 12:e99ecf51c867@default(draft) addc
+ @ 12:2256dae6521f@default(draft) addc
|
- o 11:036cf654e942@default(draft) addb
+ o 11:7a68bc4596ea@default(draft) addb
|
o 7:005fe5914f78@default(draft) adda
|
@@ -198,30 +198,30 @@
$ hg commit --amend -m "newmessage"
2 new unstable changesets
$ hg log -G
- @ changeset: 15:49773ccde390
+ @ changeset: 15:f83a0bce03e4
| tag: tip
- | parent: 11:036cf654e942
+ | parent: 11:7a68bc4596ea
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: newmessage
|
- | o changeset: 14:a9892777b519
- | | parent: 12:e99ecf51c867
+ | o changeset: 14:fa68011f392e
+ | | parent: 12:2256dae6521f
| | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: secondambiguous
| |
- | | o changeset: 13:0b6e26b2472d
+ | | o changeset: 13:bdc003b6eec2
| |/ user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: firstambiguous
| |
- | x changeset: 12:e99ecf51c867
+ | x changeset: 12:2256dae6521f
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: addc
|
- o changeset: 11:036cf654e942
+ o changeset: 11:7a68bc4596ea
| parent: 7:005fe5914f78
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
--- a/tests/test-stabilize-result.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-stabilize-result.t Mon Oct 12 01:23:59 2015 -0700
@@ -307,6 +307,7 @@
branch: default
commit: (clean)
update: 2 new changesets, 2 branch heads (merge)
+ phases: 3 draft
$ hg export .
# HG changeset patch
# User test
--- a/tests/test-tutorial.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-tutorial.t Mon Oct 12 01:23:59 2015 -0700
@@ -224,7 +224,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pull obsolescence markers
(run 'hg heads' to see heads, 'hg merge' to merge)
I now have a new heads. Note that this remote head is immutable
@@ -406,8 +405,7 @@
adding manifests
adding file changes
added 3 changesets with 3 changes to 1 files
- pushing 6 obsolescence markers (*) (glob)
- 6 obsolescence markers added
+ 6 new obsolescence markers
for simplicity sake we get the bathroom change in line again
@@ -527,8 +525,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
- 1 obsolescence markers added
+ 1 new obsolescence markers
(run 'hg update' to get a working copy)
$ hg log -G
o 75954b8cd933 (public): bathroom stuff
@@ -585,8 +582,7 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
- 1 obsolescence markers added
+ 1 new obsolescence markers
(run 'hg update' to get a working copy)
$ hg log -G
o 75954b8cd933 (draft): bathroom stuff
@@ -646,8 +642,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
- pull obsolescence markers
- 0 obsolescence markers added
(run 'hg heads' to see heads, 'hg merge' to merge)
1 new unstable changesets
@@ -737,8 +731,7 @@
adding manifests
adding file changes
added 2 changesets with 2 changes to 1 files (+1 heads)
- pushing 10 obsolescence markers (*) (glob)
- 3 obsolescence markers added
+ 3 new obsolescence markers
remote get a warning that current working directory is based on an obsolete changeset
@@ -747,8 +740,6 @@
pulling from $TESTTMP/local (glob)
searching for changes
no changes found
- pull obsolescence markers
- 0 obsolescence markers added
working directory parent is obsolete!
(use "hg evolve" to update to its successor)
@@ -781,8 +772,6 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
- pull obsolescence markers
- 0 obsolescence markers added
(run 'hg update' to get a working copy)
$ hg log -G
o 99f039c5ec9e (draft): SPAM SPAM SPAM
--- a/tests/test-uncommit.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-uncommit.t Mon Oct 12 01:23:59 2015 -0700
@@ -138,7 +138,6 @@
$ hg branch foo
marked working directory as branch foo
- (branches are permanent and global, did you want a bookmark?)
$ hg mv ff f
$ hg mv h i
$ hg rm j
--- a/tests/test-unstable.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-unstable.t Mon Oct 12 01:23:59 2015 -0700
@@ -182,7 +182,6 @@
===============================================================================
Test instability resolution for a changeset unstable because its parent
is obsolete with multiple successors all in one chain (simple split)
-Not supported yet
==============================================================================
$ hg init test4
@@ -208,16 +207,16 @@
$ hg evo --all --any --unstable
- does not handle split parents yet
+ move:[2] add _c
+ atop:[4] add bprimesplit2
+ working directory is now at 387cc1e837d7
$ hg log -G
- @ 4:2a4ccc0bb20c@default(draft) add bprimesplit2
+ @ 5:387cc1e837d7@default(draft) add _c
+ |
+ o 4:2a4ccc0bb20c@default(draft) add bprimesplit2
|
o 3:8b87864bd0f4@default(draft) add bprimesplit1
|
- | o 2:102002290587@default(draft) add _c
- | |
- | x 1:37445b16603b@default(draft) add _b
- |/
o 0:135f39f4bd78@default(draft) add _a
@@ -228,7 +227,6 @@
Test instability resolution for a changeset unstable because its parent
is obsolete with multiple successors on one branches but in reverse
order (cross-split).
-Not supported yet
==============================================================================
$ hg init test5
@@ -263,16 +261,16 @@
$ hg evo --all --any --unstable
- does not handle split parents yet
+ move:[2] add _c
+ atop:[6] add bsecondsplit2
+ working directory is now at 98e3f21461ff
$ hg log -G
- @ 6:59b942dbda14@default(draft) add bsecondsplit2
+ @ 7:98e3f21461ff@default(draft) add _c
+ |
+ o 6:59b942dbda14@default(draft) add bsecondsplit2
|
o 5:8ffdae67d696@default(draft) add bsecondsplit1
|
- | o 2:102002290587@default(draft) add _c
- | |
- | x 1:37445b16603b@default(draft) add _b
- |/
o 0:135f39f4bd78@default(draft) add _a
@@ -312,7 +310,7 @@
$ hg evo --all --any --unstable
- does not handle split parents yet
+ cannot solve split accross two branches
$ hg log -G
@ 4:3c69ea6aa93e@default(draft) add bprimesplit2
|
--- a/tests/test-wireproto-bundle1.t Mon Oct 12 01:22:41 2015 -0700
+++ b/tests/test-wireproto-bundle1.t Mon Oct 12 01:23:59 2015 -0700
@@ -50,7 +50,6 @@
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
- pull obsolescence markers
(run 'hg update' to get a working copy)
$ hg push -R ../other
pushing to ssh://user@dummy/server
@@ -70,8 +69,7 @@
remote: adding manifests
remote: adding file changes
remote: added 1 changesets with 1 changes to 1 files (+1 heads)
- pushing 2 obsolescence markers (*) (glob)
- remote: 2 obsolescence markers added
+ remote: 2 new obsolescence markers
$ hg push
pushing to ssh://user@dummy/server
searching for changes
@@ -88,9 +86,8 @@
adding manifests
adding file changes
added 1 changesets with 1 changes to [12] files \(\+1 heads\) (re)
- pull obsolescence markers
- 2 obsolescence markers added
- (run 'hg heads' to see heads)
+ 2 new obsolescence markers
+ (run 'hg heads' to see heads, 'hg merge' to merge)
$ hg -R ../other pull
pulling from ssh://user@dummy/server
searching for changes