##// END OF EJS Templates
extensions: register functions always at loading extension (issue5601)...
extensions: register functions always at loading extension (issue5601) Before this patch, functions defined in extensions are registered via extra loaders only in _dispatch(). Therefore, loading extensions in other code paths like below omits registration of functions. - WSGI service - operation across repositories (e.g. subrepo) - test-duplicateoptions.py, using extensions.loadall() directly To register functions always at loading new extension, this patch moves implementation for extra loading from dispatch._dispatch() to extensions.loadall(). AFAIK, only commands module causes cyclic dependency between extensions module, but this patch imports all related modules just before extra loading in loadall(), in order to centralize them. This patch makes extensions.py depend on many other modules, even though extensions.py itself doesn't. It should be avoided if possible, but I don't have any better idea. Some other places like below aren't reasonable for extra loading, IMHO. - specific function in newly added module: existing callers of extensions.loadall() should invoke it, too - hg.repository() or so: no-repo commands aren't covered by this. BTW, this patch removes _loaded.add(name) on relocation, because dispatch._loaded is used only for extraloaders (for similar reason, "exts" variable is removed, too).

File last commit:

r32698:1b5c61d3 default
r33052:45b0e9d0 default
Show More
test-rebase-pull.t
452 lines | 8.4 KiB | text/troff | Tads3Lexer
/ tests / test-rebase-pull.t
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
Valters Vingolds
rebase: fail-fast the pull if working dir is not clean (BC)...
r30725 > histedit=
Adrian Buehlmann
tests: unify test-rebase*
r12608 >
> [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
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 2:ff8d69a621f9 "L1"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/b/.hg/strip-backup/ff8d69a621f9-160fa373-backup.hg (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog
@ 3: 'L1'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Re-run:
$ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
no changes found
Valters Vingolds
rebase: fail-fast the pull if working dir is not clean (BC)...
r30725 Abort pull early if working dir is not clean:
$ echo L1-mod > L1
$ hg pull --rebase
abort: uncommitted changes
Valters Vingolds
rebase: provide detailed hint to abort message if working dir is not clean...
r30755 (cannot pull with rebase: please commit or shelve your changes first)
Valters Vingolds
rebase: fail-fast the pull if working dir is not clean (BC)...
r30725 [255]
$ hg update --clean --quiet
Abort pull early if another operation (histedit) is in progress:
$ hg histedit . -q --commands - << EOF
> edit d80cc2da061e histedit: generate unfinished state
> EOF
Editing (d80cc2da061e), you may commit or record as needed now.
(hg histedit --continue to resume)
[1]
$ hg pull --rebase
abort: histedit in progress
(use 'hg histedit --continue' or 'hg histedit --abort')
[255]
$ hg histedit --abort --quiet
Adrian Buehlmann
tests: unify test-rebase*
r12608
Valters Vingolds
rebase: provide detailed hint to abort message if working dir is not clean...
r30755 Abort pull early with pending uncommitted merge:
$ cd ..
$ hg clone --noupdate c d
$ cd d
$ hg tglog
o 1: 'C2'
|
o 0: 'C1'
$ hg update --quiet 0
$ echo M1 > M1
$ hg commit --quiet -Am M1
$ hg update --quiet 1
$ hg merge 2
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg pull --rebase
abort: outstanding uncommitted merge
(cannot pull with rebase: please commit or shelve your changes first)
[255]
$ hg update --clean --quiet
Abort pull early with unclean subrepo:
$ echo s = s > .hgsub
$ hg add .hgsub
$ hg init s
$ hg commit -m "generated a subrepo"
$ echo a > s/a
$ hg -R s add s/a
$ hg pull --rebase
abort: uncommitted changes in subrepository 's'
(cannot pull with rebase: please commit or shelve your changes first)
[255]
Adrian Buehlmann
tests: unify test-rebase*
r12608 Invoke pull --rebase and nothing to rebase:
$ cd ../c
Matt Mackall
rebase: move bookmarks as needed with pull --rebase (issue3285)
r16228 $ hg book norebase
Adrian Buehlmann
tests: unify test-rebase*
r12608 $ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 nothing to rebase - updating instead
Adrian Buehlmann
tests: unify test-rebase*
r12608 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Mackall
rebase: move bookmarks as needed with pull --rebase (issue3285)
r16228 updating bookmark norebase
Adrian Buehlmann
tests: unify test-rebase*
r12608
$ hg tglog -l 1
@ 2: 'R1'
|
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
Adrian Buehlmann
tests: unify test-rebase*
r12608
pull --rebase --update should ignore --update:
$ hg pull --rebase --update
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
no changes found
pull --rebase doesn't update if nothing has been pulled:
$ hg up -q 1
$ hg pull --rebase
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 pulling from $TESTTMP/a (glob)
Adrian Buehlmann
tests: unify test-rebase*
r12608 searching for changes
no changes found
$ hg tglog -l 1
o 2: 'R1'
|
Martijn Pieters
graphmod: set default edge styles for ascii graphs (BC)...
r28627 ~
Adrian Buehlmann
tests: unify test-rebase*
r12608
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988
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
Kevin Bullock
tests: fix some slash-based Windows failures
r18108 pulling from $TESTTMP/a (glob)
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988 searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
Mads Kiilerich
rebase: show more useful status information while rebasing...
r23517 rebasing 3:ff8d69a621f9 "L1"
Durham Goode
bundles: do not overwrite existing backup bundles (BC)...
r23835 saved backup bundle to $TESTTMP/c/.hg/strip-backup/ff8d69a621f9-160fa373-backup.hg (glob)
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988 $ hg tglog
@ 5: 'L1'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'
Eric Sumner
repair: setup hookargs when processing bundle2s...
r24170 pull --rebase works with bundle2 turned on
Pierre-Yves David
rebase: fix pull --rev options clashing with --rebase (issue3619)...
r17988
Eric Sumner
repair: setup hookargs when processing bundle2s...
r24170 $ 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
Pierre-Yves David
strip: use bundle2 + cg2 by default when repository use general delta...
r26423 $ hg pull --rebase
Eric Sumner
repair: setup hookargs when processing bundle2s...
r24170 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'
Pierre-Yves David
rebase: 'hg pull --rebase' now update only if there was nothing to rebase...
r28117
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'
Pierre-Yves David
rebase: perform update through the 'update' command...
r28118
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)
Pierre-Yves David
rebase: choose default destination the same way as 'hg merge' (BC)...
r28189 nothing to rebase - updating instead
Pierre-Yves David
rebase: perform update through the 'update' command...
r28118 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Pulkit Goyal
update: show the commit to which we updated in case of multiple heads (BC)...
r32698 updated to "65bc164c1d9b: R6"
Pierre-Yves David
rebase: perform update through the 'update' command...
r28118 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'
Pierre-Yves David
rebase: restrict rebase destination to the pulled set (issue5214)...
r29044
Multiple pre-existing heads on the branch
-----------------------------------------
Pull bring content, but nothing on the current branch, we should not consider
pre-existing heads.
$ cd ../a
$ hg branch unrelatedbranch
marked working directory as branch unrelatedbranch
(branches are permanent and global, did you want a bookmark?)
$ echo B1 > B1
$ hg commit -Am B1
adding B1
$ cd ../c
$ hg up 'desc(L2)'
2 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
nothing to rebase
There is two local heads and we pull a third one.
The second local head should not confuse the `hg pull rebase`.
$ hg up 'desc(R6)'
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo M1 > M1
$ hg commit -Am M1
adding M1
$ cd ../a
$ hg up 'desc(R6)'
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo R7 > R7
$ hg commit -Am R7
adding R7
$ cd ../c
$ hg up 'desc(L2)'
2 files updated, 0 files merged, 2 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 7:864e0a2d2614 "L1"
rebasing 8:6dc0ea5dcf55 "L2"
saved backup bundle to $TESTTMP/c/.hg/strip-backup/864e0a2d2614-2f72c89c-backup.hg (glob)
$ hg tglog
@ 12: 'L2'
|
o 11: 'L1'
|
o 10: 'R7'
|
| o 9: 'M1'
|/
| o 8: 'B1' unrelatedbranch
|/
o 7: 'R6'
|
o 6: 'R5'
|
o 5: 'R4'
|
o 4: 'R3'
|
o 3: 'R2'
|
o 2: 'R1'
|
o 1: 'C2'
|
o 0: 'C1'