Mercurial > evolve
changeset 3275:875de4816c5b mercurial-4.1
test-compat: merge mercurial-4.2 into mercurial-4.1
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 11 Dec 2017 09:33:32 +0100 |
parents | ddbb4d069203 (diff) 0587b10d143a (current diff) |
children | bd99cb54712b |
files | tests/test-prev-next.t tests/test-topic-stack.t |
diffstat | 17 files changed, 250 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Tue Nov 14 23:15:20 2017 +0100 +++ b/.hgignore Mon Dec 11 09:33:32 2017 +0100 @@ -6,7 +6,7 @@ \.swp$ \.orig$ \.rej$ -\.err$ +^tests/.*\.err$ ^tests/easy_run.sh$ ^build/ ^dist/
--- a/.hgtags Tue Nov 14 23:15:20 2017 +0100 +++ b/.hgtags Mon Dec 11 09:33:32 2017 +0100 @@ -60,3 +60,4 @@ 430ad68292d76b9387d1eeadf289951f51fd88d3 6.7.1 ec0bbf26ce7fadd42c637e01d3750dac96ac0b1b 6.8.0 c56c028f3802202241551e5953bea74ab3a6c434 7.0.0 +c4940c22d76b9c6b3c2117a3b490f3c4fd796972 7.0.1
--- a/CHANGELOG Tue Nov 14 23:15:20 2017 +0100 +++ b/CHANGELOG Mon Dec 11 09:33:32 2017 +0100 @@ -1,7 +1,16 @@ Changelog ========= -7.0.1 - in progress +7.0.2 - in progress +------------------- + + * split: preserve the branch of the source changeset + +Topic (0.5.2) + + * makes code more resilient to partiel initialization + +7.0.1 -- 2017-11-14 ------------------- * obsdiscovery: allow the config option to disable discovery server side @@ -11,7 +20,11 @@ to server with the extension bu obsolescence marker exchange disabled. -7.0.0 -- 2017-10-23 +topic (0.5.1) + + * fix new-heads check when pushing new topic with --publish. + +7.0.0 -- 2017-11-02 ------------------- * drop compatibility with Mercurial 3.8, 3.9 and 4.0,
--- a/debian/changelog Tue Nov 14 23:15:20 2017 +0100 +++ b/debian/changelog Mon Dec 11 09:33:32 2017 +0100 @@ -1,3 +1,9 @@ +mercurial-evolve (7.0.1) unstable; urgency=medium + + * new upstream release + + -- Pierre-Yves David <pierre-yves.david@ens-lyon.org> Wed, 15 Nov 2017 00:14:42 +0100 + mercurial-evolve (7.0.0-1) unstable; urgency=medium * new upstream release
--- a/hgext3rd/evolve/__init__.py Tue Nov 14 23:15:20 2017 +0100 +++ b/hgext3rd/evolve/__init__.py Mon Dec 11 09:33:32 2017 +0100 @@ -58,10 +58,10 @@ is already raising better results than the previous version (when usable). "Large" repositories (hundreds of thousand) are currently unsupported. Some key -algorithm has a naive implementation with too agressive caching, creating +algorithm has a naive implementation with too aggressive caching, creating memory consumption issue (this will get fixed). -Medium sized repositories works fine, but be prepared for a noticable initial +Medium sized repositories works fine, but be prepared for a noticeable initial cache filling. for the Mercurial repository, this is around 20 seconds The following config control the experiment:: @@ -97,7 +97,7 @@ # automatically disable obshashrange related computation and capabilities # if the repository has more than N revisions. This is meant to help large - # server deployement to enable the feature on smaller repositories while + # server deployment to enable the feature on smaller repositories while # ensuring no large repository will get affected. obshashrange.max-revs = 100000 # default is None @@ -159,12 +159,12 @@ - precursors, for each obsolete changeset show the closest visible precursors. - - successors, for each obsolete changeset show the closests visible + - successors, for each obsolete changeset show the closest visible successors. It is useful when your working directory is obsolete to see what are its successors. This information can also be retrieved with the obslog command and the --all option. - obsfate, for each obsolete changeset display a line summarizing what - changed between the changeset and its successors. Dependending on the + changed between the changeset and its successors. Depending on the verbosity level (-q and -v) it display the changeset successors, the users that created the obsmarkers and the date range of these changes. @@ -1459,8 +1459,8 @@ Automatic mode only handles common use cases. For example, it avoids taking action in the case of ambiguity, and it ignores unstable changesets that are not related to your working copy. - It also refuses to solve bumped or divergent changesets unless you explicity - request such behavior (see below). + It also refuses to solve bumped or divergent changesets unless you + explicitly request such behavior (see below). Eliminating all instability around your working copy may require multiple invocations of :hg:`evolve`. Alternately, use ``--all`` to recursively @@ -1726,7 +1726,7 @@ 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" + msg = "cannot solve split across two branches\n" ui.write_err(msg) return 2 target = repo[heads.first()] @@ -1876,7 +1876,7 @@ base, others = divergentdata(divergent) if len(others) > 1: othersstr = "[%s]" % (','.join([str(i) for i in others])) - msg = _("skipping %d:divergent with a changeset that got splitted" + msg = _("skipping %d:divergent with a changeset that got split" " into multiple ones:\n" "|[%s]\n" "| This is not handled by automatic evolution yet\n" @@ -2177,7 +2177,7 @@ displayer.show(c) result = 0 elif children: - ui.warn(_("ambigious next changeset:\n")) + ui.warn(_("ambiguous next changeset:\n")) for c in children: displayer.show(c) ui.warn(_('explicitly update to one of them\n')) @@ -2201,7 +2201,7 @@ ui.warn(msg % len(aspchildren)) result = 1 elif 1 < len(aspchildren): - ui.warn(_("ambigious next (unstable) changeset:\n")) + ui.warn(_("ambiguous next (unstable) changeset:\n")) for c in aspchildren: displayer.show(repo[c]) ui.warn(_("(run 'hg evolve --rev REV' on one of them)\n")) @@ -2467,7 +2467,7 @@ try: versionblob = f.read(4) if len(versionblob) < 4: - repo.ui.debug('ignoring corrupted evolvestte (file contains %i bits)' + repo.ui.debug('ignoring corrupted evolvestate (file contains %i bits)' % len(versionblob)) return None version = _unpack('>I', versionblob)[0]
--- a/hgext3rd/evolve/cmdrewrite.py Tue Nov 14 23:15:20 2017 +0100 +++ b/hgext3rd/evolve/cmdrewrite.py Mon Dec 11 09:33:32 2017 +0100 @@ -71,7 +71,7 @@ interactiveopt = [['i', 'interactive', None, _('use interactive mode')]] @eh.command( - 'amend|refresh', + '^amend|refresh', [('A', 'addremove', None, _('mark new/missing files as added/removed before committing')), ('a', 'all', False, _("match all files")), @@ -284,7 +284,7 @@ ds.copy(src, dst) @eh.command( - '^uncommit', + 'uncommit', [('a', 'all', None, _('uncommit all changes when no arguments given')), ('i', 'interactive', False, _('interactive mode to uncommit (EXPERIMENTAL)')), ('r', 'rev', '', _('revert commit content to REV instead')), @@ -590,7 +590,7 @@ lockmod.release(lock, wlock) @eh.command( - '^metaedit', + 'metaedit', [('r', 'rev', [], _("revision to edit")), ('', 'fold', None, _("also fold specified revisions into one")), ] + commitopts + commitopts2 + commitopts3, @@ -933,6 +933,9 @@ hnt = _("use either `hg split <rs>` or `hg split --rev <rs>`, not both") raise error.Abort(msg, hint=hnt) + # Save the current branch to restore it in the end + savedbranch = repo.dirstate.branch() + try: wlock = repo.wlock() lock = repo.lock() @@ -964,6 +967,11 @@ opts['edit'] = True if not opts['user']: opts['user'] = ctx.user() + + # Set the right branch + # XXX-TODO: Find a way to set the branch without altering the dirstate + repo.dirstate.setbranch(ctx.branch()) + while haschanges(): pats = () cmdutil.dorecord(ui, repo, commands.commit, 'commit', False, @@ -987,10 +995,13 @@ obsolete.createmarkers(repo, [(repo[rev], newcommits)]) tr.close() finally: + # Restore the old branch + repo.dirstate.setbranch(savedbranch) + lockmod.release(tr, lock, wlock) @eh.command( - '^touch', + 'touch', [('r', 'rev', [], 'revision to update'), ('D', 'duplicate', False, 'do not mark the new revision as successor of the old one'), @@ -1000,8 +1011,7 @@ # allow to choose the seed ? _('[-r] revs')) def touch(ui, repo, *revs, **opts): - """create successors that are identical to their predecessors except - for the changeset ID + """create successors identical to their predecessors but the changeset ID This is used to "resurrect" changesets """
--- a/hgext3rd/evolve/metadata.py Tue Nov 14 23:15:20 2017 +0100 +++ b/hgext3rd/evolve/metadata.py Mon Dec 11 09:33:32 2017 +0100 @@ -5,7 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -__version__ = '7.0.1.dev' -testedwith = '4.1.3 4.2.3 4.3.2 4.4' +__version__ = '7.0.2.dev' +testedwith = '4.1.3 4.2.3 4.3.2 4.4.1' minimumhgversion = '4.1' buglink = 'https://bz.mercurial-scm.org/'
--- a/hgext3rd/topic/__init__.py Tue Nov 14 23:15:20 2017 +0100 +++ b/hgext3rd/topic/__init__.py Mon Dec 11 09:33:32 2017 +0100 @@ -9,12 +9,12 @@ Compared to bookmark, topic is reference carried by each changesets of the series instead of just the single head revision. Topic are quite similar to -the way named branch work, except they eventualy fade away when the changeset +the way named branch work, except they eventually fade away when the changeset becomes part of the immutable history. Changeset can belong to both a topic and a named branch, but as long as it is mutable, its topic identity will prevail. As a result, default destination for 'update', 'merge', etc... will take topic into account. When a topic is active these operations will only consider other -changesets on that topic (and, in some occurence, bare changeset on same +changesets on that topic (and, in some occurrence, bare changeset on same branch). When no topic is active, changeset with topic will be ignored and only bare one on the same branch will be taken in account. @@ -77,7 +77,7 @@ =================== Topic vanish when changeset move to the public phases. Moving to the public -phase usually happens on push, but it is possible ot update that behavior. The +phase usually happens on push, but it is possible to update that behavior. The server needs to have specific config for this. # everything pushed become public (the default) @@ -174,9 +174,9 @@ 'topic.active': 'green', } -__version__ = '0.5.1.dev' +__version__ = '0.5.2.dev' -testedwith = '4.1.3 4.2.3 4.3.3 4.4' +testedwith = '4.1.3 4.2.3 4.3.3 4.4.1' minimumhgversion = '4.1' buglink = 'https://bz.mercurial-scm.org/' @@ -201,9 +201,9 @@ ) def extsetup(ui): - # register config that strickly belong to other code (thg, core, etc) + # register config that strictly belong to other code (thg, core, etc) # - # To ensure all config items we used are registerd, we register them if + # To ensure all config items we used are registered, we register them if # nobody else did so far. from mercurial import configitems extraitem = functools.partial(configitems._register, ui._knownconfig) @@ -444,7 +444,7 @@ reporef = weakref.ref(self) def currenttopicempty(tr): - # check active topic emptyness + # check active topic emptiness repo = reporef() csetcount = stack.stack(repo, topic=ct).changesetcount empty = csetcount == 0 @@ -474,7 +474,7 @@ def wrapinit(orig, self, repo, *args, **kwargs): orig(self, repo, *args, **kwargs) - if repo.currenttopic: + if getattr(repo, 'currenttopic', ''): self._extra[constants.extrakey] = repo.currenttopic else: # Empty key will be dropped from extra by another hack at the changegroup level @@ -741,14 +741,14 @@ """ def _findconvertbmarktopic(repo, bmark): - """find revisions unambigiously defined by a bookmark + """find revisions unambiguously defined by a bookmark find all changesets under the bookmark and under that bookmark only. """ return repo.revs(CONVERTBOOKREVSET, bmark, bmark, bmark, bmark, bmark) def _applyconvertbmarktopic(ui, repo, revs, old, bmark, tr): - """apply bookmark convertion to topic + """apply bookmark conversion to topic Sets a topic as same as bname to all the changesets under the bookmark and delete the bookmark, if topic is set to any changeset @@ -1012,7 +1012,7 @@ return topicstime def summaryhook(ui, repo): - t = repo.currenttopic + t = getattr(repo, 'currenttopic', '') if not t: return # i18n: column positioning for "hg summary"
--- a/hgext3rd/topic/flow.py Tue Nov 14 23:15:20 2017 +0100 +++ b/hgext3rd/topic/flow.py Mon Dec 11 09:33:32 2017 +0100 @@ -41,15 +41,14 @@ newargs['opargs']['publish'] = True return orig(repo, remote, *args, **newargs) -def extendpushoperation(orig, *args, **kwargs): +def extendpushoperation(orig, self, *args, **kwargs): publish = kwargs.pop('publish', False) - op = orig(*args, **kwargs) - op.publish = publish - return op + orig(self, *args, **kwargs) + self.publish = publish def wrapphasediscovery(orig, pushop): orig(pushop) - if pushop.publish: + if getattr(pushop, 'publish', False): if not util.safehasattr(pushop, 'remotephases'): msg = _('--publish flag only supported from Mercurial 4.4 and higher') raise error.Abort(msg) @@ -64,6 +63,7 @@ entry = extensions.wrapcommand(commands.table, 'push', wrappush) entry[1].append(('', 'publish', False, _('push the changeset as public'))) - extensions.wrapfunction(exchange, 'pushoperation', extendpushoperation) + extensions.wrapfunction(exchange.pushoperation, '__init__', + extendpushoperation) extensions.wrapfunction(exchange, '_pushdiscoveryphase', wrapphasediscovery) exchange.pushdiscoverymapping['phase'] = exchange._pushdiscoveryphase
--- a/hgext3rd/topic/stack.py Tue Nov 14 23:15:20 2017 +0100 +++ b/hgext3rd/topic/stack.py Mon Dec 11 09:33:32 2017 +0100 @@ -262,7 +262,7 @@ else: if data['behindcount'] == -1: fm.plain(', ') - fm.plain('ambigious rebase destination - %s' % data['behinderror'], + fm.plain('ambiguous rebase destination - %s' % data['behinderror'], label='topic.stack.summary.behinderror') elif data['behindcount']: fm.plain(', ')
--- a/tests/test-metaedit.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-metaedit.t Mon Dec 11 09:33:32 2017 +0100 @@ -209,7 +209,7 @@ $ hg diff -r "10" -r "11" --hidden 'fold' one commit - $ HGUSER=foobar3 hg metaedit "desc(D2)" --fold -U --config + $ HGUSER=foobar3 hg metaedit "desc(D2)" --fold -U 1 changesets folded $ hg log -r "tip" --template '{rev}: {author}\n' 13: foobar3
--- a/tests/test-prev-next.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-prev-next.t Mon Dec 11 09:33:32 2017 +0100 @@ -201,7 +201,7 @@ 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [3] added b (2) $ hg next - ambigious next changeset: + ambiguous next changeset: [4] added c [5] added d explicitly update to one of them @@ -216,7 +216,7 @@ (2 unstable changesets to be evolved here, do you want --evolve?) [1] $ hg next --evolve - ambigious next (unstable) changeset: + ambiguous next (unstable) changeset: [4] added c [5] added d (run 'hg evolve --rev REV' on one of them)
--- a/tests/test-split.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-split.t Mon Dec 11 09:33:32 2017 +0100 @@ -490,3 +490,168 @@ $ hg topic * mytopic (2 changesets) + +Test split the first commit on a branch + + $ touch SPLIT1 SPLIT2 + $ hg add SPLIT1 SPLIT2 + $ hg branch another-branch + marked working directory as branch another-branch + $ hg commit -m "To be splitted" + $ hg log -G -l 3 + @ changeset: 24:8dad923bdb9b + | branch: another-branch + | tag: tip + | topic: mytopic + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: To be splitted + | + o changeset: 23:2532b288af61 + | branch: new-branch + | topic: mytopic + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: split8 + | + o changeset: 22:addcf498f19e + | branch: new-branch + ~ topic: mytopic + parent: 20:fdb403258632 + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: split7 + + $ hg export . + # HG changeset patch + # User test + # Date 0 0 + # Thu Jan 01 00:00:00 1970 +0000 + # Branch another-branch + # Node ID 8dad923bdb9bb3b99291caa5baeb03bbc30dfd33 + # Parent 2532b288af61bd19239a95ae2a3ecb9b0ad4b8e1 + # EXP-Topic mytopic + To be splitted + + diff --git a/SPLIT1 b/SPLIT1 + new file mode 100644 + diff --git a/SPLIT2 b/SPLIT2 + new file mode 100644 + + $ hg split -r . << EOF + > Y + > N + > N + > Y + > EOF + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + adding SPLIT1 + adding SPLIT2 + diff --git a/SPLIT1 b/SPLIT1 + new file mode 100644 + examine changes to 'SPLIT1'? [Ynesfdaq?] Y + + diff --git a/SPLIT2 b/SPLIT2 + new file mode 100644 + examine changes to 'SPLIT2'? [Ynesfdaq?] N + + Done splitting? [yN] N + diff --git a/SPLIT2 b/SPLIT2 + new file mode 100644 + examine changes to 'SPLIT2'? [Ynesfdaq?] Y + + no more change to split + +The splitted changesets should be on the 'another-branch' + $ hg log -G -l 3 + @ changeset: 26:56a59faa8af7 + | branch: another-branch + | tag: tip + | topic: mytopic + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: split10 + | + o changeset: 25:75695e3e2300 + | branch: another-branch + | topic: mytopic + | parent: 23:2532b288af61 + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: split9 + | + o changeset: 23:2532b288af61 + | branch: new-branch + ~ topic: mytopic + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: split8 + + +Try splitting the first changeset of a branch then cancel + + $ hg branch yet-another-branch + marked working directory as branch yet-another-branch + $ touch SPLIT3 SPLIT4 + $ hg add SPLIT3 SPLIT4 + $ hg commit -m "To be splitted again" + + $ hg up "tip~1" + 0 files updated, 0 files merged, 2 files removed, 0 files unresolved + + $ hg log -G -l 2 + o changeset: 27:b1020d17c364 + | branch: yet-another-branch + | tag: tip + | topic: mytopic + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: To be splitted again + | + @ changeset: 26:56a59faa8af7 + | branch: another-branch + ~ topic: mytopic + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: split10 + + $ hg branch + another-branch + + $ hg split -r tip << EOF + > Y + > q + > EOF + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + adding SPLIT3 + adding SPLIT4 + diff --git a/SPLIT3 b/SPLIT3 + new file mode 100644 + examine changes to 'SPLIT3'? [Ynesfdaq?] Y + + diff --git a/SPLIT4 b/SPLIT4 + new file mode 100644 + examine changes to 'SPLIT4'? [Ynesfdaq?] q + + abort: user quit + [255] + + $ hg branch + another-branch + + $ hg log -G -l 2 + o changeset: 27:b1020d17c364 + | branch: yet-another-branch + | tag: tip + | topic: mytopic + | user: test + | date: Thu Jan 01 00:00:00 1970 +0000 + | summary: To be splitted again + | + @ changeset: 26:56a59faa8af7 + | branch: another-branch + ~ topic: mytopic + user: test + date: Thu Jan 01 00:00:00 1970 +0000 + summary: split10 +
--- a/tests/test-topic-stack-data.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-topic-stack-data.t Mon Dec 11 09:33:32 2017 +0100 @@ -282,7 +282,7 @@ t0^ add base_c (base) $ hg stack foo ### topic: foo - ### target: lake (branch), ambigious rebase destination - branch 'lake' has 2 heads + ### target: lake (branch), ambiguous rebase destination - branch 'lake' has 2 heads t2@ add foo_b (current) t1: add foo_a t0^ add lake_a (base)
--- a/tests/test-topic-stack.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-topic-stack.t Mon Dec 11 09:33:32 2017 +0100 @@ -555,7 +555,7 @@ $ hg stack foo ### topic: foo - ### target: default (branch), ambigious rebase destination - topic 'foo' has 3 heads + ### target: default (branch), ambiguous rebase destination - topic 'foo' has 3 heads t4: c_f ^ c_e t3: c_h @@ -647,7 +647,7 @@ t0^ c_A (base) $ hg stack blue ### topic: blue - ### target: default (branch), ambigious rebase destination - topic 'blue' has 3 heads + ### target: default (branch), ambiguous rebase destination - topic 'blue' has 3 heads t3@ c_I (current) ^ c_H t2: c_D @@ -700,7 +700,7 @@ $ hg stack red ### topic: red - ### target: default (branch), ambigious rebase destination - topic 'red' has 3 heads + ### target: default (branch), ambiguous rebase destination - topic 'red' has 3 heads t5$ c_H (unstable) ^ c_G ^ c_D @@ -712,7 +712,7 @@ t0^ c_A (base) $ hg stack blue ### topic: blue - ### target: default (branch), ambigious rebase destination - topic 'blue' has 3 heads + ### target: default (branch), ambiguous rebase destination - topic 'blue' has 3 heads t3$ c_I (unstable) ^ c_H t2$ c_G (unstable) @@ -774,7 +774,7 @@ $ hg stack red ### topic: red - ### target: default (branch), ambigious rebase destination - topic 'red' has 3 heads + ### target: default (branch), ambiguous rebase destination - topic 'red' has 3 heads t5$ c_H (unstable) ^ c_G ^ c_D @@ -786,7 +786,7 @@ t0^ c_A (base) $ hg stack blue ### topic: blue - ### target: default (branch), ambigious rebase destination - topic 'blue' has 3 heads + ### target: default (branch), ambiguous rebase destination - topic 'blue' has 3 heads t3$ c_I (unstable) ^ c_H t2$ c_G (unstable)
--- a/tests/test-topic.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-topic.t Mon Dec 11 09:33:32 2017 +0100 @@ -636,7 +636,7 @@ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg stack ### topic: fran - ### target: default (branch), ambigious rebase destination - branch 'default' has 2 heads + ### target: default (branch), ambiguous rebase destination - branch 'default' has 2 heads t1@ start on fran (current) t0^ Add file delta (base) @@ -648,7 +648,7 @@ * fran (1 changesets) $ hg stack ### topic: fran - ### target: default (branch), ambigious rebase destination - branch 'default' has 2 heads + ### target: default (branch), ambiguous rebase destination - branch 'default' has 2 heads t1: start on fran t0^ Add file delta (base current)
--- a/tests/test-unstable.t Tue Nov 14 23:15:20 2017 +0100 +++ b/tests/test-unstable.t Mon Dec 11 09:33:32 2017 +0100 @@ -302,7 +302,7 @@ $ hg evo --all --any --orphan - cannot solve split accross two branches + cannot solve split across two branches $ hg log -G @ 4:3c69ea6aa93e@default(draft) add bprimesplit2 |