mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
rebase: properly handle --collapse when creating obsolescence marker
In collapse mode, that content of state is not suitable to compute obsolescence markers. We explicitly pass the resulting revision instead and use it as the successors for all elements of the rebased set.
This commit is contained in:
parent
be6378e49d
commit
4e2a2d8f61
@ -310,7 +310,10 @@ def rebase(ui, repo, **opts):
|
||||
nstate[repo[k].node()] = repo[v].node()
|
||||
|
||||
if not keepf:
|
||||
clearrebased(ui, repo, state)
|
||||
collapsedas = None
|
||||
if collapsef:
|
||||
collapsedas = newrev
|
||||
clearrebased(ui, repo, state, collapsedas)
|
||||
|
||||
if currentbookmarks:
|
||||
updatebookmarks(repo, nstate, currentbookmarks, **opts)
|
||||
@ -656,12 +659,17 @@ def buildstate(repo, dest, rebaseset, collapse):
|
||||
state.update(dict.fromkeys(detachset, nullmerge))
|
||||
return repo['.'].rev(), dest.rev(), state
|
||||
|
||||
def clearrebased(ui, repo, state):
|
||||
"""dispose of rebased revision at the end of the rebase"""
|
||||
def clearrebased(ui, repo, state, collapsedas=None):
|
||||
"""dispose of rebased revision at the end of the rebase
|
||||
|
||||
If `collapsedas` is not None, the rebase was a collapse whose result if the
|
||||
`collapsedas` node."""
|
||||
if obsolete._enabled:
|
||||
markers = []
|
||||
for rev, newrev in sorted(state.items()):
|
||||
if newrev >= 0:
|
||||
if collapsedas is not None:
|
||||
newrev = collapsedas
|
||||
markers.append((repo[rev], (repo[newrev],)))
|
||||
if markers:
|
||||
obsolete.createmarkers(repo, markers)
|
||||
|
@ -173,3 +173,52 @@ set.
|
||||
|
||||
$ cd ..
|
||||
|
||||
collapse rebase
|
||||
---------------------------------
|
||||
|
||||
$ hg clone base collapse
|
||||
updating to branch default
|
||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
||||
$ cd collapse
|
||||
$ hg rebase -s 42ccdea3bb16 -d eea13746799a --collapse
|
||||
$ hg log -G
|
||||
@ 8:4dc2197e807b Collapsed revision
|
||||
|
|
||||
| o 7:02de42196ebe H
|
||||
| |
|
||||
o | 6:eea13746799a G
|
||||
|\|
|
||||
| o 5:24b6387c8c8c F
|
||||
| |
|
||||
o | 4:9520eea781bc E
|
||||
|/
|
||||
o 0:cd010b8cd998 A
|
||||
|
||||
$ hg log --hidden -G
|
||||
@ 8:4dc2197e807b Collapsed revision
|
||||
|
|
||||
| o 7:02de42196ebe H
|
||||
| |
|
||||
o | 6:eea13746799a G
|
||||
|\|
|
||||
| o 5:24b6387c8c8c F
|
||||
| |
|
||||
o | 4:9520eea781bc E
|
||||
|/
|
||||
| x 3:32af7686d403 D
|
||||
| |
|
||||
| x 2:5fddd98957c8 C
|
||||
| |
|
||||
| x 1:42ccdea3bb16 B
|
||||
|/
|
||||
o 0:cd010b8cd998 A
|
||||
|
||||
$ hg id --debug
|
||||
4dc2197e807bae9817f09905b50ab288be2dbbcf tip
|
||||
$ hg debugobsolete
|
||||
42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 {'date': '*', 'user': 'test'} (glob)
|
||||
5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 {'date': '*', 'user': 'test'} (glob)
|
||||
32af7686d403cf45b5d95f2d70cebea587ac806a 4dc2197e807bae9817f09905b50ab288be2dbbcf 0 {'date': '*', 'user': 'test'} (glob)
|
||||
|
||||
$ cd ..
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user