mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
amend: allow amend of non-head when obsolete is enabled
Obsolescence marker can represent this situation just fine. The old version is marked as precursor of the new changeset. All its descendants become "unstable". If obsolescence is not enabled we keep the current behavior of aborting. This new behavior only applies when obsolete is enabled and is subject to future discussion and changes.
This commit is contained in:
parent
1c9929a557
commit
bc7f0f7ffa
@ -1296,7 +1296,7 @@ def commit(ui, repo, *pats, **opts):
|
||||
raise util.Abort(_('cannot amend merge changesets'))
|
||||
if len(repo[None].parents()) > 1:
|
||||
raise util.Abort(_('cannot amend while merging'))
|
||||
if old.children():
|
||||
if (not obsolete._enabled) and old.children():
|
||||
raise util.Abort(_('cannot amend changeset with children'))
|
||||
|
||||
e = cmdutil.commiteditor
|
||||
|
@ -458,3 +458,23 @@ Test that amend does not make it easy to create obsoletescence cycle
|
||||
$ hg commit --amend
|
||||
$ hg id
|
||||
b99e5df575f7 (a) tip
|
||||
|
||||
Test ui.prevent-unstable
|
||||
---------------------------------------------------------------------
|
||||
|
||||
$ hg up '.^'
|
||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
||||
$ echo 'b' >> a
|
||||
$ hg log --style compact -r 'children(.)'
|
||||
18[tip]:11 b99e5df575f7 1970-01-01 00:00 +0000 test
|
||||
babar
|
||||
|
||||
$ hg commit --amend
|
||||
$ hg log -r 'unstable()'
|
||||
changeset: 18:b99e5df575f7
|
||||
branch: a
|
||||
parent: 11:3334b7925910
|
||||
user: test
|
||||
date: Thu Jan 01 00:00:00 1970 +0000
|
||||
summary: babar
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user