@@ -2263,7 +2263,9 @@
@command('^fold|squash',
[('r', 'rev', [], _("revision to fold")),
- ('', 'exact', None, _("only fold specified revisions"))
+ ('', 'exact', None, _("only fold specified revisions")),
+ ('', 'upto', None, _("fold from specified revisions upto the parent of"\
+ " the working copy")),
] + commitopts + commitopts2,
_('hg fold [OPTION]... [-r] REV'))
def fold(ui, repo, *revs, **opts):
@@ -2308,6 +2310,8 @@
revs = scmutil.revrange(repo, revs)
if not opts['exact']:
+ if len(revs) > 1 and not opts['upto'] and not repo['.'].rev() in revs:
+ raise util.Abort(_('ambiguous case, please use --exact or --upto'))
# Try to extend given revision starting from the working directory
extrevs = repo.revs('(%ld::.) or (.::%ld)', revs, revs)
discardedrevs = [r for r in revs if r not in extrevs]
@@ -634,7 +634,11 @@
$ hg fold -r 4 -r 6 --exact
abort: cannot fold non-linear revisions (multiple roots given)
[255]
- $ hg fold 10 1
+Two revisions in the middle of the stack, ambiguous behavior
+ $ hg fold -r '4+5'
+ abort: ambiguous case, please use --exact or --upto
+ [255]
+ $ hg fold 10 1 --upto
abort: cannot fold non-linear revisions
(given revisions are unrelated to parent of working directory)
[255]
@@ -642,14 +646,19 @@
$ hg fold -r 0
abort: cannot fold public revisions
[255]
+
+Two revisions including the parent of the working copy
+ $ hg fold -r '6 + 10'
+ 2 changesets folded
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg fold -r 5
- 3 changesets folded
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ 2 changesets folded
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg fold 6 # want to run hg fold 6
abort: hidden revision '6'!
(use --hidden to access hidden revisions)
[255]
- $ hg log -r 11 --template '{desc}\n'
+ $ hg log -r 12 --template '{desc}\n'
add 3
@@ -664,21 +673,21 @@
$ hg up 4
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
- $ hg fold --rev 4::11 --user victor --exact
+ $ hg fold --rev 4::12 --user victor --exact
2 changesets folded
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ glog
- @ 12:d26d339c513f@default(draft) add 4
+ @ 13:d26d339c513f@default(draft) add 4
|
| o 1:73d38bb17fd7@default(draft) add 1
|/
o 0:8685c6d34325@default(public) add 0
$ hg log --template '{rev}: {author}\n'
- 12: victor
+ 13: victor
1: test
0: test
- $ hg log -r 12 --template '{desc}\n'
+ $ hg log -r 13 --template '{desc}\n'
add 4
@@ -696,32 +705,32 @@
$ hg olog
4 : add 4 - test
- 11 : add 3 - test
+ 12 : add 3 - test
Test obsstore stat
$ hg debugobsstorestat
- markers total: 10
- for known precursors: 10
+ markers total: 11
+ for known precursors: 11
with parents data: 0
markers with no successors: 0
- 1 successors: 10
+ 1 successors: 11
2 successors: 0
more than 2 successors: 0
available keys:
- user: 10
+ user: 11
disconnected clusters: 1
any known node: 1
- smallest length: 10
- longer length: 10
- median length: 10
- mean length: 10
+ smallest length: 11
+ longer length: 11
+ median length: 11
+ mean length: 11
using parents data: 1
any known node: 1
- smallest length: 10
- longer length: 10
- median length: 10
- mean length: 10
+ smallest length: 11
+ longer length: 11
+ median length: 11
+ mean length: 11
Test evolving renames
@@ -741,8 +750,8 @@
1 changesets pruned
1 new unstable changesets
$ hg stab --any
- move:[15] c
- atop:[13] a
+ move:[16] c
+ atop:[14] a
working directory is now at 3742bde73477
$ hg st -C --change=tip
A c
@@ -494,6 +494,8 @@
-r --rev VALUE [+] revision to fold
--exact only fold specified revisions
+ --upto fold from specified revisions upto the parent of the
+ working copy
-m --message TEXT use text as commit message
-l --logfile FILE read commit message from file
-d --date DATE record the specified date as commit date