Mercurial > evolve
changeset 2909:9ce092b17530
convertbookmark: properly convert stacked bookmarks
We ignores pure descendant when looking for revision to convert. This adds
support for cases were a linear stack contains multiple bookmark (or
un-bookmarked descendants exists).
In this case, some changeset are left orphan, but we'll consider the issue as
minor for now.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 01 Sep 2017 17:15:55 +0200 |
parents | 95bb27b8918c |
children | e0e8e968560a |
files | hgext3rd/topic/__init__.py tests/test-topic-debugcb.t |
diffstat | 2 files changed, 20 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext3rd/topic/__init__.py Fri Sep 01 18:46:10 2017 +0200 +++ b/hgext3rd/topic/__init__.py Fri Sep 01 17:15:55 2017 +0200 @@ -522,14 +522,13 @@ CONVERTBOOKREVSET = """ not public() and ( ancestors(bookmark(%s)) - and not ( - ancestors( - head() - and not bookmark(%s) - ) - or ancestors( - bookmark() - and not bookmark(%s) + and not ancestors( + ( + (head() and not bookmark(%s)) + or (bookmark() - bookmark(%s)) + ) - ( + descendants(bookmark(%s)) + - bookmark(%s) ) ) ) @@ -540,7 +539,7 @@ find all changesets under the bookmark and under that bookmark only. """ - return repo.revs(CONVERTBOOKREVSET, bmark, bmark, bmark) + return repo.revs(CONVERTBOOKREVSET, bmark, bmark, bmark, bmark, bmark) def _applyconvertbmarktopic(ui, repo, revs, old, bmark, tr): """apply bookmark convertion to topic
--- a/tests/test-topic-debugcb.t Fri Sep 01 18:46:10 2017 +0200 +++ b/tests/test-topic-debugcb.t Fri Sep 01 17:15:55 2017 +0200 @@ -249,21 +249,26 @@ o [0:249055fcca50] root -XXX: this should bot only put topic 'foo' on 3,4 but also 'bar' on 0,1,2 +XXX: this should avoid create orphan changesets. $ hg debugconvertbookmark --all + changed topic to "bar" on 2 revisions switching to topic foo changed topic to "foo" on 2 revisions $ hg log -G - @ [7:b14d13efcfa7] E + @ [9:b14d13efcfa7] E | topic: foo - o [6:c89ca6e70978] D + o [8:c89ca6e70978] D | topic: foo - o [3:ac05e0d05d00] C - | bookmark: bar - o [2:10f317d09e78] B - | + | o [7:a3ea0dfe6a10] C + | | topic: bar + | o [6:db1bc6aab480] B + | | topic: bar + x | [3:ac05e0d05d00] C + | | + x | [2:10f317d09e78] B + |/ o [1:e34122c9a2bf] A | o [0:249055fcca50] root