mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
c280eb12b5
Add the ability to undo changes within one 'localbranch'. In the future, this will probably become default behavior. Undo -b changecontext will undo changes belonging to the local branch identified by the changecontext (see revset localbranch). Based on obs markers we can identify connected commits that we in turn reveal or hide outside of this localbranch. This undo allows users to work on multiple branches independantly. Currently, indexing for undoes is still on the repo level. This isn't good from a ux experience. Next up would be localbranch level indexing logic and redo logic. Differential Revision: https://phab.mercurial-scm.org/D160
636 lines
19 KiB
Perl
636 lines
19 KiB
Perl
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> undo = $TESTDIR/../hgext3rd/undo.py
|
|
> inhibit=$TESTDIR/../hgext3rd/inhibit.py
|
|
> [undo]
|
|
> _duringundologlock=1
|
|
> [experimental]
|
|
> evolution=createmarkers
|
|
> [ui]
|
|
> interactive = true
|
|
> EOF
|
|
|
|
Build up a repo
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
|
|
Test data store
|
|
|
|
$ hg book master
|
|
$ touch a1 && hg add a1 && hg ci -ma1
|
|
$ touch a2 && hg add a2 && hg ci -ma2
|
|
$ hg book feature1
|
|
$ touch b && hg add b && hg ci -mb
|
|
$ hg up -q master
|
|
$ touch c1 && hg add c1 && hg ci -mc1
|
|
created new head
|
|
$ touch c2 && hg add c2 && hg ci -mc2
|
|
$ hg book feature2
|
|
$ touch d && hg add d && hg ci -md
|
|
$ hg debugindex .hg/undolog/command.i
|
|
rev offset length base linkrev nodeid p1 p2
|
|
0 0 0 0 1 b80de5d13875 000000000000 000000000000
|
|
1 0 12 1 1 440cdcef588f 000000000000 000000000000
|
|
2 12 8 2 1 86fddc37572c 000000000000 000000000000
|
|
3 20 8 3 1 388d40a434df 000000000000 000000000000
|
|
4 28 14 4 1 1cafbfad488a 000000000000 000000000000
|
|
5 42 7 5 1 8879b3bd818b 000000000000 000000000000
|
|
6 49 13 6 1 b0f66da09921 000000000000 000000000000
|
|
7 62 8 7 1 004b7198dafe 000000000000 000000000000
|
|
8 70 8 8 1 60920018c706 000000000000 000000000000
|
|
9 78 14 9 1 c3e212568400 000000000000 000000000000
|
|
10 92 7 10 1 9d609b5b001c 000000000000 000000000000
|
|
$ hg debugdata .hg/undolog/command.i 0
|
|
$ hg debugdata .hg/undolog/command.i 1
|
|
book\x00master (no-eol) (esc)
|
|
$ hg debugdata .hg/undolog/command.i 2
|
|
ci\x00-ma1 (no-eol) (esc)
|
|
$ hg debugdata .hg/undolog/command.i 3
|
|
ci\x00-ma2 (no-eol) (esc)
|
|
$ hg debugdata .hg/undolog/bookmarks.i 0
|
|
$ hg debugdata .hg/undolog/bookmarks.i 1
|
|
master 0000000000000000000000000000000000000000 (no-eol)
|
|
$ hg debugdata .hg/undolog/bookmarks.i 2
|
|
master df4fd610a3d6ca792281e7576587fa18f940d37a (no-eol)
|
|
$ hg debugdata .hg/undolog/workingparent.i 0
|
|
0000000000000000000000000000000000000000 (no-eol)
|
|
$ hg debugdata .hg/undolog/workingparent.i 1
|
|
df4fd610a3d6ca792281e7576587fa18f940d37a (no-eol)
|
|
$ hg debugdata .hg/undolog/draftheads.i 1
|
|
df4fd610a3d6ca792281e7576587fa18f940d37a (no-eol)
|
|
$ hg debugdata .hg/undolog/draftheads.i 2
|
|
b68836a6e2cac33ba33a20249b85a486eec78186 (no-eol)
|
|
$ hg debugdata .hg/undolog/index.i 1
|
|
bookmarks 8153d44860d076e9c328951c8f36cf8daebe695a
|
|
command 440cdcef588f9a594c5530a5b6dede39a96d930d
|
|
date * (glob)
|
|
draftheads b80de5d138758541c5f05265ad144ab9fa86d1db
|
|
workingparent fcb754f6a51eaf982f66d0637b39f3d2e6b520d5 (no-eol)
|
|
$ touch a3 && hg add a3
|
|
$ hg commit --amend
|
|
$ hg debugdata .hg/undolog/command.i 11
|
|
commit\x00--amend (no-eol) (esc)
|
|
|
|
Test debugundohistory
|
|
$ hg debugundohistory -l
|
|
0: commit --amend
|
|
1: ci -md
|
|
2: book feature2
|
|
3: ci -mc2
|
|
4: ci -mc1
|
|
$ hg update master
|
|
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
|
(activating bookmark master)
|
|
$ echo "test" >> a1
|
|
$ hg commit -m "words"
|
|
created new head
|
|
$ hg debugundohistory -l
|
|
0: commit -m words
|
|
1: update master
|
|
2: commit --amend
|
|
3: ci -md
|
|
4: book feature2
|
|
$ hg debugundohistory -n 0
|
|
command:
|
|
commit -m words
|
|
bookmarks:
|
|
feature1 49cdb4091aca3c09f402ff001cd20cf086873683
|
|
feature2 296fda51a303650465d07a1cd054075cbe6d3cbd
|
|
master 0a3dd3e15e65b90836f492112d816f3ee073d897
|
|
date:
|
|
* (glob)
|
|
draftheads:
|
|
ADDED:
|
|
0a3dd3e15e65b90836f492112d816f3ee073d897
|
|
REMOVED:
|
|
|
|
workingparent:
|
|
0a3dd3e15e65b90836f492112d816f3ee073d897
|
|
|
|
Test gap in data (extension dis and enabled)
|
|
$ hg debugundohistory -l
|
|
0: commit -m words
|
|
1: update master
|
|
2: commit --amend
|
|
3: ci -md
|
|
4: book feature2
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> undo =!
|
|
> EOF
|
|
$ touch cmiss && hg add cmiss && hg ci -mcmiss
|
|
$ cat >>$HGRCPATH <<EOF
|
|
> [extensions]
|
|
> undo = $TESTDIR/../hgext3rd/undo.py
|
|
> EOF
|
|
$ touch a5 && hg add a5 && hg ci -ma5
|
|
$ hg debugundohistory -l
|
|
0: ci -ma5
|
|
1: -- gap in log --
|
|
2: commit -m words
|
|
3: update master
|
|
4: commit --amend
|
|
$ hg debugundohistory 1
|
|
command:
|
|
unkown command(s) run, gap in log
|
|
bookmarks:
|
|
feature1 49cdb4091aca3c09f402ff001cd20cf086873683
|
|
feature2 296fda51a303650465d07a1cd054075cbe6d3cbd
|
|
master 1dafc0b436123cab96f82a8e9e8d1d42c0301aaa
|
|
date:
|
|
* (glob)
|
|
draftheads:
|
|
ADDED:
|
|
1dafc0b436123cab96f82a8e9e8d1d42c0301aaa
|
|
REMOVED:
|
|
0a3dd3e15e65b90836f492112d816f3ee073d897
|
|
workingparent:
|
|
1dafc0b436123cab96f82a8e9e8d1d42c0301aaa
|
|
|
|
Index out of bound error
|
|
$ hg debugundohistory -n 50
|
|
abort: index out of bounds
|
|
[255]
|
|
|
|
Revset tests
|
|
$ hg log -G -r 'draft()' --hidden > /dev/null
|
|
$ hg debugundohistory -n 0
|
|
command:
|
|
ci -ma5
|
|
bookmarks:
|
|
feature1 49cdb4091aca3c09f402ff001cd20cf086873683
|
|
feature2 296fda51a303650465d07a1cd054075cbe6d3cbd
|
|
master aa430c8afedf9b2ec3f0655d39eef6b6b0a2ddb6
|
|
date:
|
|
* (glob)
|
|
draftheads:
|
|
ADDED:
|
|
aa430c8afedf9b2ec3f0655d39eef6b6b0a2ddb6
|
|
REMOVED:
|
|
1dafc0b436123cab96f82a8e9e8d1d42c0301aaa
|
|
workingparent:
|
|
aa430c8afedf9b2ec3f0655d39eef6b6b0a2ddb6
|
|
|
|
Test 'olddraft([NUM])' revset
|
|
$ hg log -G -r 'olddraft(0) - olddraft(1)' --hidden -T compact
|
|
@ 10[tip][master] aa430c8afedf 1970-01-01 00:00 +0000 test
|
|
| a5
|
|
~
|
|
$ hg log -G -r 'olddraft(1) and draft()' -T compact
|
|
o 9 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
|
|
|
o 8:4 0a3dd3e15e65 1970-01-01 00:00 +0000 test
|
|
| words
|
|
|
|
|
| o 7[feature2]:4 296fda51a303 1970-01-01 00:00 +0000 test
|
|
|/ d
|
|
|
|
|
o 4 38d85b506754 1970-01-01 00:00 +0000 test
|
|
| c2
|
|
|
|
|
o 3:1 ec7553f7b382 1970-01-01 00:00 +0000 test
|
|
| c1
|
|
|
|
|
| o 2[feature1] 49cdb4091aca 1970-01-01 00:00 +0000 test
|
|
|/ b
|
|
|
|
|
o 1 b68836a6e2ca 1970-01-01 00:00 +0000 test
|
|
| a2
|
|
|
|
|
o 0 df4fd610a3d6 1970-01-01 00:00 +0000 test
|
|
a1
|
|
|
|
$ hg log -G -r 'olddraft(1) and public()' -T compact
|
|
|
|
Test undolog lock
|
|
$ hg log --config hooks.duringundologlock="sleep 1" > /dev/null &
|
|
$ sleep 0.1
|
|
$ hg st --time
|
|
time: real [1-9]*\..* (re)
|
|
|
|
hg undo command tests
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
(leaving bookmark master)
|
|
$ hg log -G -T compact -l2
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
|
|
|
o 8:4 0a3dd3e15e65 1970-01-01 00:00 +0000 test
|
|
| words
|
|
~
|
|
$ hg update 0a3dd3e15e65
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg undo
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ touch c11 && hg add c11
|
|
$ hg commit --amend
|
|
$ hg log -G -T compact -l1
|
|
@ 12[tip][master]:8 2dca609174c2 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l4
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
|
|
|
o 8:4 0a3dd3e15e65 1970-01-01 00:00 +0000 test
|
|
| words
|
|
|
|
|
| o 7[feature2]:4 296fda51a303 1970-01-01 00:00 +0000 test
|
|
|/ d
|
|
|
|
|
o 4 38d85b506754 1970-01-01 00:00 +0000 test
|
|
| c2
|
|
~
|
|
$ hg graft 296fda51a303
|
|
grafting 7:296fda51a303 "d" (feature2)
|
|
$ hg log -G -T compact -l2
|
|
@ 13[tip]:9 f007a7cf4c3d 1970-01-01 00:00 +0000 test
|
|
| d
|
|
|
|
|
o 9[master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg book test
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
(leaving bookmark test)
|
|
$ hg bookmarks
|
|
feature1 2:49cdb4091aca
|
|
feature2 7:296fda51a303
|
|
master 9:1dafc0b43612
|
|
|
|
hg redo test
|
|
$ hg redo
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master,test] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg undo -n 5
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg redo -n 5
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg redo -n 100
|
|
abort: index out of bounds
|
|
[255]
|
|
|
|
hg undo --absolute tests
|
|
$ hg undo -a
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg redo
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg undo -a
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg redo
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg undo -n 5
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master,test] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
$ hg undo -a
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -G -T compact -l1
|
|
@ 9[tip][master] 1dafc0b43612 1970-01-01 00:00 +0000 test
|
|
| cmiss
|
|
~
|
|
|
|
hg undo --force tests
|
|
$ hg debugundohistory -l 18
|
|
18: undo
|
|
19: ci -ma5
|
|
20: -- gap in log --
|
|
21: commit -m words
|
|
22: update master
|
|
$ hg undo -a -n 25
|
|
abort: attempted risky undo across missing history
|
|
[255]
|
|
$ hg undo -a -n 25 -f
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg undo -a
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
hg undo --keep tests
|
|
$ touch kfl1 && hg add kfl1
|
|
$ hg st
|
|
A kfl1
|
|
$ hg commit --amend
|
|
$ hg st
|
|
$ hg undo --keep
|
|
$ hg st
|
|
A kfl1
|
|
$ hg commit --amend
|
|
|
|
hg undo informative obsmarkers
|
|
check 1 to 1 undos have informative obsmarker
|
|
check 1 to many undos (generally a redo of split or divergence) do not connect
|
|
the changesets with obsmarkers as we do not differentiate between split and
|
|
divergence cases in undo. The original split/divergence obsmarkers suffice for
|
|
checking split/divergence.
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> smartlog = $TESTDIR/../hgext3rd/smartlog.py
|
|
> tweakdefaults = $TESTDIR/../hgext3rd/tweakdefaults.py
|
|
> fbamend = $TESTDIR/../hgext3rd/fbamend/
|
|
> EOF
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg sl --all --hidden -T "{node|short} {if(undosuccessors, label('sl.undo', '(Undone as {join(undosuccessors% \'{shortest(undosuccessor, 6)}\', ', ')})'))}"
|
|
x db3723da827c
|
|
|
|
|
| x f007a7cf4c3d
|
|
|/
|
|
| x 128fe7e6098d
|
|
|/
|
|
| x aa430c8afedf
|
|
|/
|
|
@ 1dafc0b43612
|
|
:
|
|
: x c9476255bc2a (Undone as 1dafc0)
|
|
:/
|
|
: x 2dca609174c2
|
|
:/
|
|
: o 296fda51a303
|
|
:/
|
|
: x 551c0e5b57c9
|
|
: |
|
|
: x db92053d5c83
|
|
:/
|
|
: o 49cdb4091aca
|
|
:/
|
|
o b68836a6e2ca
|
|
|
|
|
~
|
|
$ echo "a" >> newa && echo "b" >> newb && hg add newa newb && hg ci -m "newfiles"
|
|
$ hg split --quiet << EOF
|
|
> y
|
|
> y
|
|
> n
|
|
> y
|
|
> EOF
|
|
diff --git a/newa b/newa
|
|
new file mode 100644
|
|
examine changes to 'newa'? [Ynesfdaq?] y
|
|
|
|
@@ -0,0 +1,1 @@
|
|
+a
|
|
record change 1/2 to 'newa'? [Ynesfdaq?] y
|
|
|
|
diff --git a/newb b/newb
|
|
new file mode 100644
|
|
examine changes to 'newb'? [Ynesfdaq?] n
|
|
|
|
Done splitting? [yN] y
|
|
$ hg debugobsolete | tail -5
|
|
db3723da827c373768d500ab4e3a9c59a78314a6 0 {1dafc0b436123cab96f82a8e9e8d1d42c0301aaa} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
|
|
c9476255bc2a68672c844021397838ff4eeefcda 1dafc0b436123cab96f82a8e9e8d1d42c0301aaa 0 (Thu Jan 01 00:00:04 1970 +0000) {'user': 'test'}
|
|
1dafc0b436123cab96f82a8e9e8d1d42c0301aaa c9476255bc2a68672c844021397838ff4eeefcda 0 (Thu Jan 01 00:00:05 1970 +0000) {'user': 'test'}
|
|
c9476255bc2a68672c844021397838ff4eeefcda 1dafc0b436123cab96f82a8e9e8d1d42c0301aaa 0 (Thu Jan 01 00:00:06 1970 +0000) {'operation': 'undo', 'user': 'test'}
|
|
f86734247df6db66a810e549cc938a72cd5c6d1a d0fdb9510dbf78c1a7e62c3e6628ff1f978f87ea 75f63379f12bf02d40fe7444587ad67be9ae81b8 0 (Thu Jan 01 00:00:00 1970 +0000) {'operation': 'split', 'user': 'test'}
|
|
$ hg undo
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg redo
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg debugobsolete | tail -5
|
|
d0fdb9510dbf78c1a7e62c3e6628ff1f978f87ea f86734247df6db66a810e549cc938a72cd5c6d1a 0 (Thu Jan 01 00:00:01 1970 +0000) {'operation': 'undo', 'user': 'test'}
|
|
75f63379f12bf02d40fe7444587ad67be9ae81b8 0 {d0fdb9510dbf78c1a7e62c3e6628ff1f978f87ea} (Thu Jan 01 00:00:01 1970 +0000) {'operation': 'undo', 'user': 'test'}
|
|
f86734247df6db66a810e549cc938a72cd5c6d1a 0 {1dafc0b436123cab96f82a8e9e8d1d42c0301aaa} (Thu Jan 01 00:00:02 1970 +0000) {'operation': 'undo', 'user': 'test'}
|
|
d0fdb9510dbf78c1a7e62c3e6628ff1f978f87ea d0fdb9510dbf78c1a7e62c3e6628ff1f978f87ea 0 (Thu Jan 01 00:00:01 1970 +0000) {'operation': 'revive', 'user': 'test'}
|
|
75f63379f12bf02d40fe7444587ad67be9ae81b8 75f63379f12bf02d40fe7444587ad67be9ae81b8 0 (Thu Jan 01 00:00:01 1970 +0000) {'operation': 'revive', 'user': 'test'}
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> smartlog =!
|
|
> tweakdefaults =!
|
|
> fbamend =!
|
|
> EOF
|
|
|
|
File corruption handling
|
|
$ echo 111corruptedrevlog > .hg/undolog/index.i
|
|
#if chg
|
|
(note: chg has issues with the below test)
|
|
#else
|
|
$ hg st --debug
|
|
caught revlog error. undolog/index.i was probably corrupted
|
|
#endif
|
|
$ hg debugundohistory -l
|
|
0: -- gap in log --
|
|
|
|
_localbranch revset tests
|
|
$ hg log -r '_localbranch(75f63379f12b)'
|
|
changeset: 0:df4fd610a3d6
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: a1
|
|
|
|
changeset: 1:b68836a6e2ca
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: a2
|
|
|
|
changeset: 2:49cdb4091aca
|
|
bookmark: feature1
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: b
|
|
|
|
changeset: 3:ec7553f7b382
|
|
parent: 1:b68836a6e2ca
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: c1
|
|
|
|
changeset: 4:38d85b506754
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: c2
|
|
|
|
changeset: 7:296fda51a303
|
|
bookmark: feature2
|
|
parent: 4:38d85b506754
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: d
|
|
|
|
changeset: 8:0a3dd3e15e65
|
|
parent: 4:38d85b506754
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: words
|
|
|
|
changeset: 9:1dafc0b43612
|
|
bookmark: master
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: cmiss
|
|
|
|
changeset: 17:d0fdb9510dbf
|
|
parent: 9:1dafc0b43612
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
changeset: 18:75f63379f12b
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
Test with public commit
|
|
$ hg phase -r 0a3dd3e15e65 -p
|
|
$ hg log -r '_localbranch(75f63379f12b)'
|
|
changeset: 9:1dafc0b43612
|
|
bookmark: master
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: cmiss
|
|
|
|
changeset: 17:d0fdb9510dbf
|
|
parent: 9:1dafc0b43612
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
changeset: 18:75f63379f12b
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
$ hg log -r '_localbranch(0a3dd3e15e65)'
|
|
changeset: 9:1dafc0b43612
|
|
bookmark: master
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: cmiss
|
|
|
|
changeset: 17:d0fdb9510dbf
|
|
parent: 9:1dafc0b43612
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
changeset: 18:75f63379f12b
|
|
tag: tip
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
|
|
localbranch undos
|
|
Make changes on two branches (old and new)
|
|
Undo only changes in one branch (old)
|
|
Includes commit and book changes
|
|
$ hg book "oldbook"
|
|
$ touch oldbranch
|
|
$ hg add oldbranch && hg ci -moldbranch
|
|
$ hg update null
|
|
0 files updated, 0 files merged, 8 files removed, 0 files unresolved
|
|
(leaving bookmark oldbook)
|
|
$ touch newbranch
|
|
$ hg add newbranch && hg ci -mnewbranch
|
|
created new head
|
|
$ hg book "newbook"
|
|
$ hg log -l 2
|
|
changeset: 20:805791ba4bcd
|
|
bookmark: newbook
|
|
tag: tip
|
|
parent: -1:000000000000
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newbranch
|
|
|
|
changeset: 19:7b0ef4f2a1ae
|
|
bookmark: oldbook
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: oldbranch
|
|
|
|
$ hg up 75f63379f12b
|
|
7 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
(leaving bookmark newbook)
|
|
$ hg undo -b 75f63379f12b -n 6
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -l 2
|
|
changeset: 20:805791ba4bcd
|
|
bookmark: newbook
|
|
tag: tip
|
|
parent: -1:000000000000
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newbranch
|
|
|
|
changeset: 18:75f63379f12b
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
Check rebase local undos of rebases
|
|
Make sure bookmarks and commits are not lost
|
|
and commits are not duplicated
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> rebase =
|
|
> EOF
|
|
$ hg rebase -s 8057 -d 75f6
|
|
rebasing 20:805791ba4bcd "newbranch" (tip newbook)
|
|
$ hg log -l 2
|
|
changeset: 21:35324a911c0d
|
|
bookmark: newbook
|
|
tag: tip
|
|
parent: 18:75f63379f12b
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newbranch
|
|
|
|
changeset: 18:75f63379f12b
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
$ hg undo -b 3532
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ hg log -l 2
|
|
changeset: 20:805791ba4bcd
|
|
bookmark: newbook
|
|
tag: tip
|
|
parent: -1:000000000000
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newbranch
|
|
|
|
changeset: 18:75f63379f12b
|
|
user: test
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
summary: newfiles
|
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> rebase = !
|
|
> EOF
|