This time ones that are prefixed with =, ", ', or `. This appears to
be the last of them.
Details
Details
Diff Detail
Diff Detail
- Repository
- rHG Mercurial
- Lint
Lint Skipped - Unit
Unit Tests Skipped
( )
This time ones that are prefixed with =, ", ', or `. This appears to
be the last of them.
| Lint Skipped |
| Unit Tests Skipped |
| Path | Packages | |||
|---|---|---|---|---|
| M | tests/test-bookmarks-pushpull.t (2 lines) | |||
| M | tests/test-bundle2-exchange.t (4 lines) | |||
| M | tests/test-bundle2-format.t (2 lines) | |||
| M | tests/test-bundle2-remote-changegroup.t (2 lines) | |||
| M | tests/test-clone.t (2 lines) | |||
| M | tests/test-clonebundles.t (2 lines) | |||
| M | tests/test-filebranch.t (2 lines) | |||
| M | tests/test-http-branchmap.t (2 lines) | |||
| M | tests/test-init.t (14 lines) | |||
| M | tests/test-largefiles-wireproto.t (2 lines) | |||
| M | tests/test-merge1.t (2 lines) | |||
| M | tests/test-merge6.t (2 lines) | |||
| M | tests/test-rename-merge2.t (204 lines) | |||
| M | tests/test-revset.t (4 lines) | |||
| M | tests/test-ssh-bundle1.t (38 lines) | |||
| M | tests/test-ssh-clone-r.t (10 lines) | |||
| M | tests/test-ssh.t (38 lines) | |||
| M | tests/test-subrepo-relative-path.t (4 lines) | |||
| M | tests/test-treemanifest.t (2 lines) | |||
| M | tests/test-wireproto.t (8 lines) |
| adding file changes | adding file changes | ||||
| added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
| $ cat >> .hg/hgrc << EOF | $ cat >> .hg/hgrc << EOF | ||||
| > [paths] | > [paths] | ||||
| > local=../issue4455-dest/ | > local=../issue4455-dest/ | ||||
| > ssh=ssh://user@dummy/issue4455-dest | > ssh=ssh://user@dummy/issue4455-dest | ||||
| > http=http://localhost:$HGPORT/ | > http=http://localhost:$HGPORT/ | ||||
| > [ui] | > [ui] | ||||
| > ssh=python "$TESTDIR/dummyssh" | > ssh=$PYTHON "$TESTDIR/dummyssh" | ||||
| > EOF | > EOF | ||||
| $ cat >> ../issue4455-dest/.hg/hgrc << EOF | $ cat >> ../issue4455-dest/.hg/hgrc << EOF | ||||
| > [hooks] | > [hooks] | ||||
| > prepushkey=false | > prepushkey=false | ||||
| > [web] | > [web] | ||||
| > push_ssl = false | > push_ssl = false | ||||
| > allow_push = * | > allow_push = * | ||||
| > EOF | > EOF | ||||
| > hg debuglock | > hg debuglock | ||||
| > EOF | > EOF | ||||
| $ cat >> $HGRCPATH << EOF | $ cat >> $HGRCPATH << EOF | ||||
| > [experimental] | > [experimental] | ||||
| > evolution=createmarkers,exchange | > evolution=createmarkers,exchange | ||||
| > bundle2-output-capture=True | > bundle2-output-capture=True | ||||
| > [ui] | > [ui] | ||||
| > ssh=python "$TESTDIR/dummyssh" | > ssh=$PYTHON "$TESTDIR/dummyssh" | ||||
| > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | ||||
| > [web] | > [web] | ||||
| > push_ssl = false | > push_ssl = false | ||||
| > allow_push = * | > allow_push = * | ||||
| > [phases] | > [phases] | ||||
| > publish=False | > publish=False | ||||
| > [hooks] | > [hooks] | ||||
| > pretxnclose.tip = hg log -r tip -T "pre-close-tip:{node|short} {phase} {bookmarks}\n" | > pretxnclose.tip = hg log -r tip -T "pre-close-tip:{node|short} {phase} {bookmarks}\n" | ||||
| remote: wlock: free | remote: wlock: free | ||||
| abort: Clown phase push failed | abort: Clown phase push failed | ||||
| [255] | [255] | ||||
| Test lazily acquiring the lock during unbundle | Test lazily acquiring the lock during unbundle | ||||
| $ cp $TESTTMP/hgrc.orig $HGRCPATH | $ cp $TESTTMP/hgrc.orig $HGRCPATH | ||||
| $ cat >> $HGRCPATH <<EOF | $ cat >> $HGRCPATH <<EOF | ||||
| > [ui] | > [ui] | ||||
| > ssh=python "$TESTDIR/dummyssh" | > ssh=$PYTHON "$TESTDIR/dummyssh" | ||||
| > EOF | > EOF | ||||
| $ cat >> $TESTTMP/locktester.py <<EOF | $ cat >> $TESTTMP/locktester.py <<EOF | ||||
| > import os | > import os | ||||
| > from mercurial import extensions, bundle2, util | > from mercurial import extensions, bundle2, util | ||||
| > def checklock(orig, repo, *args, **kwargs): | > def checklock(orig, repo, *args, **kwargs): | ||||
| > if repo.svfs.lexists("lock"): | > if repo.svfs.lexists("lock"): | ||||
| > raise util.Abort("Lock should not be taken") | > raise util.Abort("Lock should not be taken") | ||||
| > ui.write('parts count: %i\n' % count) | > ui.write('parts count: %i\n' % count) | ||||
| > EOF | > EOF | ||||
| $ cat >> $HGRCPATH << EOF | $ cat >> $HGRCPATH << EOF | ||||
| > [extensions] | > [extensions] | ||||
| > bundle2=$TESTTMP/bundle2.py | > bundle2=$TESTTMP/bundle2.py | ||||
| > [experimental] | > [experimental] | ||||
| > evolution=createmarkers | > evolution=createmarkers | ||||
| > [ui] | > [ui] | ||||
| > ssh=python "$TESTDIR/dummyssh" | > ssh=$PYTHON "$TESTDIR/dummyssh" | ||||
| > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | ||||
| > [web] | > [web] | ||||
| > push_ssl = false | > push_ssl = false | ||||
| > allow_push = * | > allow_push = * | ||||
| > [phases] | > [phases] | ||||
| > publish=False | > publish=False | ||||
| > EOF | > EOF | ||||
| Start a simple HTTP server to serve bundles | Start a simple HTTP server to serve bundles | ||||
| $ $PYTHON "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid | $ $PYTHON "$TESTDIR/dumbhttp.py" -p $HGPORT --pid dumb.pid | ||||
| $ cat dumb.pid >> $DAEMON_PIDS | $ cat dumb.pid >> $DAEMON_PIDS | ||||
| $ cat >> $HGRCPATH << EOF | $ cat >> $HGRCPATH << EOF | ||||
| > [ui] | > [ui] | ||||
| > ssh=python "$TESTDIR/dummyssh" | > ssh=$PYTHON "$TESTDIR/dummyssh" | ||||
| > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline} | ||||
| > EOF | > EOF | ||||
| $ hg init repo | $ hg init repo | ||||
| $ hg -R repo unbundle $TESTDIR/bundles/rebase.hg | $ hg -R repo unbundle $TESTDIR/bundles/rebase.hg | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| Test that auto sharing doesn't cause failure of "hg clone local remote" | Test that auto sharing doesn't cause failure of "hg clone local remote" | ||||
| $ cd $TESTTMP | $ cd $TESTTMP | ||||
| $ hg -R a id -r 0 | $ hg -R a id -r 0 | ||||
| acb14030fe0a | acb14030fe0a | ||||
| $ hg id -R remote -r 0 | $ hg id -R remote -r 0 | ||||
| abort: repository remote not found! | abort: repository remote not found! | ||||
| [255] | [255] | ||||
| $ hg --config share.pool=share -q clone -e "python \"$TESTDIR/dummyssh\"" a ssh://user@dummy/remote | $ hg --config share.pool=share -q clone -e "$PYTHON \"$TESTDIR/dummyssh\"" a ssh://user@dummy/remote | ||||
| $ hg -R remote id -r 0 | $ hg -R remote id -r 0 | ||||
| acb14030fe0a | acb14030fe0a | ||||
| Cloning into pooled storage doesn't race (issue5104) | Cloning into pooled storage doesn't race (issue5104) | ||||
| $ HGPOSTLOCKDELAY=2.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace1 > race1.log 2>&1 & | $ HGPOSTLOCKDELAY=2.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace1 > race1.log 2>&1 & | ||||
| $ HGPRELOCKDELAY=1.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace2 > race2.log 2>&1 | $ HGPRELOCKDELAY=1.0 hg --config share.pool=racepool --config extensions.lockdelay=$TESTDIR/lockdelay.py clone source1a share-destrace2 > race2.log 2>&1 | ||||
| $ wait | $ wait | ||||
| adding file changes | adding file changes | ||||
| added 2 changesets with 2 changes to 2 files | added 2 changesets with 2 changes to 2 files | ||||
| finished applying clone bundle | finished applying clone bundle | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| Feature works over SSH | Feature works over SSH | ||||
| $ hg clone -U -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/server ssh-full-clone | $ hg clone -U -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/server ssh-full-clone | ||||
| applying clone bundle from http://localhost:$HGPORT1/full.hg | applying clone bundle from http://localhost:$HGPORT1/full.hg | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 2 changesets with 2 changes to 2 files | added 2 changesets with 2 changes to 2 files | ||||
| finished applying clone bundle | finished applying clone bundle | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| This test makes sure that we don't mark a file as merged with its ancestor | This test makes sure that we don't mark a file as merged with its ancestor | ||||
| when we do a merge. | when we do a merge. | ||||
| $ cat <<EOF > merge | $ cat <<EOF > merge | ||||
| > import sys, os | > import sys, os | ||||
| > print "merging for", os.path.basename(sys.argv[1]) | > print "merging for", os.path.basename(sys.argv[1]) | ||||
| > EOF | > EOF | ||||
| $ HGMERGE="python ../merge"; export HGMERGE | $ HGMERGE="$PYTHON ../merge"; export HGMERGE | ||||
| Creating base: | Creating base: | ||||
| $ hg init a | $ hg init a | ||||
| $ cd a | $ cd a | ||||
| $ echo 1 > foo | $ echo 1 > foo | ||||
| $ echo 1 > bar | $ echo 1 > bar | ||||
| $ echo 1 > baz | $ echo 1 > baz | ||||
| > sys.stderr = StdoutWrapper(sys.stderr) | > sys.stderr = StdoutWrapper(sys.stderr) | ||||
| > | > | ||||
| > myui = ui.ui.load() | > myui = ui.ui.load() | ||||
| > repo = hg.repository(myui, 'a') | > repo = hg.repository(myui, 'a') | ||||
| > commands.serve(myui, repo, stdio=True, cmdserver=False) | > commands.serve(myui, repo, stdio=True, cmdserver=False) | ||||
| > EOF | > EOF | ||||
| $ echo baz >> b/foo | $ echo baz >> b/foo | ||||
| $ hg -R b ci -m baz | $ hg -R b ci -m baz | ||||
| $ hg push -R b -e 'python oldhg' ssh://dummy/ --encoding latin1 | $ hg push -R b -e '$PYTHON oldhg' ssh://dummy/ --encoding latin1 | ||||
| pushing to ssh://dummy/ | pushing to ssh://dummy/ | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| test failure | test failure | ||||
| $ hg init local | $ hg init local | ||||
| abort: repository local already exists! | abort: repository local already exists! | ||||
| [255] | [255] | ||||
| init+push to remote2 | init+push to remote2 | ||||
| $ hg init -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote2 | $ hg init -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote2 | ||||
| $ hg incoming -R remote2 local | $ hg incoming -R remote2 local | ||||
| comparing with local | comparing with local | ||||
| changeset: 0:08b9e9f63b32 | changeset: 0:08b9e9f63b32 | ||||
| tag: tip | tag: tip | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: init | summary: init | ||||
| $ hg push -R local -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote2 | $ hg push -R local -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote2 | ||||
| pushing to ssh://user@dummy/remote2 | pushing to ssh://user@dummy/remote2 | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| clone to remote1 | clone to remote1 | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remote1 | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remote1 | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| The largefiles extension doesn't crash | The largefiles extension doesn't crash | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remotelf --config extensions.largefiles= | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remotelf --config extensions.largefiles= | ||||
| The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !) | The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !) | ||||
| The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !) | The fsmonitor extension is incompatible with the largefiles extension and has been disabled. (fsmonitor !) | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| init to existing repo | init to existing repo | ||||
| $ hg init -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote1 | $ hg init -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote1 | ||||
| abort: repository remote1 already exists! | abort: repository remote1 already exists! | ||||
| abort: could not create remote repo! | abort: could not create remote repo! | ||||
| [255] | [255] | ||||
| clone to existing repo | clone to existing repo | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remote1 | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remote1 | ||||
| abort: repository remote1 already exists! | abort: repository remote1 already exists! | ||||
| abort: could not create remote repo! | abort: could not create remote repo! | ||||
| [255] | [255] | ||||
| output of dummyssh | output of dummyssh | ||||
| $ cat dummylog | $ cat dummylog | ||||
| Got arguments 1:user@dummy 2:hg init remote2 | Got arguments 1:user@dummy 2:hg init remote2 | ||||
| revlogv1 | revlogv1 | ||||
| store | store | ||||
| clone bookmarks | clone bookmarks | ||||
| $ hg -R local bookmark test | $ hg -R local bookmark test | ||||
| $ hg -R local bookmarks | $ hg -R local bookmarks | ||||
| * test 0:08b9e9f63b32 | * test 0:08b9e9f63b32 | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remote-bookmarks | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" local ssh://user@dummy/remote-bookmarks | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| exporting bookmark test | exporting bookmark test | ||||
| $ hg -R remote-bookmarks bookmarks | $ hg -R remote-bookmarks bookmarks | ||||
| test 0:08b9e9f63b32 | test 0:08b9e9f63b32 | ||||
| Please enable it in your Mercurial config file. | Please enable it in your Mercurial config file. | ||||
| [255] | [255] | ||||
| used all HGPORTs, kill all daemons | used all HGPORTs, kill all daemons | ||||
| $ killdaemons.py | $ killdaemons.py | ||||
| #endif | #endif | ||||
| vanilla clients locked out from largefiles ssh repos | vanilla clients locked out from largefiles ssh repos | ||||
| $ hg --config extensions.largefiles=! clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5 | $ hg --config extensions.largefiles=! clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/r4 r5 | ||||
| remote: | remote: | ||||
| remote: This repository uses the largefiles extension. | remote: This repository uses the largefiles extension. | ||||
| remote: | remote: | ||||
| remote: Please enable it in your Mercurial config file. | remote: Please enable it in your Mercurial config file. | ||||
| remote: | remote: | ||||
| remote: - | remote: - | ||||
| abort: remote error | abort: remote error | ||||
| (check previous remote output) | (check previous remote output) | ||||
| $ cat <<EOF > merge | $ cat <<EOF > merge | ||||
| > import sys, os | > import sys, os | ||||
| > | > | ||||
| > try: | > try: | ||||
| > import msvcrt | > import msvcrt | ||||
| > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) | > msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) | ||||
| > msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) | > msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) | ||||
| > except ImportError: | > except ImportError: | ||||
| > pass | > pass | ||||
| > | > | ||||
| > print "merging for", os.path.basename(sys.argv[1]) | > print "merging for", os.path.basename(sys.argv[1]) | ||||
| > EOF | > EOF | ||||
| $ HGMERGE="python ../merge"; export HGMERGE | $ HGMERGE="$PYTHON ../merge"; export HGMERGE | ||||
| $ hg init t | $ hg init t | ||||
| $ cd t | $ cd t | ||||
| $ echo This is file a1 > a | $ echo This is file a1 > a | ||||
| $ hg add a | $ hg add a | ||||
| $ hg commit -m "commit #0" | $ hg commit -m "commit #0" | ||||
| $ echo This is file b1 > b | $ echo This is file b1 > b | ||||
| $ hg add b | $ hg add b | ||||
| $ cat <<EOF > merge | $ cat <<EOF > merge | ||||
| > import sys, os | > import sys, os | ||||
| > print "merging for", os.path.basename(sys.argv[1]) | > print "merging for", os.path.basename(sys.argv[1]) | ||||
| > EOF | > EOF | ||||
| $ HGMERGE="python ../merge"; export HGMERGE | $ HGMERGE="$PYTHON ../merge"; export HGMERGE | ||||
| $ hg init A1 | $ hg init A1 | ||||
| $ cd A1 | $ cd A1 | ||||
| $ echo This is file foo1 > foo | $ echo This is file foo1 > foo | ||||
| $ echo This is file bar1 > bar | $ echo This is file bar1 > bar | ||||
| $ hg add foo bar | $ hg add foo bar | ||||
| $ hg commit -m "commit text" | $ hg commit -m "commit text" | ||||
| > # working dir | > # working dir | ||||
| > echo local > rev | > echo local > rev | ||||
| > if [ "$3" != "" ] ; then $3 ; fi | > if [ "$3" != "" ] ; then $3 ; fi | ||||
| > | > | ||||
| > # merge | > # merge | ||||
| > echo "--------------" | > echo "--------------" | ||||
| > echo "test L:$1 R:$2 W:$3 - $4" | > echo "test L:$1 R:$2 W:$3 - $4" | ||||
| > echo "--------------" | > echo "--------------" | ||||
| > hg merge -y --debug --traceback --tool="python ../merge" | > hg merge -y --debug --traceback --tool="$PYTHON ../merge" | ||||
| > | > | ||||
| > echo "--------------" | > echo "--------------" | ||||
| > hg status -camC -X rev | > hg status -camC -X rev | ||||
| > | > | ||||
| > hg ci -m "merge" | > hg ci -m "merge" | ||||
| > | > | ||||
| > echo "--------------" | > echo "--------------" | ||||
| > echo | > echo | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: e300d1c794ec+, remote: 4ce40f5aca24 | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: remote copied from a -> m (premerge) | b: remote copied from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging a and b to b | merging a and b to b | ||||
| my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337 | my b@e300d1c794ec+ other b@4ce40f5aca24 ancestor a@924404dff337 | ||||
| premerge successful | premerge successful | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | my rev@e300d1c794ec+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| a | a | ||||
| C a | C a | ||||
| -------------- | -------------- | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: f4db7e329e71 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: remote is newer -> g | a: remote is newer -> g | ||||
| getting a | getting a | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b and a to b | merging b and a to b | ||||
| my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337 | my b@86a2aa42fc76+ other a@f4db7e329e71 ancestor a@924404dff337 | ||||
| premerge successful | premerge successful | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@f4db7e329e71 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M a | M a | ||||
| M b | M b | ||||
| a | a | ||||
| -------------- | -------------- | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a | ancestor: 924404dff337, local: e300d1c794ec+, remote: bdb19105162a | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: remote moved from a -> m (premerge) | b: remote moved from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging a and b to b | merging a and b to b | ||||
| my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337 | my b@e300d1c794ec+ other b@bdb19105162a ancestor a@924404dff337 | ||||
| premerge successful | premerge successful | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@e300d1c794ec+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| a | a | ||||
| -------------- | -------------- | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71 | ancestor: 924404dff337, local: 02963e448370+, remote: f4db7e329e71 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b and a to b | merging b and a to b | ||||
| my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337 | my b@02963e448370+ other a@f4db7e329e71 ancestor a@924404dff337 | ||||
| premerge successful | premerge successful | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 | my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 | my rev@02963e448370+ other rev@f4db7e329e71 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| a | a | ||||
| -------------- | -------------- | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: 4ce40f5aca24 | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| b: remote created -> g | b: remote created -> g | ||||
| getting b | getting b | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | my rev@94b33a1b7f2d+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| C a | C a | ||||
| -------------- | -------------- | ||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 97c705ade336 | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@97c705ade336 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| C a | C a | ||||
| C b | C b | ||||
| -------------- | -------------- | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a | ancestor: 924404dff337, local: 94b33a1b7f2d+, remote: bdb19105162a | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: other deleted -> r | a: other deleted -> r | ||||
| removing a | removing a | ||||
| b: remote created -> g | b: remote created -> g | ||||
| getting b | getting b | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@94b33a1b7f2d+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 1 files merged, 1 files removed, 0 files unresolved | 1 files updated, 1 files merged, 1 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| -------------- | -------------- | ||||
| $ tm "nm a b" " " " " "8 nothing" | $ tm "nm a b" " " " " "8 nothing" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nm a b R: W: - 8 nothing | test L:nm a b R: W: - 8 nothing | ||||
| -------------- | -------------- | ||||
| searching for copies back to rev 1 | searching for copies back to rev 1 | ||||
| unmatched files in local: | unmatched files in local: | ||||
| b | b | ||||
| all copies found (* = to merge, ! = divergent, % = renamed and deleted): | all copies found (* = to merge, ! = divergent, % = renamed and deleted): | ||||
| src: 'a' -> dst: 'b' | src: 'a' -> dst: 'b' | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336 | ancestor: 924404dff337, local: 02963e448370+, remote: 97c705ade336 | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 | my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 | my rev@02963e448370+ other rev@97c705ade336 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | 0 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| C b | C b | ||||
| -------------- | -------------- | ||||
| $ tm "um a b" "um a b" " " "9 do merge with ancestor in a" | $ tm "um a b" "um a b" " " "9 do merge with ancestor in a" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:um a b R:um a b W: - 9 do merge with ancestor in a | test L:um a b R:um a b W: - 9 do merge with ancestor in a | ||||
| -------------- | -------------- | ||||
| searching for copies back to rev 1 | searching for copies back to rev 1 | ||||
| unmatched files new in both: | unmatched files new in both: | ||||
| b | b | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 | ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both renamed from a -> m (premerge) | b: both renamed from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 | my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 | my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 | ||||
| b: both renamed from a -> m (merge) | b: both renamed from a -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 | my b@62e7bf090eba+ other b@49b6d8032493 ancestor a@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 | my rev@62e7bf090eba+ other rev@49b6d8032493 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| -------------- | -------------- | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e | ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e | ||||
| note: possible conflict - a was renamed multiple times to: | note: possible conflict - a was renamed multiple times to: | ||||
| b | b | ||||
| c | c | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| c: remote created -> g | c: remote created -> g | ||||
| getting c | getting c | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 | my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 | my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | 1 files updated, 1 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M c | M c | ||||
| C b | C b | ||||
| -------------- | -------------- | ||||
| $ tm "nc a b" "up b " " " "12 merge b no ancestor" | $ tm "nc a b" "up b " " " "12 merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up b W: - 12 merge b no ancestor | test L:nc a b R:up b W: - 12 merge b no ancestor | ||||
| -------------- | -------------- | ||||
| searching for copies back to rev 1 | searching for copies back to rev 1 | ||||
| unmatched files new in both: | unmatched files new in both: | ||||
| b | b | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 | my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 | my b@86a2aa42fc76+ other b@af30c7647fc7 ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@af30c7647fc7 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| C a | C a | ||||
| -------------- | -------------- | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: other deleted -> r | a: other deleted -> r | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 1 files removed, 0 files unresolved | 0 files updated, 2 files merged, 1 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| -------------- | -------------- | ||||
| $ tm "nc a b" "up a b" " " "14 merge b no ancestor" | $ tm "nc a b" "up a b" " " "14 merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up a b W: - 14 merge b no ancestor | test L:nc a b R:up a b W: - 14 merge b no ancestor | ||||
| -------------- | -------------- | ||||
| searching for copies back to rev 1 | searching for copies back to rev 1 | ||||
| unmatched files new in both: | unmatched files new in both: | ||||
| b | b | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: remote is newer -> g | a: remote is newer -> g | ||||
| getting a | getting a | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M a | M a | ||||
| M b | M b | ||||
| -------------- | -------------- | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ancestor: 924404dff337, local: 59318016310c+, remote: bdb19105162a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: other deleted -> r | a: other deleted -> r | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | my b@59318016310c+ other b@bdb19105162a ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@59318016310c+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 1 files removed, 0 files unresolved | 0 files updated, 2 files merged, 1 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| -------------- | -------------- | ||||
| $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" | $ tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:nc a b R:up a b W: - 16 get a, merge b no ancestor | test L:nc a b R:up a b W: - 16 get a, merge b no ancestor | ||||
| -------------- | -------------- | ||||
| searching for copies back to rev 1 | searching for copies back to rev 1 | ||||
| unmatched files new in both: | unmatched files new in both: | ||||
| b | b | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ancestor: 924404dff337, local: 86a2aa42fc76+, remote: 8dbce441892a | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| a: remote is newer -> g | a: remote is newer -> g | ||||
| getting a | getting a | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | my b@86a2aa42fc76+ other b@8dbce441892a ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | my rev@86a2aa42fc76+ other rev@8dbce441892a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M a | M a | ||||
| M b | M b | ||||
| -------------- | -------------- | ||||
| $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" | $ tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" | ||||
| created new head | created new head | ||||
| -------------- | -------------- | ||||
| test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor | test L:up a b R:nc a b W: - 17 keep a, merge b no ancestor | ||||
| -------------- | -------------- | ||||
| searching for copies back to rev 1 | searching for copies back to rev 1 | ||||
| unmatched files new in both: | unmatched files new in both: | ||||
| b | b | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 | ancestor: 924404dff337, local: 0b76e65c8289+, remote: 4ce40f5aca24 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 | my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 | my b@0b76e65c8289+ other b@4ce40f5aca24 ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | my rev@0b76e65c8289+ other rev@4ce40f5aca24 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| C a | C a | ||||
| -------------- | -------------- | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| a: prompt deleted/changed -> m (premerge) | a: prompt deleted/changed -> m (premerge) | ||||
| picked tool ':prompt' for a (binary False symlink False changedelete True) | picked tool ':prompt' for a (binary False symlink False changedelete True) | ||||
| other [merge rev] changed a which local [working copy] deleted | other [merge rev] changed a which local [working copy] deleted | ||||
| use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u | use (c)hanged version, leave (d)eleted, or leave (u)nresolved? u | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 | my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 | my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 | my b@02963e448370+ other b@8dbce441892a ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 | my rev@02963e448370+ other rev@8dbce441892a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 1 files unresolved | 0 files updated, 2 files merged, 0 files removed, 1 files unresolved | ||||
| use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | ||||
| -------------- | -------------- | ||||
| M a | M a | ||||
| M b | M b | ||||
| abort: unresolved merge conflicts (see 'hg help resolve') | abort: unresolved merge conflicts (see 'hg help resolve') | ||||
| -------------- | -------------- | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| a: prompt changed/deleted -> m (premerge) | a: prompt changed/deleted -> m (premerge) | ||||
| picked tool ':prompt' for a (binary False symlink False changedelete True) | picked tool ':prompt' for a (binary False symlink False changedelete True) | ||||
| local [working copy] changed a which other [merge rev] deleted | local [working copy] changed a which other [merge rev] deleted | ||||
| use (c)hanged version, (d)elete, or leave (u)nresolved? u | use (c)hanged version, (d)elete, or leave (u)nresolved? u | ||||
| b: both created -> m (premerge) | b: both created -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b | merging b | ||||
| my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 | my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| b: both created -> m (merge) | b: both created -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 | my b@0b76e65c8289+ other b@bdb19105162a ancestor b@000000000000 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 | my rev@0b76e65c8289+ other rev@bdb19105162a ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 1 files unresolved | 0 files updated, 2 files merged, 0 files removed, 1 files unresolved | ||||
| use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| C a | C a | ||||
| abort: unresolved merge conflicts (see 'hg help resolve') | abort: unresolved merge conflicts (see 'hg help resolve') | ||||
| -------------- | -------------- | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493 | ancestor: 924404dff337, local: e300d1c794ec+, remote: 49b6d8032493 | ||||
| preserving a for resolve of b | preserving a for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| removing a | removing a | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: remote moved from a -> m (premerge) | b: remote moved from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging a and b to b | merging a and b to b | ||||
| my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 | my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 | my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 | ||||
| b: remote moved from a -> m (merge) | b: remote moved from a -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 | my b@e300d1c794ec+ other b@49b6d8032493 ancestor a@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 | my rev@e300d1c794ec+ other rev@49b6d8032493 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| a | a | ||||
| -------------- | -------------- | ||||
| checking for directory renames | checking for directory renames | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71 | ancestor: 924404dff337, local: 62e7bf090eba+, remote: f4db7e329e71 | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| starting 4 threads for background file closing (?) | starting 4 threads for background file closing (?) | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b and a to b | merging b and a to b | ||||
| my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 | my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 | my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 | ||||
| b: local copied/moved from a -> m (merge) | b: local copied/moved from a -> m (merge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 | my b@62e7bf090eba+ other a@f4db7e329e71 ancestor a@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/b* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/b* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 | my rev@62e7bf090eba+ other rev@f4db7e329e71 ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | 0 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| a | a | ||||
| -------------- | -------------- | ||||
| resolving manifests | resolving manifests | ||||
| branchmerge: True, force: False, partial: False | branchmerge: True, force: False, partial: False | ||||
| ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f | ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f | ||||
| preserving b for resolve of b | preserving b for resolve of b | ||||
| preserving rev for resolve of rev | preserving rev for resolve of rev | ||||
| c: remote created -> g | c: remote created -> g | ||||
| getting c | getting c | ||||
| b: local copied/moved from a -> m (premerge) | b: local copied/moved from a -> m (premerge) | ||||
| picked tool 'python ../merge' for b (binary False symlink False changedelete False) | picked tool '* ../merge' for b (binary False symlink False changedelete False) (glob) | ||||
| merging b and a to b | merging b and a to b | ||||
| my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337 | my b@02963e448370+ other a@2b958612230f ancestor a@924404dff337 | ||||
| premerge successful | premerge successful | ||||
| rev: versions differ -> m (premerge) | rev: versions differ -> m (premerge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| merging rev | merging rev | ||||
| my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 | my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 | ||||
| rev: versions differ -> m (merge) | rev: versions differ -> m (merge) | ||||
| picked tool 'python ../merge' for rev (binary False symlink False changedelete False) | picked tool '* ../merge' for rev (binary False symlink False changedelete False) (glob) | ||||
| my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 | my rev@02963e448370+ other rev@2b958612230f ancestor rev@924404dff337 | ||||
| launching merge tool: python ../merge *$TESTTMP/t/t/rev* * * (glob) | launching merge tool: * ../merge *$TESTTMP/t/t/rev* * * (glob) | ||||
| merge tool returned: 0 | merge tool returned: 0 | ||||
| 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | 1 files updated, 2 files merged, 0 files removed, 0 files unresolved | ||||
| (branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
| -------------- | -------------- | ||||
| M b | M b | ||||
| a | a | ||||
| M c | M c | ||||
| -------------- | -------------- | ||||
| None) | None) | ||||
| define) | define) | ||||
| hg: parse error: missing argument | hg: parse error: missing argument | ||||
| [255] | [255] | ||||
| test that chained `or` operations never eat up stack (issue4624) | test that chained `or` operations never eat up stack (issue4624) | ||||
| (uses `0:1` instead of `0` to avoid future optimization of trivial revisions) | (uses `0:1` instead of `0` to avoid future optimization of trivial revisions) | ||||
| $ hg log -T '{rev}\n' -r `python -c "print '+'.join(['0:1'] * 500)"` | $ hg log -T '{rev}\n' -r `$PYTHON -c "print '+'.join(['0:1'] * 500)"` | ||||
| 0 | 0 | ||||
| 1 | 1 | ||||
| test that repeated `-r` options never eat up stack (issue4565) | test that repeated `-r` options never eat up stack (issue4565) | ||||
| (uses `-r 0::1` to avoid possible optimization at old-style parser) | (uses `-r 0::1` to avoid possible optimization at old-style parser) | ||||
| $ hg log -T '{rev}\n' `python -c "for i in xrange(500): print '-r 0::1 ',"` | $ hg log -T '{rev}\n' `$PYTHON -c "for i in xrange(500): print '-r 0::1 ',"` | ||||
| 0 | 0 | ||||
| 1 | 1 | ||||
| check that conversion to only works | check that conversion to only works | ||||
| $ try --optimize '::3 - ::1' | $ try --optimize '::3 - ::1' | ||||
| (minus | (minus | ||||
| (dagrangepre | (dagrangepre | ||||
| ('symbol', '3')) | ('symbol', '3')) | ||||
| > | > | ||||
| > [hooks] | > [hooks] | ||||
| > changegroup = sh -c "printenv.py changegroup-in-remote 0 ../dummylog" | > changegroup = sh -c "printenv.py changegroup-in-remote 0 ../dummylog" | ||||
| > EOF | > EOF | ||||
| $ cd .. | $ cd .. | ||||
| repo not found error | repo not found error | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local | ||||
| remote: abort: repository nonexistent not found! | remote: abort: repository nonexistent not found! | ||||
| abort: no suitable response from remote hg! | abort: no suitable response from remote hg! | ||||
| [255] | [255] | ||||
| non-existent absolute path | non-existent absolute path | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy//`pwd`/nonexistent local | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy//`pwd`/nonexistent local | ||||
| remote: abort: repository /$TESTTMP/nonexistent not found! | remote: abort: repository /$TESTTMP/nonexistent not found! | ||||
| abort: no suitable response from remote hg! | abort: no suitable response from remote hg! | ||||
| [255] | [255] | ||||
| clone remote via stream | clone remote via stream | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream | ||||
| streaming all changes | streaming all changes | ||||
| 4 files to transfer, 602 bytes of data | 4 files to transfer, 602 bytes of data | ||||
| transferred 602 bytes in * seconds (*) (glob) | transferred 602 bytes in * seconds (*) (glob) | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| updating to branch default | updating to branch default | ||||
| 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ cd local-stream | $ cd local-stream | ||||
| $ hg verify | $ hg verify | ||||
| checking changesets | checking changesets | ||||
| checking manifests | checking manifests | ||||
| crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
| checking files | checking files | ||||
| 2 files, 3 changesets, 2 total revisions | 2 files, 3 changesets, 2 total revisions | ||||
| $ hg branches | $ hg branches | ||||
| default 0:1160648e36ce | default 0:1160648e36ce | ||||
| $ cd .. | $ cd .. | ||||
| clone bookmarks via stream | clone bookmarks via stream | ||||
| $ hg -R local-stream book mybook | $ hg -R local-stream book mybook | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2 | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2 | ||||
| streaming all changes | streaming all changes | ||||
| 4 files to transfer, 602 bytes of data | 4 files to transfer, 602 bytes of data | ||||
| transferred 602 bytes in * seconds (*) (glob) | transferred 602 bytes in * seconds (*) (glob) | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| updating to branch default | updating to branch default | ||||
| 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ cd stream2 | $ cd stream2 | ||||
| $ hg book | $ hg book | ||||
| mybook 0:1160648e36ce | mybook 0:1160648e36ce | ||||
| $ cd .. | $ cd .. | ||||
| $ rm -rf local-stream stream2 | $ rm -rf local-stream stream2 | ||||
| clone remote via pull | clone remote via pull | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local | ||||
| requesting all changes | requesting all changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 3 changesets with 2 changes to 2 files | added 3 changesets with 2 changes to 2 files | ||||
| updating to branch default | updating to branch default | ||||
| 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| > [hooks] | > [hooks] | ||||
| > changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | > changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | ||||
| > EOF | > EOF | ||||
| empty default pull | empty default pull | ||||
| $ hg paths | $ hg paths | ||||
| default = ssh://user@dummy/remote | default = ssh://user@dummy/remote | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| pull from wrong ssh URL | pull from wrong ssh URL | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist | ||||
| pulling from ssh://user@dummy/doesnotexist | pulling from ssh://user@dummy/doesnotexist | ||||
| remote: abort: repository doesnotexist not found! | remote: abort: repository doesnotexist not found! | ||||
| abort: no suitable response from remote hg! | abort: no suitable response from remote hg! | ||||
| [255] | [255] | ||||
| local change | local change | ||||
| $ echo bleah > foo | $ echo bleah > foo | ||||
| parent: 0:1160648e36ce | parent: 0:1160648e36ce | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: add | summary: add | ||||
| find incoming on the remote side | find incoming on the remote side | ||||
| $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/local | $ hg incoming -R ../remote -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/local | ||||
| comparing with ssh://user@dummy/local | comparing with ssh://user@dummy/local | ||||
| searching for changes | searching for changes | ||||
| changeset: 3:a28a9d1a809c | changeset: 3:a28a9d1a809c | ||||
| tag: tip | tag: tip | ||||
| parent: 0:1160648e36ce | parent: 0:1160648e36ce | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: add | summary: add | ||||
| find incoming on the remote side (using absolute path) | find incoming on the remote side (using absolute path) | ||||
| $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`" | $ hg incoming -R ../remote -e "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`" | ||||
| comparing with ssh://user@dummy/$TESTTMP/local | comparing with ssh://user@dummy/$TESTTMP/local | ||||
| searching for changes | searching for changes | ||||
| changeset: 3:a28a9d1a809c | changeset: 3:a28a9d1a809c | ||||
| tag: tip | tag: tip | ||||
| parent: 0:1160648e36ce | parent: 0:1160648e36ce | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: add | summary: add | ||||
| bleah | bleah | ||||
| $ echo z > z | $ echo z > z | ||||
| $ hg ci -A -m z z | $ hg ci -A -m z z | ||||
| created new head | created new head | ||||
| test pushkeys and bookmarks | test pushkeys and bookmarks | ||||
| $ cd ../local | $ cd ../local | ||||
| $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces | $ hg debugpushkey --config ui.ssh="$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces | ||||
| bookmarks | bookmarks | ||||
| namespaces | namespaces | ||||
| phases | phases | ||||
| $ hg book foo -r 0 | $ hg book foo -r 0 | ||||
| $ hg out -B | $ hg out -B | ||||
| comparing with ssh://user@dummy/remote | comparing with ssh://user@dummy/remote | ||||
| searching for changed bookmarks | searching for changed bookmarks | ||||
| foo 1160648e36ce | foo 1160648e36ce | ||||
| $ hg push -B foo | $ hg push -B foo | ||||
| pushing to ssh://user@dummy/remote | pushing to ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| exporting bookmark foo | exporting bookmark foo | ||||
| [1] | [1] | ||||
| $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks | $ hg debugpushkey --config ui.ssh="$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks | ||||
| foo 1160648e36cec0054048a7edc4110c6f84fde594 | foo 1160648e36cec0054048a7edc4110c6f84fde594 | ||||
| $ hg book -f foo | $ hg book -f foo | ||||
| $ hg push --traceback | $ hg push --traceback | ||||
| pushing to ssh://user@dummy/remote | pushing to ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| updating bookmark foo | updating bookmark foo | ||||
| [1] | [1] | ||||
| summary: z | summary: z | ||||
| clone bookmarks | clone bookmarks | ||||
| $ hg -R ../remote bookmark test | $ hg -R ../remote bookmark test | ||||
| $ hg -R ../remote bookmarks | $ hg -R ../remote bookmarks | ||||
| * test 4:6c0482d977a3 | * test 4:6c0482d977a3 | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks | ||||
| requesting all changes | requesting all changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 6 changesets with 5 changes to 4 files (+1 heads) | added 6 changesets with 5 changes to 4 files (+1 heads) | ||||
| updating to branch default | updating to branch default | ||||
| 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ hg -R local-bookmarks bookmarks | $ hg -R local-bookmarks bookmarks | ||||
| $ cd .. | $ cd .. | ||||
| hide outer repo | hide outer repo | ||||
| $ hg init | $ hg init | ||||
| Test remote paths with spaces (issue2983): | Test remote paths with spaces (issue2983): | ||||
| $ hg init --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | $ hg init --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | ||||
| $ touch "$TESTTMP/a repo/test" | $ touch "$TESTTMP/a repo/test" | ||||
| $ hg -R 'a repo' commit -A -m "test" | $ hg -R 'a repo' commit -A -m "test" | ||||
| adding test | adding test | ||||
| $ hg -R 'a repo' tag tag | $ hg -R 'a repo' tag tag | ||||
| $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | $ hg id --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | ||||
| 73649e48688a | 73649e48688a | ||||
| $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO" | $ hg id --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO" | ||||
| abort: unknown revision 'noNoNO'! | abort: unknown revision 'noNoNO'! | ||||
| [255] | [255] | ||||
| Test (non-)escaping of remote paths with spaces when cloning (issue3145): | Test (non-)escaping of remote paths with spaces when cloning (issue3145): | ||||
| $ hg clone --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | $ hg clone --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | ||||
| destination directory: a repo | destination directory: a repo | ||||
| abort: destination 'a repo' is not empty | abort: destination 'a repo' is not empty | ||||
| [255] | [255] | ||||
| Test hg-ssh using a helper script that will restore PYTHONPATH (which might | Test hg-ssh using a helper script that will restore PYTHONPATH (which might | ||||
| have been cleared by a hg.exe wrapper) and invoke hg-ssh with the right | have been cleared by a hg.exe wrapper) and invoke hg-ssh with the right | ||||
| parameters: | parameters: | ||||
| > def hook(ui, repo, **kwargs): | > def hook(ui, repo, **kwargs): | ||||
| > ui.write('hook failure!\n') | > ui.write('hook failure!\n') | ||||
| > ui.flush() | > ui.flush() | ||||
| > return 1 | > return 1 | ||||
| > EOF | > EOF | ||||
| $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc | $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc | ||||
| $ hg -q --config ui.ssh="python $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout | $ hg -q --config ui.ssh="$PYTHON $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout | ||||
| $ cd hookout | $ cd hookout | ||||
| $ touch hookfailure | $ touch hookfailure | ||||
| $ hg -q commit -A -m 'remote hook failure' | $ hg -q commit -A -m 'remote hook failure' | ||||
| $ hg --config ui.ssh="python $TESTDIR/dummyssh" push | $ hg --config ui.ssh="$PYTHON $TESTDIR/dummyssh" push | ||||
| pushing to ssh://user@dummy/remote | pushing to ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| remote: hook failure! | remote: hook failure! | ||||
| remote: transaction abort! | remote: transaction abort! | ||||
| remote: rollback completed | remote: rollback completed | ||||
| remote: abort: pretxnchangegroup.fail hook failed | remote: abort: pretxnchangegroup.fail hook failed | ||||
| [1] | [1] | ||||
| abort during pull is properly reported as such | abort during pull is properly reported as such | ||||
| $ echo morefoo >> ../remote/foo | $ echo morefoo >> ../remote/foo | ||||
| $ hg -R ../remote commit --message "more foo to be pulled" | $ hg -R ../remote commit --message "more foo to be pulled" | ||||
| $ cat >> ../remote/.hg/hgrc << EOF | $ cat >> ../remote/.hg/hgrc << EOF | ||||
| > [extensions] | > [extensions] | ||||
| > crash = ${TESTDIR}/crashgetbundler.py | > crash = ${TESTDIR}/crashgetbundler.py | ||||
| > EOF | > EOF | ||||
| $ hg --config ui.ssh="python $TESTDIR/dummyssh" pull | $ hg --config ui.ssh="$PYTHON $TESTDIR/dummyssh" pull | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| adding changesets | adding changesets | ||||
| remote: abort: this is an exercise | remote: abort: this is an exercise | ||||
| transaction abort! | transaction abort! | ||||
| rollback completed | rollback completed | ||||
| abort: stream ended unexpectedly (got 0 bytes, expected 4) | abort: stream ended unexpectedly (got 0 bytes, expected 4) | ||||
| [255] | [255] | ||||
| (run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
| $ hg up tip | $ hg up tip | ||||
| 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ cd .. | $ cd .. | ||||
| clone remote via stream | clone remote via stream | ||||
| $ for i in 0 1 2 3 4 5 6 7 8; do | $ for i in 0 1 2 3 4 5 6 7 8; do | ||||
| > hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed -r "$i" ssh://user@dummy/remote test-"$i" | > hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed -r "$i" ssh://user@dummy/remote test-"$i" | ||||
| > if cd test-"$i"; then | > if cd test-"$i"; then | ||||
| > hg verify | > hg verify | ||||
| > cd .. | > cd .. | ||||
| > fi | > fi | ||||
| > done | > done | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| $ hg verify | $ hg verify | ||||
| checking changesets | checking changesets | ||||
| checking manifests | checking manifests | ||||
| crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
| checking files | checking files | ||||
| 4 files, 9 changesets, 7 total revisions | 4 files, 9 changesets, 7 total revisions | ||||
| $ cd .. | $ cd .. | ||||
| $ cd test-1 | $ cd test-1 | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" -r 4 ssh://user@dummy/remote | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" -r 4 ssh://user@dummy/remote | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 1 changesets with 0 changes to 0 files (+1 heads) | added 1 changesets with 0 changes to 0 files (+1 heads) | ||||
| (run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
| $ hg verify | $ hg verify | ||||
| checking changesets | checking changesets | ||||
| checking manifests | checking manifests | ||||
| crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
| checking files | checking files | ||||
| 1 files, 3 changesets, 2 total revisions | 1 files, 3 changesets, 2 total revisions | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 6 changesets with 5 changes to 4 files | added 6 changesets with 5 changes to 4 files | ||||
| (run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
| $ cd .. | $ cd .. | ||||
| $ cd test-2 | $ cd test-2 | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" -r 5 ssh://user@dummy/remote | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" -r 5 ssh://user@dummy/remote | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 2 changesets with 0 changes to 0 files (+1 heads) | added 2 changesets with 0 changes to 0 files (+1 heads) | ||||
| (run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
| $ hg verify | $ hg verify | ||||
| checking changesets | checking changesets | ||||
| checking manifests | checking manifests | ||||
| crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
| checking files | checking files | ||||
| 1 files, 5 changesets, 3 total revisions | 1 files, 5 changesets, 3 total revisions | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 4 changesets with 4 changes to 4 files | added 4 changesets with 4 changes to 4 files | ||||
| (run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
| $ hg verify | $ hg verify | ||||
| checking changesets | checking changesets | ||||
| checking manifests | checking manifests | ||||
| crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
| checking files | checking files | ||||
| 4 files, 9 changesets, 7 total revisions | 4 files, 9 changesets, 7 total revisions | ||||
| $ cd .. | $ cd .. | ||||
| > | > | ||||
| > [hooks] | > [hooks] | ||||
| > changegroup = sh -c "printenv.py changegroup-in-remote 0 ../dummylog" | > changegroup = sh -c "printenv.py changegroup-in-remote 0 ../dummylog" | ||||
| > EOF | > EOF | ||||
| $ cd .. | $ cd .. | ||||
| repo not found error | repo not found error | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/nonexistent local | ||||
| remote: abort: repository nonexistent not found! | remote: abort: repository nonexistent not found! | ||||
| abort: no suitable response from remote hg! | abort: no suitable response from remote hg! | ||||
| [255] | [255] | ||||
| non-existent absolute path | non-existent absolute path | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/nonexistent local | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/nonexistent local | ||||
| remote: abort: repository $TESTTMP/nonexistent not found! | remote: abort: repository $TESTTMP/nonexistent not found! | ||||
| abort: no suitable response from remote hg! | abort: no suitable response from remote hg! | ||||
| [255] | [255] | ||||
| clone remote via stream | clone remote via stream | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/remote local-stream | ||||
| streaming all changes | streaming all changes | ||||
| 4 files to transfer, 602 bytes of data | 4 files to transfer, 602 bytes of data | ||||
| transferred 602 bytes in * seconds (*) (glob) | transferred 602 bytes in * seconds (*) (glob) | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| updating to branch default | updating to branch default | ||||
| 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ cd local-stream | $ cd local-stream | ||||
| $ hg verify | $ hg verify | ||||
| checking changesets | checking changesets | ||||
| checking manifests | checking manifests | ||||
| crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
| checking files | checking files | ||||
| 2 files, 3 changesets, 2 total revisions | 2 files, 3 changesets, 2 total revisions | ||||
| $ hg branches | $ hg branches | ||||
| default 0:1160648e36ce | default 0:1160648e36ce | ||||
| $ cd .. | $ cd .. | ||||
| clone bookmarks via stream | clone bookmarks via stream | ||||
| $ hg -R local-stream book mybook | $ hg -R local-stream book mybook | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2 | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" --uncompressed ssh://user@dummy/local-stream stream2 | ||||
| streaming all changes | streaming all changes | ||||
| 4 files to transfer, 602 bytes of data | 4 files to transfer, 602 bytes of data | ||||
| transferred 602 bytes in * seconds (*) (glob) | transferred 602 bytes in * seconds (*) (glob) | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| updating to branch default | updating to branch default | ||||
| 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ cd stream2 | $ cd stream2 | ||||
| $ hg book | $ hg book | ||||
| mybook 0:1160648e36ce | mybook 0:1160648e36ce | ||||
| $ cd .. | $ cd .. | ||||
| $ rm -rf local-stream stream2 | $ rm -rf local-stream stream2 | ||||
| clone remote via pull | clone remote via pull | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local | ||||
| requesting all changes | requesting all changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 3 changesets with 2 changes to 2 files | added 3 changesets with 2 changes to 2 files | ||||
| updating to branch default | updating to branch default | ||||
| 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| > [hooks] | > [hooks] | ||||
| > changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | > changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | ||||
| > EOF | > EOF | ||||
| empty default pull | empty default pull | ||||
| $ hg paths | $ hg paths | ||||
| default = ssh://user@dummy/remote | default = ssh://user@dummy/remote | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| pull from wrong ssh URL | pull from wrong ssh URL | ||||
| $ hg pull -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist | $ hg pull -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/doesnotexist | ||||
| pulling from ssh://user@dummy/doesnotexist | pulling from ssh://user@dummy/doesnotexist | ||||
| remote: abort: repository doesnotexist not found! | remote: abort: repository doesnotexist not found! | ||||
| abort: no suitable response from remote hg! | abort: no suitable response from remote hg! | ||||
| [255] | [255] | ||||
| local change | local change | ||||
| $ echo bleah > foo | $ echo bleah > foo | ||||
| parent: 0:1160648e36ce | parent: 0:1160648e36ce | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: add | summary: add | ||||
| find incoming on the remote side | find incoming on the remote side | ||||
| $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/local | $ hg incoming -R ../remote -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/local | ||||
| comparing with ssh://user@dummy/local | comparing with ssh://user@dummy/local | ||||
| searching for changes | searching for changes | ||||
| changeset: 3:a28a9d1a809c | changeset: 3:a28a9d1a809c | ||||
| tag: tip | tag: tip | ||||
| parent: 0:1160648e36ce | parent: 0:1160648e36ce | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: add | summary: add | ||||
| find incoming on the remote side (using absolute path) | find incoming on the remote side (using absolute path) | ||||
| $ hg incoming -R ../remote -e "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`" | $ hg incoming -R ../remote -e "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/`pwd`" | ||||
| comparing with ssh://user@dummy/$TESTTMP/local | comparing with ssh://user@dummy/$TESTTMP/local | ||||
| searching for changes | searching for changes | ||||
| changeset: 3:a28a9d1a809c | changeset: 3:a28a9d1a809c | ||||
| tag: tip | tag: tip | ||||
| parent: 0:1160648e36ce | parent: 0:1160648e36ce | ||||
| user: test | user: test | ||||
| date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
| summary: add | summary: add | ||||
| bleah | bleah | ||||
| $ echo z > z | $ echo z > z | ||||
| $ hg ci -A -m z z | $ hg ci -A -m z z | ||||
| created new head | created new head | ||||
| test pushkeys and bookmarks | test pushkeys and bookmarks | ||||
| $ cd ../local | $ cd ../local | ||||
| $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces | $ hg debugpushkey --config ui.ssh="$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote namespaces | ||||
| bookmarks | bookmarks | ||||
| namespaces | namespaces | ||||
| phases | phases | ||||
| $ hg book foo -r 0 | $ hg book foo -r 0 | ||||
| $ hg out -B | $ hg out -B | ||||
| comparing with ssh://user@dummy/remote | comparing with ssh://user@dummy/remote | ||||
| searching for changed bookmarks | searching for changed bookmarks | ||||
| foo 1160648e36ce | foo 1160648e36ce | ||||
| $ hg push -B foo | $ hg push -B foo | ||||
| pushing to ssh://user@dummy/remote | pushing to ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| exporting bookmark foo | exporting bookmark foo | ||||
| [1] | [1] | ||||
| $ hg debugpushkey --config ui.ssh="python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks | $ hg debugpushkey --config ui.ssh="$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote bookmarks | ||||
| foo 1160648e36cec0054048a7edc4110c6f84fde594 | foo 1160648e36cec0054048a7edc4110c6f84fde594 | ||||
| $ hg book -f foo | $ hg book -f foo | ||||
| $ hg push --traceback | $ hg push --traceback | ||||
| pushing to ssh://user@dummy/remote | pushing to ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| updating bookmark foo | updating bookmark foo | ||||
| [1] | [1] | ||||
| summary: z | summary: z | ||||
| clone bookmarks | clone bookmarks | ||||
| $ hg -R ../remote bookmark test | $ hg -R ../remote bookmark test | ||||
| $ hg -R ../remote bookmarks | $ hg -R ../remote bookmarks | ||||
| * test 4:6c0482d977a3 | * test 4:6c0482d977a3 | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote local-bookmarks | ||||
| requesting all changes | requesting all changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 6 changesets with 5 changes to 4 files (+1 heads) | added 6 changesets with 5 changes to 4 files (+1 heads) | ||||
| updating to branch default | updating to branch default | ||||
| 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ hg -R local-bookmarks bookmarks | $ hg -R local-bookmarks bookmarks | ||||
| $ cd .. | $ cd .. | ||||
| hide outer repo | hide outer repo | ||||
| $ hg init | $ hg init | ||||
| Test remote paths with spaces (issue2983): | Test remote paths with spaces (issue2983): | ||||
| $ hg init --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | $ hg init --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | ||||
| $ touch "$TESTTMP/a repo/test" | $ touch "$TESTTMP/a repo/test" | ||||
| $ hg -R 'a repo' commit -A -m "test" | $ hg -R 'a repo' commit -A -m "test" | ||||
| adding test | adding test | ||||
| $ hg -R 'a repo' tag tag | $ hg -R 'a repo' tag tag | ||||
| $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | $ hg id --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | ||||
| 73649e48688a | 73649e48688a | ||||
| $ hg id --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO" | $ hg id --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo#noNoNO" | ||||
| abort: unknown revision 'noNoNO'! | abort: unknown revision 'noNoNO'! | ||||
| [255] | [255] | ||||
| Test (non-)escaping of remote paths with spaces when cloning (issue3145): | Test (non-)escaping of remote paths with spaces when cloning (issue3145): | ||||
| $ hg clone --ssh "python \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | $ hg clone --ssh "$PYTHON \"$TESTDIR/dummyssh\"" "ssh://user@dummy/a repo" | ||||
| destination directory: a repo | destination directory: a repo | ||||
| abort: destination 'a repo' is not empty | abort: destination 'a repo' is not empty | ||||
| [255] | [255] | ||||
| Make sure hg is really paranoid in serve --stdio mode. It used to be | Make sure hg is really paranoid in serve --stdio mode. It used to be | ||||
| possible to get a debugger REPL by specifying a repo named --debugger. | possible to get a debugger REPL by specifying a repo named --debugger. | ||||
| $ hg -R --debugger serve --stdio | $ hg -R --debugger serve --stdio | ||||
| abort: potentially unsafe serve --stdio invocation: ['-R', '--debugger', 'serve', '--stdio'] | abort: potentially unsafe serve --stdio invocation: ['-R', '--debugger', 'serve', '--stdio'] | ||||
| > def hook(ui, repo, **kwargs): | > def hook(ui, repo, **kwargs): | ||||
| > ui.write('hook failure!\n') | > ui.write('hook failure!\n') | ||||
| > ui.flush() | > ui.flush() | ||||
| > return 1 | > return 1 | ||||
| > EOF | > EOF | ||||
| $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc | $ echo "pretxnchangegroup.fail = python:$TESTTMP/failhook:hook" >> remote/.hg/hgrc | ||||
| $ hg -q --config ui.ssh="python $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout | $ hg -q --config ui.ssh="$PYTHON $TESTDIR/dummyssh" clone ssh://user@dummy/remote hookout | ||||
| $ cd hookout | $ cd hookout | ||||
| $ touch hookfailure | $ touch hookfailure | ||||
| $ hg -q commit -A -m 'remote hook failure' | $ hg -q commit -A -m 'remote hook failure' | ||||
| $ hg --config ui.ssh="python $TESTDIR/dummyssh" push | $ hg --config ui.ssh="$PYTHON $TESTDIR/dummyssh" push | ||||
| pushing to ssh://user@dummy/remote | pushing to ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| remote: adding changesets | remote: adding changesets | ||||
| remote: adding manifests | remote: adding manifests | ||||
| remote: adding file changes | remote: adding file changes | ||||
| remote: added 1 changesets with 1 changes to 1 files | remote: added 1 changesets with 1 changes to 1 files | ||||
| remote: hook failure! | remote: hook failure! | ||||
| remote: transaction abort! | remote: transaction abort! | ||||
| remote: rollback completed | remote: rollback completed | ||||
| remote: pretxnchangegroup.fail hook failed | remote: pretxnchangegroup.fail hook failed | ||||
| abort: push failed on remote | abort: push failed on remote | ||||
| [255] | [255] | ||||
| abort during pull is properly reported as such | abort during pull is properly reported as such | ||||
| $ echo morefoo >> ../remote/foo | $ echo morefoo >> ../remote/foo | ||||
| $ hg -R ../remote commit --message "more foo to be pulled" | $ hg -R ../remote commit --message "more foo to be pulled" | ||||
| $ cat >> ../remote/.hg/hgrc << EOF | $ cat >> ../remote/.hg/hgrc << EOF | ||||
| > [extensions] | > [extensions] | ||||
| > crash = ${TESTDIR}/crashgetbundler.py | > crash = ${TESTDIR}/crashgetbundler.py | ||||
| > EOF | > EOF | ||||
| $ hg --config ui.ssh="python $TESTDIR/dummyssh" pull | $ hg --config ui.ssh="$PYTHON $TESTDIR/dummyssh" pull | ||||
| pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
| searching for changes | searching for changes | ||||
| remote: abort: this is an exercise | remote: abort: this is an exercise | ||||
| abort: pull failed on remote | abort: pull failed on remote | ||||
| [255] | [255] | ||||
| path sub | path sub | ||||
| source ../sub | source ../sub | ||||
| revision 863c1745b441bd97a8c4a096e87793073f4fb215 | revision 863c1745b441bd97a8c4a096e87793073f4fb215 | ||||
| $ killdaemons.py | $ killdaemons.py | ||||
| subrepo paths with ssh urls | subrepo paths with ssh urls | ||||
| $ hg clone -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/cloned sshclone | $ hg clone -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/cloned sshclone | ||||
| requesting all changes | requesting all changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 1 changesets with 3 changes to 3 files | added 1 changesets with 3 changes to 3 files | ||||
| updating to branch default | updating to branch default | ||||
| cloning subrepo sub from ssh://user@dummy/sub | cloning subrepo sub from ssh://user@dummy/sub | ||||
| requesting all changes | requesting all changes | ||||
| adding changesets | adding changesets | ||||
| adding manifests | adding manifests | ||||
| adding file changes | adding file changes | ||||
| added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
| 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
| $ hg -R sshclone push -e "python \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/cloned | $ hg -R sshclone push -e "$PYTHON \"$TESTDIR/dummyssh\"" ssh://user@dummy/`pwd`/cloned | ||||
| pushing to ssh://user@dummy/$TESTTMP/cloned | pushing to ssh://user@dummy/$TESTTMP/cloned | ||||
| pushing subrepo sub to ssh://user@dummy/$TESTTMP/sub | pushing subrepo sub to ssh://user@dummy/$TESTTMP/sub | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| searching for changes | searching for changes | ||||
| no changes found | no changes found | ||||
| [1] | [1] | ||||
| $ cat dummylog | $ cat dummylog | ||||
| Got arguments 1:user@dummy 2:hg -R cloned serve --stdio | Got arguments 1:user@dummy 2:hg -R cloned serve --stdio | ||||
| Got arguments 1:user@dummy 2:hg -R sub serve --stdio | Got arguments 1:user@dummy 2:hg -R sub serve --stdio | ||||
| Got arguments 1:user@dummy 2:hg -R $TESTTMP/cloned serve --stdio | Got arguments 1:user@dummy 2:hg -R $TESTTMP/cloned serve --stdio | ||||
| Got arguments 1:user@dummy 2:hg -R $TESTTMP/sub serve --stdio | Got arguments 1:user@dummy 2:hg -R $TESTTMP/sub serve --stdio | ||||
| #require killdaemons | #require killdaemons | ||||
| $ cat << EOF >> $HGRCPATH | $ cat << EOF >> $HGRCPATH | ||||
| > [format] | > [format] | ||||
| > usegeneraldelta=yes | > usegeneraldelta=yes | ||||
| > [ui] | > [ui] | ||||
| > ssh=python "$TESTDIR/dummyssh" | > ssh=$PYTHON "$TESTDIR/dummyssh" | ||||
| > EOF | > EOF | ||||
| Set up repo | Set up repo | ||||
| $ hg --config experimental.treemanifest=True init repo | $ hg --config experimental.treemanifest=True init repo | ||||
| $ cd repo | $ cd repo | ||||
| Requirements get set on init | Requirements get set on init | ||||
| * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | ||||
| * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | ||||
| * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob) | * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob) | ||||
| * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | ||||
| * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | * - - [*] "GET /?cmd=debugwireargs&one=eins&two=zwei HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=*zlib,none,bzip2 (glob) | ||||
| SSH (try to exercise the ssh functionality with a dummy script): | SSH (try to exercise the ssh functionality with a dummy script): | ||||
| $ hg debugwireargs --ssh "python $TESTDIR/dummyssh" ssh://user@dummy/repo uno due tre quattro | $ hg debugwireargs --ssh "$PYTHON $TESTDIR/dummyssh" ssh://user@dummy/repo uno due tre quattro | ||||
| uno due tre quattro None | uno due tre quattro None | ||||
| $ hg debugwireargs --ssh "python $TESTDIR/dummyssh" ssh://user@dummy/repo eins zwei --four vier | $ hg debugwireargs --ssh "$PYTHON $TESTDIR/dummyssh" ssh://user@dummy/repo eins zwei --four vier | ||||
| eins zwei None vier None | eins zwei None vier None | ||||
| $ hg debugwireargs --ssh "python $TESTDIR/dummyssh" ssh://user@dummy/repo eins zwei | $ hg debugwireargs --ssh "$PYTHON $TESTDIR/dummyssh" ssh://user@dummy/repo eins zwei | ||||
| eins zwei None None None | eins zwei None None None | ||||
| $ hg debugwireargs --ssh "python $TESTDIR/dummyssh" ssh://user@dummy/repo eins zwei --five fuenf | $ hg debugwireargs --ssh "$PYTHON $TESTDIR/dummyssh" ssh://user@dummy/repo eins zwei --five fuenf | ||||
| eins zwei None None None | eins zwei None None None | ||||
| Explicitly kill daemons to let the test exit on Windows | Explicitly kill daemons to let the test exit on Windows | ||||
| $ killdaemons.py | $ killdaemons.py | ||||