mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 08:18:15 +03:00
9775d72529
Leaving regular parent edges set to |, grandparent edges set to : and missing parent edges set to end early. A sample graph: o changeset: 32:d06dffa21a31 |\ parent: 27:886ed638191b | : parent: 31:621d83e11f67 | : o : changeset: 31:621d83e11f67 |\: parent: 21:d42a756af44d | : parent: 30:6e11cd4b648f | : o : changeset: 30:6e11cd4b648f |\ \ parent: 28:44ecd0b9ae99 | ~ : parent: 29:cd9bb2be7593 | / o : changeset: 28:44ecd0b9ae99 |\ \ parent: 1:6db2ef61d156 | ~ : parent: 26:7f25b6c2f0b9 | / o : changeset: 26:7f25b6c2f0b9 |\ \ parent: 18:1aa84d96232a | | : parent: 25:91da8ed57247 | | : | o : changeset: 25:91da8ed57247 | |\: parent: 21:d42a756af44d | | : parent: 24:a9c19a3d96b7 | | : | o : changeset: 24:a9c19a3d96b7 | |\ \ parent: 0:e6eb3150255d | | ~ : parent: 23:a01cddf0766d | | / | o : changeset: 23:a01cddf0766d | |\ \ parent: 1:6db2ef61d156 | | ~ : parent: 22:e0d9cccacb5d | | / | o : changeset: 22:e0d9cccacb5d |/:/ parent: 18:1aa84d96232a | : parent: 21:d42a756af44d | : | o changeset: 21:d42a756af44d | |\ parent: 19:31ddc2c1573b | | | parent: 20:d30ed6450e32 | | | +---o changeset: 20:d30ed6450e32 | | | parent: 0:e6eb3150255d | | ~ parent: 18:1aa84d96232a | | | o changeset: 19:31ddc2c1573b | |\ parent: 15:1dda3f72782d | ~ ~ parent: 17:44765d7c06e0 | o changeset: 18:1aa84d96232a parent: 1:6db2ef61d156 parent: 15:1dda3f72782d
314 lines
5.1 KiB
Perl
314 lines
5.1 KiB
Perl
$ cat >> $HGRCPATH <<EOF
|
|
> [extensions]
|
|
> rebase=
|
|
>
|
|
> [alias]
|
|
> tglog = log -G --template "{rev}: '{desc}' {branches}\n"
|
|
> EOF
|
|
|
|
|
|
$ hg init a
|
|
$ cd a
|
|
|
|
$ echo C1 > C1
|
|
$ hg ci -Am C1
|
|
adding C1
|
|
|
|
$ echo C2 > C2
|
|
$ hg ci -Am C2
|
|
adding C2
|
|
|
|
$ cd ..
|
|
|
|
$ hg clone a b
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ hg clone a c
|
|
updating to branch default
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd b
|
|
|
|
$ echo L1 > L1
|
|
$ hg ci -Am L1
|
|
adding L1
|
|
|
|
|
|
$ cd ../a
|
|
|
|
$ echo R1 > R1
|
|
$ hg ci -Am R1
|
|
adding R1
|
|
|
|
|
|
$ cd ../b
|
|
|
|
Now b has one revision to be pulled from a:
|
|
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
rebasing 2:ff8d69a621f9 "L1"
|
|
saved backup bundle to $TESTTMP/b/.hg/strip-backup/ff8d69a621f9-160fa373-backup.hg (glob)
|
|
|
|
$ hg tglog
|
|
@ 3: 'L1'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
Re-run:
|
|
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
no changes found
|
|
|
|
|
|
Invoke pull --rebase and nothing to rebase:
|
|
|
|
$ cd ../c
|
|
|
|
$ hg book norebase
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
nothing to rebase - updating instead
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
updating bookmark norebase
|
|
|
|
$ hg tglog -l 1
|
|
@ 2: 'R1'
|
|
|
|
|
~
|
|
|
|
pull --rebase --update should ignore --update:
|
|
|
|
$ hg pull --rebase --update
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
no changes found
|
|
|
|
pull --rebase doesn't update if nothing has been pulled:
|
|
|
|
$ hg up -q 1
|
|
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
no changes found
|
|
|
|
$ hg tglog -l 1
|
|
o 2: 'R1'
|
|
|
|
|
~
|
|
|
|
$ cd ..
|
|
|
|
pull --rebase works when a specific revision is pulled (issue3619)
|
|
|
|
$ cd a
|
|
$ hg tglog
|
|
@ 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
$ echo R2 > R2
|
|
$ hg ci -Am R2
|
|
adding R2
|
|
$ echo R3 > R3
|
|
$ hg ci -Am R3
|
|
adding R3
|
|
$ cd ../c
|
|
$ hg tglog
|
|
o 2: 'R1'
|
|
|
|
|
@ 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
$ echo L1 > L1
|
|
$ hg ci -Am L1
|
|
adding L1
|
|
created new head
|
|
$ hg pull --rev tip --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 2 files
|
|
rebasing 3:ff8d69a621f9 "L1"
|
|
saved backup bundle to $TESTTMP/c/.hg/strip-backup/ff8d69a621f9-160fa373-backup.hg (glob)
|
|
$ hg tglog
|
|
@ 5: 'L1'
|
|
|
|
|
o 4: 'R3'
|
|
|
|
|
o 3: 'R2'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
pull --rebase works with bundle2 turned on
|
|
|
|
$ cd ../a
|
|
$ echo R4 > R4
|
|
$ hg ci -Am R4
|
|
adding R4
|
|
$ hg tglog
|
|
@ 5: 'R4'
|
|
|
|
|
o 4: 'R3'
|
|
|
|
|
o 3: 'R2'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
$ cd ../c
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
rebasing 5:518d153c0ba3 "L1"
|
|
saved backup bundle to $TESTTMP/c/.hg/strip-backup/518d153c0ba3-73407f14-backup.hg (glob)
|
|
$ hg tglog
|
|
@ 6: 'L1'
|
|
|
|
|
o 5: 'R4'
|
|
|
|
|
o 4: 'R3'
|
|
|
|
|
o 3: 'R2'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
|
|
pull --rebase only update if there is nothing to rebase
|
|
|
|
$ cd ../a
|
|
$ echo R5 > R5
|
|
$ hg ci -Am R5
|
|
adding R5
|
|
$ hg tglog
|
|
@ 6: 'R5'
|
|
|
|
|
o 5: 'R4'
|
|
|
|
|
o 4: 'R3'
|
|
|
|
|
o 3: 'R2'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
$ cd ../c
|
|
$ echo L2 > L2
|
|
$ hg ci -Am L2
|
|
adding L2
|
|
$ hg up 'desc(L1)'
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
rebasing 6:0d0727eb7ce0 "L1"
|
|
rebasing 7:c1f58876e3bf "L2"
|
|
saved backup bundle to $TESTTMP/c/.hg/strip-backup/0d0727eb7ce0-ef61ccb2-backup.hg (glob)
|
|
$ hg tglog
|
|
o 8: 'L2'
|
|
|
|
|
@ 7: 'L1'
|
|
|
|
|
o 6: 'R5'
|
|
|
|
|
o 5: 'R4'
|
|
|
|
|
o 4: 'R3'
|
|
|
|
|
o 3: 'R2'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|
|
|
|
pull --rebase update (no rebase) use proper update:
|
|
|
|
- warn about other head.
|
|
|
|
$ cd ../a
|
|
$ echo R6 > R6
|
|
$ hg ci -Am R6
|
|
adding R6
|
|
$ cd ../c
|
|
$ hg up 'desc(R5)'
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ hg pull --rebase
|
|
pulling from $TESTTMP/a (glob)
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
|
nothing to rebase - updating instead
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
1 other heads for branch "default"
|
|
$ hg tglog
|
|
@ 9: 'R6'
|
|
|
|
|
| o 8: 'L2'
|
|
| |
|
|
| o 7: 'L1'
|
|
|/
|
|
o 6: 'R5'
|
|
|
|
|
o 5: 'R4'
|
|
|
|
|
o 4: 'R3'
|
|
|
|
|
o 3: 'R2'
|
|
|
|
|
o 2: 'R1'
|
|
|
|
|
o 1: 'C2'
|
|
|
|
|
o 0: 'C1'
|
|
|