test-strip.t
1407 lines
| 40.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-strip.t
|
r19827 | $ echo "[extensions]" >> $HGRCPATH | ||
$ echo "strip=" >> $HGRCPATH | ||||
|
r33087 | $ echo "drawdag=$TESTDIR/drawdag.py" >> $HGRCPATH | ||
|
r19827 | |||
$ restore() { | ||||
> hg unbundle -q .hg/strip-backup/* | ||||
> rm .hg/strip-backup/* | ||||
> } | ||||
$ teststrip() { | ||||
> hg up -C $1 | ||||
> echo % before update $1, strip $2 | ||||
r42901 | > hg log -G -T '{rev}:{node}' | |||
|
r19827 | > hg --traceback strip $2 | ||
> echo % after update $1, strip $2 | ||||
r42901 | > hg log -G -T '{rev}:{node}' | |||
|
r19827 | > restore | ||
> } | ||||
$ hg init test | ||||
$ cd test | ||||
$ echo foo > bar | ||||
$ hg ci -Ama | ||||
adding bar | ||||
$ echo more >> bar | ||||
$ hg ci -Amb | ||||
$ echo blah >> bar | ||||
$ hg ci -Amc | ||||
$ hg up 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo blah >> bar | ||||
$ hg ci -Amd | ||||
created new head | ||||
$ echo final >> bar | ||||
$ hg ci -Ame | ||||
$ hg log | ||||
changeset: 4:443431ffac4f | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: e | ||||
changeset: 3:65bd5f99a4a3 | ||||
parent: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: d | ||||
changeset: 2:264128213d29 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: c | ||||
changeset: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: b | ||||
changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
$ teststrip 4 4 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
% before update 4, strip 4 | ||||
r42901 | @ 4:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | |||
| | ||||
o 3:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
| | ||||
| o 2:264128213d290d868c54642d13aeaa3675551a78 | ||||
|/ | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
% after update 4, strip 4 | ||||
r42901 | @ 3:65bd5f99a4a376cdea23a1153f07856b0d881d64 | |||
| | ||||
| o 2:264128213d290d868c54642d13aeaa3675551a78 | ||||
|/ | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
$ teststrip 4 3 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
% before update 4, strip 3 | ||||
r42901 | @ 4:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | |||
| | ||||
o 3:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
| | ||||
| o 2:264128213d290d868c54642d13aeaa3675551a78 | ||||
|/ | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
% after update 4, strip 3 | ||||
r42901 | o 2:264128213d290d868c54642d13aeaa3675551a78 | |||
| | ||||
@ 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
$ teststrip 1 4 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
% before update 1, strip 4 | ||||
r42901 | o 4:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | |||
| | ||||
o 3:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
| | ||||
| o 2:264128213d290d868c54642d13aeaa3675551a78 | ||||
|/ | ||||
@ 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
% after update 1, strip 4 | ||||
r42901 | o 3:65bd5f99a4a376cdea23a1153f07856b0d881d64 | |||
| | ||||
| o 2:264128213d290d868c54642d13aeaa3675551a78 | ||||
|/ | ||||
@ 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
$ teststrip 4 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
% before update 4, strip 2 | ||||
r42901 | @ 4:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | |||
| | ||||
o 3:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
| | ||||
| o 2:264128213d290d868c54642d13aeaa3675551a78 | ||||
|/ | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
% after update 4, strip 2 | ||||
r42901 | @ 3:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | |||
| | ||||
o 2:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
| | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
$ teststrip 4 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
% before update 4, strip 1 | ||||
r42901 | @ 4:264128213d290d868c54642d13aeaa3675551a78 | |||
| | ||||
| o 3:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | ||||
| | | ||||
| o 2:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
|/ | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
% after update 4, strip 1 | ||||
r42901 | @ 0:9ab35a2d17cb64271241ea881efcc19dd953215b | |||
|
r19827 | |||
$ teststrip null 4 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
% before update null, strip 4 | ||||
r42901 | o 4:264128213d290d868c54642d13aeaa3675551a78 | |||
| | ||||
| o 3:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | ||||
| | | ||||
| o 2:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
|/ | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||
% after update null, strip 4 | ||||
r42901 | o 3:443431ffac4f5b5a19b0b6c298a21b7ba736bcce | |||
| | ||||
o 2:65bd5f99a4a376cdea23a1153f07856b0d881d64 | ||||
| | ||||
o 1:ef3a871183d7199c541cc140218298bbfcc6c28a | ||||
| | ||||
o 0:9ab35a2d17cb64271241ea881efcc19dd953215b | ||||
|
r19827 | |||
$ hg log | ||||
changeset: 4:264128213d29 | ||||
tag: tip | ||||
parent: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: c | ||||
changeset: 3:443431ffac4f | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: e | ||||
changeset: 2:65bd5f99a4a3 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: d | ||||
changeset: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: b | ||||
changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
|
r23898 | $ hg up -C 4 | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg parents | ||||
changeset: 4:264128213d29 | ||||
tag: tip | ||||
parent: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: c | ||||
|
r23939 | |||
|
r26423 | $ hg --traceback strip 4 | ||
|
r23898 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
|
r35394 | saved backup bundle to $TESTTMP/test/.hg/strip-backup/264128213d29-0b39d6bf-backup.hg | ||
|
r23898 | $ hg parents | ||
changeset: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: b | ||||
$ hg debugbundle .hg/strip-backup/* | ||||
|
r34027 | Stream params: {Compression: BZ} | ||
|
r37919 | changegroup -- {nbchanges: 1, version: 02} (mandatory: True) | ||
|
r26929 | 264128213d290d868c54642d13aeaa3675551a78 | ||
|
r37920 | cache:rev-branch-cache -- {} (mandatory: False) | ||
|
r37919 | phase-heads -- {} (mandatory: True) | ||
|
r33032 | 264128213d290d868c54642d13aeaa3675551a78 draft | ||
|
r37354 | $ hg unbundle .hg/strip-backup/* | ||
|
r24073 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
|
r37354 | added 1 changesets with 0 changes to 1 files (+1 heads) | ||
|
r39516 | new changesets 264128213d29 (1 drafts) | ||
|
r24073 | (run 'hg heads' to see heads, 'hg merge' to merge) | ||
$ rm .hg/strip-backup/* | ||||
$ hg log --graph | ||||
o changeset: 4:264128213d29 | ||||
| tag: tip | ||||
| parent: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
| o changeset: 3:443431ffac4f | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: e | ||||
| | | ||||
| o changeset: 2:65bd5f99a4a3 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
@ changeset: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
|
r19827 | $ hg up -C 2 | ||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg merge 4 | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
before strip of merge parent | ||||
$ hg parents | ||||
changeset: 2:65bd5f99a4a3 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: d | ||||
changeset: 4:264128213d29 | ||||
tag: tip | ||||
parent: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: c | ||||
|
r42670 | ##strip not allowed with merge in progress | ||
|
r19827 | $ hg strip 4 | ||
|
r42670 | abort: outstanding uncommitted merge | ||
|
r42732 | (use 'hg commit' or 'hg merge --abort') | ||
|
r42670 | [255] | ||
##strip allowed --force with merge in progress | ||||
$ hg strip 4 --force | ||||
|
r19827 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
after strip of merge parent | ||||
$ hg parents | ||||
changeset: 1:ef3a871183d7 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: b | ||||
$ restore | ||||
$ hg up | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r32698 | updated to "264128213d29: c" | ||
|
r28029 | 1 other heads for branch "default" | ||
|
r20117 | $ hg log -G | ||
|
r19827 | @ changeset: 4:264128213d29 | ||
| tag: tip | ||||
| parent: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
| o changeset: 3:443431ffac4f | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: e | ||||
| | | ||||
| o changeset: 2:65bd5f99a4a3 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
o changeset: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
2 is parent of 3, only one strip should happen | ||||
$ hg strip "roots(2)" 3 | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
|
r20117 | $ hg log -G | ||
|
r19827 | @ changeset: 2:264128213d29 | ||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
o changeset: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
$ restore | ||||
|
r20117 | $ hg log -G | ||
|
r19827 | o changeset: 4:443431ffac4f | ||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
o changeset: 3:65bd5f99a4a3 | ||||
| parent: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
| @ changeset: 2:264128213d29 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
o changeset: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
|
r29952 | Failed hook while applying "saveheads" bundle. | ||
$ hg strip 2 --config hooks.pretxnchangegroup.bad=false | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
transaction abort! | ||||
rollback completed | ||||
|
r29954 | strip failed, backup bundle stored in '$TESTTMP/test/.hg/strip-backup/*-backup.hg' (glob) | ||
|
r29953 | strip failed, unrecovered changes stored in '$TESTTMP/test/.hg/strip-backup/*-temp.hg' (glob) | ||
(fix the problem, then recover the changesets with "hg unbundle '$TESTTMP/test/.hg/strip-backup/*-temp.hg'") (glob) | ||||
|
r29952 | abort: pretxnchangegroup.bad hook exited with status 1 | ||
[255] | ||||
$ restore | ||||
$ hg log -G | ||||
o changeset: 4:443431ffac4f | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: e | ||||
| | ||||
o changeset: 3:65bd5f99a4a3 | ||||
| parent: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
| o changeset: 2:264128213d29 | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: c | ||||
| | ||||
@ changeset: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
|
r19827 | |||
2 different branches: 2 strips | ||||
$ hg strip 2 4 | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
|
r20117 | $ hg log -G | ||
|
r19827 | o changeset: 2:65bd5f99a4a3 | ||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: d | ||||
| | ||||
@ changeset: 1:ef3a871183d7 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
$ restore | ||||
2 different branches and a common ancestor: 1 strip | ||||
$ hg strip 1 "2|4" | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
$ restore | ||||
|
r20885 | verify fncache is kept up-to-date | ||
$ touch a | ||||
$ hg ci -qAm a | ||||
|
r37433 | #if repofncache | ||
|
r20885 | $ cat .hg/store/fncache | sort | ||
data/a.i | ||||
data/bar.i | ||||
|
r37433 | #endif | ||
|
r37356 | |||
|
r20885 | $ hg strip tip | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
|
r37433 | #if repofncache | ||
|
r20885 | $ cat .hg/store/fncache | ||
data/bar.i | ||||
|
r37433 | #endif | ||
|
r20885 | |||
|
r19827 | stripping an empty revset | ||
$ hg strip "1 and not 1" | ||||
abort: empty revision set | ||||
[255] | ||||
remove branchy history for qimport tests | ||||
$ hg strip 3 | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
strip of applied mq should cleanup status file | ||||
$ echo "mq=" >> $HGRCPATH | ||||
$ hg up -C 3 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo fooagain >> bar | ||||
$ hg ci -mf | ||||
$ hg qimport -r tip:2 | ||||
applied patches before strip | ||||
$ hg qapplied | ||||
|
r26736 | d | ||
e | ||||
f | ||||
|
r19827 | |||
stripping revision in queue | ||||
$ hg strip 3 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
applied patches after stripping rev in queue | ||||
$ hg qapplied | ||||
|
r26736 | d | ||
|
r19827 | |||
stripping ancestor of queue | ||||
$ hg strip 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
applied patches after stripping ancestor of queue | ||||
$ hg qapplied | ||||
|
r19951 | Verify strip protects against stripping wc parent when there are uncommitted mods | ||
|
r19827 | |||
$ echo b > b | ||||
|
r24709 | $ echo bb > bar | ||
|
r19827 | $ hg add b | ||
$ hg ci -m 'b' | ||||
$ hg log --graph | ||||
|
r24709 | @ changeset: 1:76dcf9fab855 | ||
|
r19827 | | tag: tip | ||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
o changeset: 0:9ab35a2d17cb | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
|
r24709 | $ hg up 0 | ||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo c > bar | ||||
$ hg up -t false | ||||
merging bar | ||||
merging bar failed! | ||||
1 files updated, 0 files merged, 0 files removed, 1 files unresolved | ||||
use 'hg resolve' to retry unresolved file merges | ||||
[1] | ||||
$ hg sum | ||||
parent: 1:76dcf9fab855 tip | ||||
b | ||||
branch: default | ||||
commit: 1 modified, 1 unknown, 1 unresolved | ||||
update: (current) | ||||
|
r25382 | phases: 2 draft | ||
|
r24709 | mq: 3 unapplied | ||
|
r19827 | |||
|
r44818 | $ hg log --graph | ||
@ changeset: 1:76dcf9fab855 | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: b | ||||
| | ||||
|
r44819 | % changeset: 0:9ab35a2d17cb | ||
|
r44818 | user: test | ||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
|
r19827 | $ echo c > b | ||
$ hg strip tip | ||||
|
r42691 | abort: uncommitted changes | ||
|
r19827 | [255] | ||
$ hg strip tip --keep | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
$ hg log --graph | ||||
@ changeset: 0:9ab35a2d17cb | ||||
tag: tip | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | ||||
$ hg status | ||||
M bar | ||||
? b | ||||
|
r24709 | ? bar.orig | ||
$ rm bar.orig | ||||
$ hg sum | ||||
parent: 0:9ab35a2d17cb tip | ||||
a | ||||
branch: default | ||||
commit: 1 modified, 1 unknown | ||||
update: (current) | ||||
|
r25382 | phases: 1 draft | ||
|
r24709 | mq: 3 unapplied | ||
|
r19827 | |||
Strip adds, removes, modifies with --keep | ||||
$ touch b | ||||
$ hg add b | ||||
$ hg commit -mb | ||||
$ touch c | ||||
... with a clean working dir | ||||
$ hg add c | ||||
$ hg rm bar | ||||
$ hg commit -mc | ||||
$ hg status | ||||
$ hg strip --keep tip | ||||
saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||||
$ hg status | ||||
! bar | ||||
? c | ||||
... with a dirty working dir | ||||
$ hg add c | ||||
$ hg rm bar | ||||
$ hg commit -mc | ||||
$ hg status | ||||
$ echo b > b | ||||
$ echo d > d | ||||
$ hg strip --keep tip | ||||
|
r27177 | saved backup bundle to $TESTTMP/test/.hg/strip-backup/*-backup.hg (glob) | ||
|
r19827 | $ hg status | ||
M b | ||||
! bar | ||||
? c | ||||
? d | ||||
|
r27177 | |||
... after updating the dirstate | ||||
$ hg add c | ||||
$ hg commit -mc | ||||
$ hg rm c | ||||
$ hg commit -mc | ||||
$ hg strip --keep '.^' -q | ||||
|
r19827 | $ cd .. | ||
stripping many nodes on a complex graph (issue3299) | ||||
$ hg init issue3299 | ||||
$ cd issue3299 | ||||
$ hg debugbuilddag '@a.:a@b.:b.:x<a@a.:a<b@b.:b<a@a.:a' | ||||
$ hg strip 'not ancestors(x)' | ||||
saved backup bundle to $TESTTMP/issue3299/.hg/strip-backup/*-backup.hg (glob) | ||||
test hg strip -B bookmark | ||||
$ cd .. | ||||
$ hg init bookmarks | ||||
$ cd bookmarks | ||||
|
r27030 | $ hg debugbuilddag '..<2.*1/2:m<2+3:c<m+3:a<2.:b<m+2:d<2.:e<m+1:f' | ||
|
r19827 | $ hg bookmark -r 'a' 'todelete' | ||
$ hg bookmark -r 'b' 'B' | ||||
$ hg bookmark -r 'b' 'nostrip' | ||||
$ hg bookmark -r 'c' 'delete' | ||||
|
r27030 | $ hg bookmark -r 'd' 'multipledelete1' | ||
$ hg bookmark -r 'e' 'multipledelete2' | ||||
$ hg bookmark -r 'f' 'singlenode1' | ||||
$ hg bookmark -r 'f' 'singlenode2' | ||||
|
r19827 | $ hg up -C todelete | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
|
r21503 | (activating bookmark todelete) | ||
|
r19827 | $ hg strip -B nostrip | ||
bookmark 'nostrip' deleted | ||||
abort: empty revision set | ||||
[255] | ||||
$ hg strip -B todelete | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob) | ||||
|
r21847 | bookmark 'todelete' deleted | ||
|
r19827 | $ hg id -ir dcbb326fdec2 | ||
abort: unknown revision 'dcbb326fdec2'! | ||||
[255] | ||||
$ hg id -ir d62d843c9a01 | ||||
d62d843c9a01 | ||||
$ hg bookmarks | ||||
B 9:ff43616e5d0f | ||||
delete 6:2702dd0c91e7 | ||||
|
r27030 | multipledelete1 11:e46a4836065c | ||
multipledelete2 12:b4594d867745 | ||||
singlenode1 13:43227190fef8 | ||||
singlenode2 13:43227190fef8 | ||||
$ hg strip -B multipledelete1 -B multipledelete2 | ||||
|
r35394 | saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/e46a4836065c-89ec65c2-backup.hg | ||
|
r27030 | bookmark 'multipledelete1' deleted | ||
bookmark 'multipledelete2' deleted | ||||
$ hg id -ir e46a4836065c | ||||
abort: unknown revision 'e46a4836065c'! | ||||
[255] | ||||
$ hg id -ir b4594d867745 | ||||
abort: unknown revision 'b4594d867745'! | ||||
[255] | ||||
$ hg strip -B singlenode1 -B singlenode2 | ||||
|
r35394 | saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/43227190fef8-8da858f2-backup.hg | ||
|
r27030 | bookmark 'singlenode1' deleted | ||
bookmark 'singlenode2' deleted | ||||
$ hg id -ir 43227190fef8 | ||||
abort: unknown revision '43227190fef8'! | ||||
[255] | ||||
$ hg strip -B unknownbookmark | ||||
abort: bookmark 'unknownbookmark' not found | ||||
[255] | ||||
$ hg strip -B unknownbookmark1 -B unknownbookmark2 | ||||
abort: bookmark 'unknownbookmark1,unknownbookmark2' not found | ||||
[255] | ||||
$ hg strip -B delete -B unknownbookmark | ||||
abort: bookmark 'unknownbookmark' not found | ||||
[255] | ||||
|
r19827 | $ hg strip -B delete | ||
|
r21847 | saved backup bundle to $TESTTMP/bookmarks/.hg/strip-backup/*-backup.hg (glob) | ||
|
r19827 | bookmark 'delete' deleted | ||
$ hg id -ir 6:2702dd0c91e7 | ||||
abort: unknown revision '2702dd0c91e7'! | ||||
[255] | ||||
|
r21847 | $ hg update B | ||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(activating bookmark B) | ||||
$ echo a > a | ||||
$ hg add a | ||||
$ hg strip -B B | ||||
|
r42691 | abort: uncommitted changes | ||
|
r21847 | [255] | ||
$ hg bookmarks | ||||
* B 6:ff43616e5d0f | ||||
|
r19827 | |||
|
r21854 | Make sure no one adds back a -b option: | ||
$ hg strip -b tip | ||||
hg strip: option -b not recognized | ||||
|
r28288 | hg strip [-k] [-f] [-B bookmark] [-r] REV... | ||
|
r21854 | |||
strip changesets and all their descendants from the repository | ||||
|
r29974 | (use 'hg help -e strip' to show help for the strip extension) | ||
|
r21854 | |||
|
r22117 | options ([+] can be repeated): | ||
|
r21854 | |||
r40382 | -r --rev REV [+] strip specified revision (optional, can specify | |||
revisions without this option) | ||||
-f --force force removal of changesets, discard uncommitted | ||||
changes (no backup) | ||||
--no-backup do not save backup bundle | ||||
-k --keep do not modify working directory during strip | ||||
-B --bookmark BOOKMARK [+] remove revs only reachable from given bookmark | ||||
--mq operate on patch repository | ||||
|
r21854 | |||
|
r29974 | (use 'hg strip -h' to show more help) | ||
|
r21854 | [255] | ||
|
r23835 | |||
$ cd .. | ||||
Verify bundles don't get overwritten: | ||||
$ hg init doublebundle | ||||
$ cd doublebundle | ||||
$ touch a | ||||
$ hg commit -Aqm a | ||||
$ touch b | ||||
$ hg commit -Aqm b | ||||
$ hg strip -r 0 | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-e68910bd-backup.hg | ||
|
r23835 | $ ls .hg/strip-backup | ||
3903775176ed-e68910bd-backup.hg | ||||
|
r37434 | #if repobundlerepo | ||
|
r23835 | $ hg pull -q -r 3903775176ed .hg/strip-backup/3903775176ed-e68910bd-backup.hg | ||
$ hg strip -r 0 | ||||
|
r35394 | saved backup bundle to $TESTTMP/doublebundle/.hg/strip-backup/3903775176ed-54390173-backup.hg | ||
|
r23835 | $ ls .hg/strip-backup | ||
3903775176ed-54390173-backup.hg | ||||
3903775176ed-e68910bd-backup.hg | ||||
|
r37434 | #endif | ||
|
r25677 | $ cd .. | ||
Test that we only bundle the stripped changesets (issue4736) | ||||
------------------------------------------------------------ | ||||
|
r26173 | initialization (previous repo is empty anyway) | ||
|
r25677 | |||
$ hg init issue4736 | ||||
$ cd issue4736 | ||||
$ echo a > a | ||||
$ hg add a | ||||
$ hg commit -m commitA | ||||
$ echo b > b | ||||
$ hg add b | ||||
$ hg commit -m commitB | ||||
$ echo c > c | ||||
$ hg add c | ||||
$ hg commit -m commitC | ||||
$ hg up 'desc(commitB)' | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo d > d | ||||
$ hg add d | ||||
$ hg commit -m commitD | ||||
created new head | ||||
$ hg up 'desc(commitC)' | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg merge 'desc(commitD)' | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci -m 'mergeCD' | ||||
$ hg log -G | ||||
@ changeset: 4:d8db9d137221 | ||||
|\ tag: tip | ||||
| | parent: 2:5c51d8d6557d | ||||
| | parent: 3:6625a5168474 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: mergeCD | ||||
| | | ||||
| o changeset: 3:6625a5168474 | ||||
| | parent: 1:eca11cf91c71 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: commitD | ||||
| | | ||||
o | changeset: 2:5c51d8d6557d | ||||
|/ user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitC | ||||
| | ||||
o changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
Check bundle behavior: | ||||
$ hg bundle -r 'desc(mergeCD)' --base 'desc(commitC)' ../issue4736.hg | ||||
2 changesets found | ||||
|
r37434 | #if repobundlerepo | ||
|
r25677 | $ hg log -r 'bundle()' -R ../issue4736.hg | ||
changeset: 3:6625a5168474 | ||||
parent: 1:eca11cf91c71 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitD | ||||
changeset: 4:d8db9d137221 | ||||
tag: tip | ||||
parent: 2:5c51d8d6557d | ||||
parent: 3:6625a5168474 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: mergeCD | ||||
|
r37434 | #endif | ||
|
r25677 | |||
check strip behavior | ||||
$ hg --config extensions.strip= strip 'desc(commitD)' --debug | ||||
resolving manifests | ||||
branchmerge: False, force: True, partial: False | ||||
ancestor: d8db9d137221+, local: d8db9d137221+, remote: eca11cf91c71 | ||||
c: other deleted -> r | ||||
removing c | ||||
d: other deleted -> r | ||||
removing d | ||||
|
r28318 | starting 4 threads for background file closing (?) | ||
|
r25677 | 0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||
2 changesets found | ||||
list of changesets: | ||||
6625a516847449b6f0fa3737b9ba56e9f0f3032c | ||||
d8db9d1372214336d2b5570f20ee468d2c72fa8b | ||||
|
r36983 | bundle2-output-bundle: "HG20", (1 params) 3 parts total | ||
|
r29593 | bundle2-output-part: "changegroup" (params: 1 mandatory 1 advisory) streamed payload | ||
|
r37920 | bundle2-output-part: "cache:rev-branch-cache" (advisory) streamed payload | ||
|
r33032 | bundle2-output-part: "phase-heads" 24 bytes payload | ||
|
r35394 | saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/6625a5168474-345bb43d-backup.hg | ||
|
r32267 | updating the branch cache | ||
|
r42805 | invalid branch cache (served): tip differs | ||
|
r25677 | $ hg log -G | ||
o changeset: 2:5c51d8d6557d | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitC | ||||
| | ||||
@ changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
strip backup content | ||||
|
r37434 | #if repobundlerepo | ||
|
r25677 | $ hg log -r 'bundle()' -R .hg/strip-backup/6625a5168474-*-backup.hg | ||
changeset: 3:6625a5168474 | ||||
parent: 1:eca11cf91c71 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitD | ||||
changeset: 4:d8db9d137221 | ||||
tag: tip | ||||
parent: 2:5c51d8d6557d | ||||
parent: 3:6625a5168474 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: mergeCD | ||||
|
r37434 | |||
#endif | ||||
|
r29196 | Check that the phase cache is properly invalidated after a strip with bookmark. | ||
$ cat > ../stripstalephasecache.py << EOF | ||||
> from mercurial import extensions, localrepo | ||||
> def transactioncallback(orig, repo, desc, *args, **kwargs): | ||||
> def test(transaction): | ||||
> # observe cache inconsistency | ||||
> try: | ||||
|
r35848 | > [repo.changelog.node(r) for r in repo.revs(b"not public()")] | ||
|
r29196 | > except IndexError: | ||
|
r35848 | > repo.ui.status(b"Index error!\n") | ||
|
r29196 | > transaction = orig(repo, desc, *args, **kwargs) | ||
> # warm up the phase cache | ||||
|
r35848 | > list(repo.revs(b"not public()")) | ||
|
r35864 | > if desc != b'strip': | ||
|
r35848 | > transaction.addpostclose(b"phase invalidation test", test) | ||
|
r29196 | > return transaction | ||
> def extsetup(ui): | ||||
|
r35848 | > extensions.wrapfunction(localrepo.localrepository, b"transaction", | ||
|
r29196 | > transactioncallback) | ||
> EOF | ||||
$ hg up -C 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo k > k | ||||
$ hg add k | ||||
$ hg commit -m commitK | ||||
$ echo l > l | ||||
$ hg add l | ||||
$ hg commit -m commitL | ||||
$ hg book -r tip blah | ||||
$ hg strip ".^" --config extensions.crash=$TESTTMP/stripstalephasecache.py | ||||
0 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/8f0b4384875c-4fa10deb-backup.hg | ||
|
r29196 | $ hg up -C 1 | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r26012 | |||
Error during post-close callback of the strip transaction | ||||
(They should be gracefully handled and reported) | ||||
$ cat > ../crashstrip.py << EOF | ||||
> from mercurial import error | ||||
> def reposetup(ui, repo): | ||||
> class crashstriprepo(repo.__class__): | ||||
> def transaction(self, desc, *args, **kwargs): | ||||
|
r33540 | > tr = super(crashstriprepo, self).transaction(desc, *args, **kwargs) | ||
|
r35848 | > if desc == b'strip': | ||
> def crash(tra): raise error.Abort(b'boom') | ||||
> tr.addpostclose(b'crash', crash) | ||||
|
r26012 | > return tr | ||
> repo.__class__ = crashstriprepo | ||||
> EOF | ||||
$ hg strip tip --config extensions.crash=$TESTTMP/crashstrip.py | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg | ||
strip failed, backup bundle stored in '$TESTTMP/issue4736/.hg/strip-backup/5c51d8d6557d-70daef06-backup.hg' | ||||
|
r26012 | abort: boom | ||
[255] | ||||
|
r34622 | test stripping a working directory parent doesn't switch named branches | ||
$ hg log -G | ||||
@ changeset: 1:eca11cf91c71 | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
$ hg branch new-branch | ||||
marked working directory as branch new-branch | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ hg ci -m "start new branch" | ||||
$ echo 'foo' > foo.txt | ||||
$ hg ci -Aqm foo | ||||
$ hg up default | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo 'bar' > bar.txt | ||||
$ hg ci -Aqm bar | ||||
$ hg up new-branch | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg merge default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg log -G | ||||
@ changeset: 4:35358f982181 | ||||
| tag: tip | ||||
| parent: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: bar | ||||
| | ||||
| @ changeset: 3:f62c6c09b707 | ||||
| | branch: new-branch | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: foo | ||||
| | | ||||
| o changeset: 2:b1d33a8cadd9 | ||||
|/ branch: new-branch | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: start new branch | ||||
| | ||||
o changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
$ hg strip --force -r 35358f982181 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-50d992d4-backup.hg | ||
|
r34622 | $ hg log -G | ||
@ changeset: 3:f62c6c09b707 | ||||
| branch: new-branch | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: foo | ||||
| | ||||
o changeset: 2:b1d33a8cadd9 | ||||
| branch: new-branch | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: start new branch | ||||
| | ||||
o changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
$ hg up default | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo 'bar' > bar.txt | ||||
$ hg ci -Aqm bar | ||||
$ hg up new-branch | ||||
1 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg merge default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg ci -m merge | ||||
$ hg log -G | ||||
@ changeset: 5:4cf5e92caec2 | ||||
|\ branch: new-branch | ||||
| | tag: tip | ||||
| | parent: 3:f62c6c09b707 | ||||
| | parent: 4:35358f982181 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: merge | ||||
| | | ||||
| o changeset: 4:35358f982181 | ||||
| | parent: 1:eca11cf91c71 | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: bar | ||||
| | | ||||
o | changeset: 3:f62c6c09b707 | ||||
| | branch: new-branch | ||||
| | user: test | ||||
| | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| | summary: foo | ||||
| | | ||||
o | changeset: 2:b1d33a8cadd9 | ||||
|/ branch: new-branch | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: start new branch | ||||
| | ||||
o changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
$ hg strip -r 35358f982181 | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg | ||
|
r34622 | $ hg log -G | ||
@ changeset: 3:f62c6c09b707 | ||||
| branch: new-branch | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: foo | ||||
| | ||||
o changeset: 2:b1d33a8cadd9 | ||||
| branch: new-branch | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: start new branch | ||||
| | ||||
o changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
|
r37354 | $ hg unbundle -u $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg | ||
|
r34622 | adding changesets | ||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 1 changes to 1 files | ||||
|
r39516 | new changesets 35358f982181:4cf5e92caec2 (2 drafts) | ||
|
r34622 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
$ hg strip -k -r 35358f982181 | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/35358f982181-a6f020aa-backup.hg | ||
|
r34622 | $ hg log -G | ||
@ changeset: 3:f62c6c09b707 | ||||
| branch: new-branch | ||||
| tag: tip | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: foo | ||||
| | ||||
o changeset: 2:b1d33a8cadd9 | ||||
| branch: new-branch | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: start new branch | ||||
| | ||||
o changeset: 1:eca11cf91c71 | ||||
| user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: commitB | ||||
| | ||||
o changeset: 0:105141ef12d0 | ||||
user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: commitA | ||||
$ hg diff | ||||
diff -r f62c6c09b707 bar.txt | ||||
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 | ||||
+++ b/bar.txt Thu Jan 01 00:00:00 1970 +0000 | ||||
@@ -0,0 +1,1 @@ | ||||
+bar | ||||
|
r33087 | Use delayedstrip to strip inside a transaction | ||
|
r26012 | |||
|
r33087 | $ cd $TESTTMP | ||
$ hg init delayedstrip | ||||
$ cd delayedstrip | ||||
$ hg debugdrawdag <<'EOS' | ||||
> D | ||||
> | | ||||
> C F H # Commit on top of "I", | ||||
> | |/| # Strip B+D+I+E+G+H+Z | ||||
> I B E G | ||||
> \|/ | ||||
> A Z | ||||
> EOS | ||||
|
r33088 | $ cp -R . ../scmutilcleanup | ||
|
r33087 | |||
$ hg up -C I | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo 3 >> I | ||||
$ cat > $TESTTMP/delayedstrip.py <<EOF | ||||
|
r33989 | > from __future__ import absolute_import | ||
|
r34454 | > from mercurial import commands, registrar, repair | ||
> cmdtable = {} | ||||
> command = registrar.command(cmdtable) | ||||
|
r35848 | > @command(b'testdelayedstrip') | ||
|
r34454 | > def testdelayedstrip(ui, repo): | ||
|
r33087 | > def getnodes(expr): | ||
> return [repo.changelog.node(r) for r in repo.revs(expr)] | ||||
> with repo.wlock(): | ||||
> with repo.lock(): | ||||
|
r35848 | > with repo.transaction(b'delayedstrip'): | ||
> repair.delayedstrip(ui, repo, getnodes(b'B+I+Z+D+E'), b'J') | ||||
> repair.delayedstrip(ui, repo, getnodes(b'G+H+Z'), b'I') | ||||
> commands.commit(ui, repo, message=b'J', date=b'0 0') | ||||
|
r33087 | > EOF | ||
|
r34454 | $ hg testdelayedstrip --config extensions.t=$TESTTMP/delayedstrip.py | ||
|
r33087 | warning: orphaned descendants detected, not stripping 08ebfeb61bac, 112478962961, 7fb047a69f22 | ||
|
r35394 | saved backup bundle to $TESTTMP/delayedstrip/.hg/strip-backup/f585351a92f8-17475721-I.hg | ||
|
r34454 | |||
|
r33087 | $ hg log -G -T '{rev}:{node|short} {desc}' -r 'sort(all(), topo)' | ||
@ 6:2f2d51af6205 J | ||||
| | ||||
o 3:08ebfeb61bac I | ||||
| | ||||
| o 5:64a8289d2492 F | ||||
| | | ||||
| o 2:7fb047a69f22 E | ||||
|/ | ||||
| o 4:26805aba1e60 C | ||||
| | | ||||
| o 1:112478962961 B | ||||
|/ | ||||
o 0:426bada5c675 A | ||||
|
r33088 | Test high-level scmutil.cleanupnodes API | ||
$ cd $TESTTMP/scmutilcleanup | ||||
$ hg debugdrawdag <<'EOS' | ||||
> D2 F2 G2 # D2, F2, G2 are replacements for D, F, G | ||||
> | | | | ||||
> C H G | ||||
> EOS | ||||
$ for i in B C D F G I Z; do | ||||
> hg bookmark -i -r $i b-$i | ||||
> done | ||||
|
r33331 | $ hg bookmark -i -r E 'b-F@divergent1' | ||
$ hg bookmark -i -r H 'b-F@divergent2' | ||||
$ hg bookmark -i -r G 'b-F@divergent3' | ||||
|
r33088 | $ cp -R . ../scmutilcleanup.obsstore | ||
$ cat > $TESTTMP/scmutilcleanup.py <<EOF | ||||
|
r34454 | > from mercurial import registrar, scmutil | ||
> cmdtable = {} | ||||
> command = registrar.command(cmdtable) | ||||
|
r35848 | > @command(b'testnodescleanup') | ||
|
r34454 | > def testnodescleanup(ui, repo): | ||
|
r33088 | > def nodes(expr): | ||
> return [repo.changelog.node(r) for r in repo.revs(expr)] | ||||
> def node(expr): | ||||
> return nodes(expr)[0] | ||||
> with repo.wlock(): | ||||
> with repo.lock(): | ||||
|
r35848 | > with repo.transaction(b'delayedstrip'): | ||
> mapping = {node(b'F'): [node(b'F2')], | ||||
> node(b'D'): [node(b'D2')], | ||||
> node(b'G'): [node(b'G2')]} | ||||
> scmutil.cleanupnodes(repo, mapping, b'replace') | ||||
|
r39952 | > scmutil.cleanupnodes(repo, nodes(b'((B::)+I+Z)-D2-obsolete()'), | ||
|
r35848 | > b'replace') | ||
|
r33088 | > EOF | ||
|
r34454 | $ hg testnodescleanup --config extensions.t=$TESTTMP/scmutilcleanup.py | ||
|
r33088 | warning: orphaned descendants detected, not stripping 112478962961, 1fc8102cda62, 26805aba1e60 | ||
|
r35394 | saved backup bundle to $TESTTMP/scmutilcleanup/.hg/strip-backup/f585351a92f8-73fb7c03-replace.hg | ||
|
r34454 | |||
|
r33088 | $ hg log -G -T '{rev}:{node|short} {desc} {bookmarks}' -r 'sort(all(), topo)' | ||
|
r33331 | o 8:1473d4b996d1 G2 b-F@divergent3 b-G | ||
|
r33088 | | | ||
|
r33558 | | o 7:d11b3456a873 F2 b-F | ||
|
r33088 | | | | ||
|
r33558 | | o 5:5cb05ba470a7 H | ||
|
r33088 | |/| | ||
|
r33331 | | o 3:7fb047a69f22 E b-F@divergent1 | ||
|
r33088 | | | | ||
| | o 6:7c78f703e465 D2 b-D | ||||
| | | | ||||
| | o 4:26805aba1e60 C | ||||
| | | | ||||
| | o 2:112478962961 B | ||||
| |/ | ||||
o | 1:1fc8102cda62 G | ||||
/ | ||||
o 0:426bada5c675 A b-B b-C b-I | ||||
$ hg bookmark | ||||
b-B 0:426bada5c675 | ||||
b-C 0:426bada5c675 | ||||
b-D 6:7c78f703e465 | ||||
|
r33558 | b-F 7:d11b3456a873 | ||
|
r33331 | b-F@divergent1 3:7fb047a69f22 | ||
b-F@divergent3 8:1473d4b996d1 | ||||
|
r33088 | b-G 8:1473d4b996d1 | ||
b-I 0:426bada5c675 | ||||
b-Z -1:000000000000 | ||||
Test the above using obsstore "by the way". Not directly related to strip, but | ||||
we have reusable code here | ||||
$ cd $TESTTMP/scmutilcleanup.obsstore | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [experimental] | ||||
|
r34866 | > evolution=true | ||
|
r34871 | > evolution.track-operation=1 | ||
|
r33088 | > EOF | ||
|
r34454 | $ hg testnodescleanup --config extensions.t=$TESTTMP/scmutilcleanup.py | ||
|
r35727 | 4 new orphan changesets | ||
|
r34454 | |||
|
r33088 | $ rm .hg/localtags | ||
$ hg log -G -T '{rev}:{node|short} {desc} {bookmarks}' -r 'sort(all(), topo)' | ||||
r35524 | * 12:1473d4b996d1 G2 b-F@divergent3 b-G | |||
|
r33088 | | | ||
r35524 | | * 11:d11b3456a873 F2 b-F | |||
|
r33088 | | | | ||
r35524 | | * 8:5cb05ba470a7 H | |||
|
r33088 | |/| | ||
|
r33331 | | o 4:7fb047a69f22 E b-F@divergent1 | ||
|
r33088 | | | | ||
r35524 | | | * 10:7c78f703e465 D2 b-D | |||
|
r33088 | | | | | ||
| | x 6:26805aba1e60 C | ||||
| | | | ||||
| | x 3:112478962961 B | ||||
| |/ | ||||
x | 1:1fc8102cda62 G | ||||
/ | ||||
o 0:426bada5c675 A b-B b-C b-I | ||||
$ hg debugobsolete | ||||
|
r34962 | 1fc8102cda6204549f031015641606ccf5513ec3 1473d4b996d1d1b121de6b39fab6a04fbf9d873e 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'replace', 'user': 'test'} | ||
64a8289d249234b9886244d379f15e6b650b28e3 d11b3456a873daec7c7bc53e5622e8df6d741bd2 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '13', 'operation': 'replace', 'user': 'test'} | ||||
f585351a92f85104bff7c284233c338b10eb1df7 7c78f703e465d73102cc8780667ce269c5208a40 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '9', 'operation': 'replace', 'user': 'test'} | ||||
48b9aae0607f43ff110d84e6883c151942add5ab 0 {0000000000000000000000000000000000000000} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'} | ||||
112478962961147124edd43549aedd1a335e44bf 0 {426bada5c67598ca65036d57d9e4b64b0c1ce7a0} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'} | ||||
08ebfeb61bac6e3f12079de774d285a0d6689eba 0 {426bada5c67598ca65036d57d9e4b64b0c1ce7a0} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'} | ||||
26805aba1e600a82e93661149f2313866a221a7b 0 {112478962961147124edd43549aedd1a335e44bf} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'replace', 'user': 'test'} | ||||
|
r34178 | $ cd .. | ||
Test that obsmarkers are restored even when not using generaldelta | ||||
$ hg --config format.usegeneraldelta=no init issue5678 | ||||
$ cd issue5678 | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [experimental] | ||||
|
r34866 | > evolution=true | ||
|
r34178 | > EOF | ||
$ echo a > a | ||||
$ hg ci -Aqm a | ||||
$ hg ci --amend -m a2 | ||||
$ hg debugobsolete | ||||
|
r34962 | cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||
|
r34178 | $ hg strip . | ||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
|
r35394 | saved backup bundle to $TESTTMP/issue5678/.hg/strip-backup/489bac576828-bef27e14-backup.hg | ||
|
r34178 | $ hg unbundle -q .hg/strip-backup/* | ||
$ hg debugobsolete | ||||
|
r34962 | cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b 489bac576828490c0bb8d45eac9e5e172e4ec0a8 0 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '1', 'operation': 'amend', 'user': 'test'} | ||
|
r34178 | $ cd .. | ||