2015-09-22 06:29:23 +03:00
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
2018-01-03 17:15:47 +03:00
|
|
|
$ echo "remotenames=" >> $HGRCPATH
|
2015-09-22 06:29:23 +03:00
|
|
|
|
|
|
|
$ mkcommit()
|
|
|
|
> {
|
|
|
|
> echo $1 > $1
|
|
|
|
> hg add $1
|
|
|
|
> hg ci -m "$1" -q
|
|
|
|
> }
|
|
|
|
|
|
|
|
$ printdag()
|
|
|
|
> {
|
|
|
|
> hg log -G --template '{desc} | {bookmarks} | {remotebookmarks}'
|
|
|
|
> }
|
|
|
|
|
|
|
|
Test hg pull --rebase degrades gracefully if rebase extension is not loaded
|
|
|
|
$ hg init remoterepo
|
|
|
|
$ cd remoterepo
|
|
|
|
$ mkcommit root
|
|
|
|
$ hg book bookmarkonremote
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ hg clone -q remoterepo localrepo
|
|
|
|
$ cd localrepo
|
|
|
|
|
|
|
|
Make sure to enable tracking
|
|
|
|
$ hg book bmtrackingremote --track default/bookmarkonremote
|
|
|
|
$ hg pull --rebase > /dev/null
|
|
|
|
hg pull: option --rebase not recognized
|
|
|
|
[255]
|
|
|
|
|
|
|
|
Tests 'hg pull --rebase' rebases from the active tracking bookmark onto the appropriate remote changes.
|
|
|
|
$ echo "[extensions]" >> $HGRCPATH
|
|
|
|
$ echo "rebase=" >> $HGRCPATH
|
|
|
|
$ cd ../remoterepo
|
|
|
|
|
|
|
|
Create remote changes
|
|
|
|
$ mkcommit trackedremotecommit
|
|
|
|
$ hg up -q -r 0
|
|
|
|
$ mkcommit untrackedremotecommit
|
|
|
|
$ printdag
|
|
|
|
@ untrackedremotecommit | |
|
|
|
|
|
|
|
|
|
| o trackedremotecommit | bookmarkonremote |
|
|
|
|
|/
|
|
|
|
o root | |
|
|
|
|
|
|
|
|
|
|
|
|
Create local changes and checkout tracking bookmark
|
|
|
|
$ cd ../localrepo
|
|
|
|
$ hg up -q bmtrackingremote
|
|
|
|
$ mkcommit localcommit
|
|
|
|
$ printdag
|
|
|
|
@ localcommit | bmtrackingremote |
|
|
|
|
|
|
|
|
|
o root | | default/bookmarkonremote
|
|
|
|
|
|
|
|
Pull remote changes and rebase local changes with tracked bookmark onto them
|
|
|
|
$ hg pull -q --rebase
|
|
|
|
$ printdag
|
|
|
|
@ localcommit | bmtrackingremote |
|
|
|
|
|
|
2015-09-22 06:05:21 +03:00
|
|
|
| o untrackedremotecommit | |
|
|
|
|
| |
|
|
|
|
o | trackedremotecommit | | default/bookmarkonremote
|
2015-09-22 06:29:23 +03:00
|
|
|
|/
|
|
|
|
o root | |
|
|
|
|
|
|
|
|
Tests 'hg pull --rebase' defaults to original (rebase->pullrebase) behaviour when using non-tracking bookmark
|
|
|
|
$ echo "strip=" >> $HGRCPATH
|
|
|
|
$ hg strip -q -r 3 -r 2 -r 1
|
|
|
|
$ hg book -d bmtrackingremote
|
|
|
|
$ hg book bmnottracking
|
|
|
|
$ mkcommit localcommit
|
|
|
|
$ printdag
|
|
|
|
@ localcommit | bmnottracking |
|
|
|
|
|
|
|
|
|
o root | |
|
|
|
|
|
2016-03-04 16:11:13 +03:00
|
|
|
$ hg pull --rebase
|
|
|
|
pulling from $TESTTMP/remoterepo (glob)
|
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 2 changesets with 2 changes to 2 files (+2 heads)
|
2017-10-18 01:24:27 +03:00
|
|
|
new changesets 7a820e70c81f:4557926d2166
|
2016-03-04 16:11:13 +03:00
|
|
|
updating to active bookmark bmnottracking
|
|
|
|
nothing to rebase
|
|
|
|
$ hg rebase -d 3
|
|
|
|
rebasing 1:6a7c7fb59c1e "localcommit" (bmnottracking)
|
2017-07-18 15:48:50 +03:00
|
|
|
saved backup bundle to $TESTTMP/localrepo/.hg/strip-backup/6a7c7fb59c1e-55f908e9-*.hg (glob)
|
2015-09-22 06:29:23 +03:00
|
|
|
$ printdag
|
|
|
|
@ localcommit | bmnottracking |
|
|
|
|
|
|
|
|
|
o untrackedremotecommit | |
|
|
|
|
|
|
|
|
|
| o trackedremotecommit | | default/bookmarkonremote
|
|
|
|
|/
|
|
|
|
o root | |
|
|
|
|
|
2015-11-03 20:55:55 +03:00
|
|
|
Tests the behavior of a pull followed by a pull --rebase
|
|
|
|
$ cd ../remoterepo
|
|
|
|
$ hg up bookmarkonremote -q
|
|
|
|
$ echo foo > foo
|
|
|
|
$ hg add foo -q
|
|
|
|
$ hg commit -m foo -q
|
|
|
|
$ cd ../localrepo
|
|
|
|
$ hg book -t default/bookmarkonremote tracking
|
|
|
|
$ hg pull
|
2015-11-05 00:23:35 +03:00
|
|
|
pulling from $TESTTMP/remoterepo (glob)
|
2015-11-03 20:55:55 +03:00
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files
|
2017-10-18 01:24:27 +03:00
|
|
|
new changesets 550352cd8c78
|
2015-11-03 20:55:55 +03:00
|
|
|
(run 'hg update' to get a working copy)
|
|
|
|
$ hg pull --rebase
|
2015-11-05 00:23:35 +03:00
|
|
|
pulling from $TESTTMP/remoterepo (glob)
|
2015-11-03 20:55:55 +03:00
|
|
|
searching for changes
|
|
|
|
no changes found
|
2015-11-05 00:23:35 +03:00
|
|
|
abort: can't rebase public changeset 4557926d2166
|
2016-09-22 19:42:11 +03:00
|
|
|
(see 'hg help phases' for details)
|
2015-11-05 00:23:35 +03:00
|
|
|
[255]
|
2016-01-08 12:31:45 +03:00
|
|
|
|
|
|
|
Tests that there are no race condition between pulling changesets and remote bookmarks
|
|
|
|
$ cd ..
|
|
|
|
$ cat > hangpull.py << EOF
|
|
|
|
> """A small extension that makes pull hang for 5 sec, for testing"""
|
|
|
|
> from mercurial import extensions, exchange
|
|
|
|
> def _pullremotenames(orig, repo, remote, *args, **opts):
|
|
|
|
> import time
|
|
|
|
> time.sleep(5)
|
|
|
|
> return orig(repo, remote, *args, **opts)
|
|
|
|
> def extsetup(ui):
|
|
|
|
> remotenames = extensions.find('remotenames')
|
|
|
|
> extensions.wrapfunction(remotenames, 'pullremotenames', _pullremotenames)
|
|
|
|
> EOF
|
|
|
|
$ cd localrepo
|
|
|
|
$ hg --config="extensions.hangpull=$TESTTMP/hangpull.py" -q pull &
|
|
|
|
$ sleep 1
|
|
|
|
$ cd ../remoterepo
|
|
|
|
$ hg up bookmarkonremote -q
|
|
|
|
$ mkcommit between_pull
|
|
|
|
$ wait
|
|
|
|
$ hg log -l 1 --template="{desc}\n"
|
|
|
|
between_pull
|
|
|
|
$ cd ../localrepo
|
|
|
|
$ hg up tracking -q
|
|
|
|
$ hg log -l 1 --template="{desc} {remotenames}\n"
|
|
|
|
foo default/bookmarkonremote default/default
|
|
|
|
$ hg -q pull
|
|
|
|
$ hg log -l 1 --template="{desc} {remotenames}\n"
|
|
|
|
between_pull default/bookmarkonremote default/default
|
2017-05-30 22:44:40 +03:00
|
|
|
|
|
|
|
Test pull with --rebase and --tool
|
|
|
|
$ cd ../remoterepo
|
|
|
|
$ hg up bookmarkonremote -q
|
|
|
|
$ echo remotechanges > editedbyboth
|
|
|
|
$ hg add editedbyboth
|
|
|
|
$ mkcommit remotecommit
|
|
|
|
$ cd ../localrepo
|
|
|
|
$ hg book -t default/bookmarkonremote -r default/bookmarkonremote tracking2
|
|
|
|
$ hg update tracking2 -q
|
|
|
|
$ echo localchanges > editedbyboth
|
|
|
|
$ hg add editedbyboth
|
|
|
|
$ mkcommit somelocalchanges
|
|
|
|
$ printdag
|
|
|
|
@ somelocalchanges | tracking2 |
|
|
|
|
|
|
|
|
|
o between_pull | | default/bookmarkonremote
|
|
|
|
|
|
|
|
|
o foo | |
|
|
|
|
|
|
|
|
|
| o localcommit | bmnottracking tracking |
|
|
|
|
| |
|
|
|
|
| o untrackedremotecommit | |
|
|
|
|
| |
|
|
|
|
o | trackedremotecommit | |
|
|
|
|
|/
|
|
|
|
o root | |
|
|
|
|
|
|
|
|
$ hg pull --rebase --tool internal:union
|
|
|
|
pulling from $TESTTMP/remoterepo (glob)
|
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 2 changes to 2 files (+1 heads)
|
2017-10-18 01:24:27 +03:00
|
|
|
new changesets b1a3b9086dc9
|
2017-05-30 22:44:40 +03:00
|
|
|
(run 'hg heads .' to see heads, 'hg merge' to merge)
|
|
|
|
rebasing 6:1d01e32a0efb "somelocalchanges" (tracking2)
|
|
|
|
merging editedbyboth
|
2017-07-18 15:48:50 +03:00
|
|
|
saved backup bundle to $TESTTMP/localrepo/.hg/strip-backup/*.hg (glob)
|
2017-05-30 22:44:40 +03:00
|
|
|
$ printdag
|
|
|
|
@ somelocalchanges | tracking2 |
|
|
|
|
|
|
|
|
|
o remotecommit | | default/bookmarkonremote
|
|
|
|
|
|
|
|
|
o between_pull | |
|
|
|
|
|
|
|
|
|
o foo | |
|
|
|
|
|
|
|
|
|
| o localcommit | bmnottracking tracking |
|
|
|
|
| |
|
|
|
|
| o untrackedremotecommit | |
|
|
|
|
| |
|
|
|
|
o | trackedremotecommit | |
|
|
|
|
|/
|
|
|
|
o root | |
|
|
|
|
|
|
|
|
$ cat editedbyboth
|
|
|
|
remotechanges
|
|
|
|
localchanges
|