##// END OF EJS Templates
phabricator: warn if unable to amend, instead of aborting after posting...
phabricator: warn if unable to amend, instead of aborting after posting There was a divergence in behavior here between obsolete and strip based amending. I first noticed the abort when testing outside of the test harness, but then had trouble recreating it here after reverting the code changes. It turns out, strip based amend was successfully amending the public commit after it was posted! It looks like the protection is in the `commit --amend` command, not in the underlying code that it calls. I considered doing a preflight check and aborting. But the locks are only acquired at the end, if amending, and this is too large a section of code to be wrapped in a maybe-it's-held-or-not context manager for my tastes. Additionally, some people do post-push reviews, and amending is the default behavior, so they shouldn't see a misleading error message. The lack of a 'Differential Revision' entry in the commit message breaks a {phabreview} test, so it had to be partially conditionalized.

File last commit:

r40105:fd4d59cf default
r41198:0101a35d default
Show More
test-logexchange.t
533 lines | 13.9 KiB | text/troff | Tads3Lexer
/ tests / test-logexchange.t
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348 Testing the functionality to pull remotenames
=============================================
$ cat >> $HGRCPATH << EOF
Pulkit Goyal
tests: clone the repo over ssh in tests/test-logexchange.t...
r38002 > [ui]
Matt Harbison
tests: quote PYTHON usage...
r39743 > ssh = "$PYTHON" "$TESTDIR/dummyssh"
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348 > [alias]
> glog = log -G -T '{rev}:{node|short} {desc}'
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079 > [extensions]
> remotenames =
> show =
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348 > EOF
Making a server repo
--------------------
$ hg init server
$ cd server
$ for ch in a b c d e f g h; do
> echo "foo" >> $ch
> hg ci -Aqm "Added "$ch
> done
$ hg glog
@ 7:ec2426147f0e Added h
|
o 6:87d6d6676308 Added g
|
o 5:825660c69f0c Added f
|
o 4:aa98ab95a928 Added e
|
o 3:62615734edd5 Added d
|
o 2:28ad74487de9 Added c
|
o 1:29becc82797a Added b
|
o 0:18d04c59bb5d Added a
$ hg bookmark -r 3 foo
$ hg bookmark -r 6 bar
$ hg up 4
0 files updated, 0 files merged, 3 files removed, 0 files unresolved
$ hg branch wat
marked working directory as branch wat
(branches are permanent and global, did you want a bookmark?)
$ echo foo >> bar
$ hg ci -Aqm "added bar"
Making a client repo
--------------------
$ cd ..
Pulkit Goyal
tests: clone the repo over ssh in tests/test-logexchange.t...
r38002 $ hg clone ssh://user@dummy/server client
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 9 changes to 9 files (+1 heads)
new changesets 18d04c59bb5d:3e1487808078
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348 updating to branch default
8 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd client
$ cat .hg/logexchange/bookmarks
0
Pulkit Goyal
logexchange: introduce helper function to get remote path name...
r36076 87d6d66763085b629e6d7ed56778c79827273022\x00default\x00bar (esc)
62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00default\x00foo (esc)
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348
$ cat .hg/logexchange/branches
0
Pulkit Goyal
logexchange: introduce helper function to get remote path name...
r36076 ec2426147f0e39dbc9cef599b066be6035ce691d\x00default\x00default (esc)
3e1487808078543b0af6d10dadf5d46943578db0\x00default\x00wat (esc)
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079 $ hg show work
o 3e14 (wat) (default/wat) added bar
~
@ ec24 (default/default) Added h
~
$ hg update "default/wat"
1 files updated, 0 files merged, 3 files removed, 0 files unresolved
$ hg identify
3e1487808078 (wat) tip
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348 Making a new server
-------------------
$ cd ..
$ hg init server2
$ cd server2
$ hg pull ../server/
pulling from ../server/
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 9 changes to 9 files (+1 heads)
adding remote bookmark bar
adding remote bookmark foo
new changesets 18d04c59bb5d:3e1487808078
(run 'hg heads' to see heads)
Pulling form the new server
---------------------------
$ cd ../client/
$ hg pull ../server2/
pulling from ../server2/
searching for changes
no changes found
$ cat .hg/logexchange/bookmarks
0
Pulkit Goyal
logexchange: introduce helper function to get remote path name...
r36076 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00default\x00foo (esc)
87d6d66763085b629e6d7ed56778c79827273022\x00default\x00bar (esc)
87d6d66763085b629e6d7ed56778c79827273022\x00$TESTTMP/server2\x00bar (esc)
62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00$TESTTMP/server2\x00foo (esc)
Pulkit Goyal
remotenames: rename related file and storage dir to logexchange...
r35348
$ cat .hg/logexchange/branches
0
Pulkit Goyal
logexchange: introduce helper function to get remote path name...
r36076 3e1487808078543b0af6d10dadf5d46943578db0\x00default\x00wat (esc)
ec2426147f0e39dbc9cef599b066be6035ce691d\x00default\x00default (esc)
ec2426147f0e39dbc9cef599b066be6035ce691d\x00$TESTTMP/server2\x00default (esc)
3e1487808078543b0af6d10dadf5d46943578db0\x00$TESTTMP/server2\x00wat (esc)
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079
$ hg log -G
@ changeset: 8:3e1487808078
| branch: wat
| tag: tip
Pulkit Goyal
remotenames: don't use the default value of logfmt for namespaces...
r36278 | remote branch: $TESTTMP/server2/wat
| remote branch: default/wat
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079 | parent: 4:aa98ab95a928
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: added bar
|
| o changeset: 7:ec2426147f0e
Pulkit Goyal
remotenames: don't use the default value of logfmt for namespaces...
r36278 | | remote branch: $TESTTMP/server2/default
| | remote branch: default/default
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079 | | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: Added h
| |
| o changeset: 6:87d6d6676308
| | bookmark: bar
Pulkit Goyal
remotenames: don't use the default value of logfmt for namespaces...
r36278 | | remote bookmark: $TESTTMP/server2/bar
| | remote bookmark: default/bar
Pulkit Goyal
remotenames: add functionality to hoist remotebookmarks...
r37107 | | hoisted name: bar
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079 | | user: test
| | date: Thu Jan 01 00:00:00 1970 +0000
| | summary: Added g
| |
| o changeset: 5:825660c69f0c
|/ user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added f
|
o changeset: 4:aa98ab95a928
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added e
|
o changeset: 3:62615734edd5
| bookmark: foo
Pulkit Goyal
remotenames: don't use the default value of logfmt for namespaces...
r36278 | remote bookmark: $TESTTMP/server2/foo
| remote bookmark: default/foo
Pulkit Goyal
remotenames: add functionality to hoist remotebookmarks...
r37107 | hoisted name: foo
Pulkit Goyal
remotenames: add new namespaces for remotebookmarks and remotebranches...
r36079 | user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added d
|
o changeset: 2:28ad74487de9
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added c
|
o changeset: 1:29becc82797a
| user: test
| date: Thu Jan 01 00:00:00 1970 +0000
| summary: Added b
|
o changeset: 0:18d04c59bb5d
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Added a
Pulkit Goyal
remotenames: introduce new template keywords for remotenames...
r36080 Testing the templates provided by remotenames extension
`remotenames` keyword
$ hg log -G -T "{rev}:{node|short} {remotenames}\n"
@ 8:3e1487808078 $TESTTMP/server2/wat default/wat
|
| o 7:ec2426147f0e $TESTTMP/server2/default default/default
| |
| o 6:87d6d6676308 $TESTTMP/server2/bar default/bar
| |
| o 5:825660c69f0c
|/
o 4:aa98ab95a928
|
o 3:62615734edd5 $TESTTMP/server2/foo default/foo
|
o 2:28ad74487de9
|
o 1:29becc82797a
|
o 0:18d04c59bb5d
`remotebookmarks` and `remotebranches` keywords
$ hg log -G -T "{rev}:{node|short} [{remotebookmarks}] ({remotebranches})"
@ 8:3e1487808078 [] ($TESTTMP/server2/wat default/wat)
|
| o 7:ec2426147f0e [] ($TESTTMP/server2/default default/default)
| |
| o 6:87d6d6676308 [$TESTTMP/server2/bar default/bar] ()
| |
| o 5:825660c69f0c [] ()
|/
o 4:aa98ab95a928 [] ()
|
o 3:62615734edd5 [$TESTTMP/server2/foo default/foo] ()
|
o 2:28ad74487de9 [] ()
|
o 1:29becc82797a [] ()
|
o 0:18d04c59bb5d [] ()
Pulkit Goyal
remotenames: add functionality to hoist remotebookmarks...
r37107 The `hoistednames` template keyword
$ hg log -GT "{rev}:{node|short} ({hoistednames})"
@ 8:3e1487808078 ()
|
| o 7:ec2426147f0e ()
| |
| o 6:87d6d6676308 (bar)
| |
| o 5:825660c69f0c ()
|/
o 4:aa98ab95a928 ()
|
o 3:62615734edd5 (foo)
|
o 2:28ad74487de9 ()
|
o 1:29becc82797a ()
|
o 0:18d04c59bb5d ()
Pulkit Goyal
remotenames: add three new revsets related to remotenames...
r36167 Testing the revsets provided by remotenames extension
`remotenames` revset
$ hg log -r "remotenames()" -GT "{rev}:{node|short} {remotenames}\n"
@ 8:3e1487808078 $TESTTMP/server2/wat default/wat
:
: o 7:ec2426147f0e $TESTTMP/server2/default default/default
: |
: o 6:87d6d6676308 $TESTTMP/server2/bar default/bar
:/
o 3:62615734edd5 $TESTTMP/server2/foo default/foo
|
~
`remotebranches` revset
$ hg log -r "remotebranches()" -GT "{rev}:{node|short} {remotenames}\n"
@ 8:3e1487808078 $TESTTMP/server2/wat default/wat
|
~
o 7:ec2426147f0e $TESTTMP/server2/default default/default
|
~
`remotebookmarks` revset
$ hg log -r "remotebookmarks()" -GT "{rev}:{node|short} {remotenames}\n"
o 6:87d6d6676308 $TESTTMP/server2/bar default/bar
:
o 3:62615734edd5 $TESTTMP/server2/foo default/foo
|
~
Pulkit Goyal
remotenames: add functionality to hoist remotebookmarks...
r37107
Updating to revision using hoisted name
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095 ---------------------------------------
Pulkit Goyal
remotenames: add functionality to hoist remotebookmarks...
r37107
Deleting local bookmark to make sure we update to hoisted name only
$ hg bookmark -d bar
$ hg up bar
2 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg log -r .
changeset: 6:87d6d6676308
remote bookmark: $TESTTMP/server2/bar
remote bookmark: default/bar
hoisted name: bar
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Added g
When both local bookmark and hoisted name exists but on different revs
$ hg up 8
1 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg bookmark foo
moving bookmark 'foo' forward from 62615734edd5
Local bookmark should take precedence over hoisted name
$ hg up foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg log -r .
changeset: 8:3e1487808078
branch: wat
bookmark: foo
tag: tip
remote branch: $TESTTMP/server2/wat
remote branch: default/wat
parent: 4:aa98ab95a928
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: added bar
Pulkit Goyal
remotenames: show remote bookmarks in `hg bookmarks`...
r37108 $ hg bookmarks
$TESTTMP/server2/bar 6:87d6d6676308
$TESTTMP/server2/foo 3:62615734edd5
default/bar 6:87d6d6676308
default/foo 3:62615734edd5
* foo 8:3e1487808078
Pulkit Goyal
remotenames: synchronise remotenames after push also...
r38634
Testing the remotenames sychronization during `hg push`
-------------------------------------------------------
$ cd ../server/
$ hg bookmark foo
moving bookmark 'foo' forward from 62615734edd5
After the push, default/foo should move to rev 8
$ cd ../client/
$ hg push
pushing to ssh://user@dummy/server
searching for changes
no changes found
[1]
$ hg log -Gr 'remotenames()'
@ changeset: 8:3e1487808078
: branch: wat
: bookmark: foo
: tag: tip
: remote bookmark: default/foo
: hoisted name: foo
: remote branch: $TESTTMP/server2/wat
: remote branch: default/wat
: parent: 4:aa98ab95a928
: user: test
: date: Thu Jan 01 00:00:00 1970 +0000
: summary: added bar
:
: o changeset: 7:ec2426147f0e
: | remote branch: $TESTTMP/server2/default
: | remote branch: default/default
: | user: test
: | date: Thu Jan 01 00:00:00 1970 +0000
: | summary: Added h
: |
: o changeset: 6:87d6d6676308
:/ remote bookmark: $TESTTMP/server2/bar
: remote bookmark: default/bar
: hoisted name: bar
: user: test
: date: Thu Jan 01 00:00:00 1970 +0000
: summary: Added g
:
o changeset: 3:62615734edd5
| remote bookmark: $TESTTMP/server2/foo
~ user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: Added d
$ hg bookmarks
$TESTTMP/server2/bar 6:87d6d6676308
$TESTTMP/server2/foo 3:62615734edd5
default/bar 6:87d6d6676308
default/foo 8:3e1487808078
* foo 8:3e1487808078
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
Testing the names argument to remotenames, remotebranches and remotebookmarks revsets
--------------------------------------------------------------------------------------
$ cd ..
$ hg clone ssh://user@dummy/server client2
requesting all changes
adding changesets
adding manifests
adding file changes
added 9 changesets with 9 changes to 9 files (+1 heads)
new changesets 18d04c59bb5d:3e1487808078
updating to branch default
8 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd server2
$ hg up wat
6 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo foo > watwat
$ hg ci -Aqm "added watwat"
$ hg bookmark bar
abort: bookmark 'bar' already exists (use -f to force)
[255]
$ hg up ec24
3 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo i > i
$ hg ci -Aqm "added i"
$ cd ../client2
$ echo "[paths]" >> .hg/hgrc
$ echo "server2 = $TESTTMP/server2" >> .hg/hgrc
$ hg pull server2
pulling from $TESTTMP/server2
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
new changesets f34adec73c21:bf433e48adea
(run 'hg update' to get a working copy)
$ hg log -Gr 'remotenames()' -T '{rev}:{node|short} {desc}\n({remotebranches}) [{remotebookmarks}]\n\n'
o 10:bf433e48adea added i
| (server2/default) []
|
| o 9:f34adec73c21 added watwat
| | (server2/wat) []
| |
| o 8:3e1487808078 added bar
| : (default/wat) [default/foo]
| :
@ : 7:ec2426147f0e Added h
| : (default/default) []
| :
o : 6:87d6d6676308 Added g
:/ () [default/bar server2/bar]
:
o 3:62615734edd5 Added d
| () [server2/foo]
~
Testing for a single remote name which exists
$ hg log -r 'remotebranches("default/wat")' -GT "{rev}:{node|short} {remotebranches}\n"
o 8:3e1487808078 default/wat
|
~
$ hg log -r 'remotebookmarks("server2/foo")' -GT "{rev}:{node|short} {remotebookmarks}\n"
o 3:62615734edd5 server2/foo
|
~
$ hg log -r 'remotenames("re:default")' -GT "{rev}:{node|short} {remotenames}\n"
o 10:bf433e48adea server2/default
|
| o 8:3e1487808078 default/foo default/wat
| |
| ~
@ 7:ec2426147f0e default/default
|
o 6:87d6d6676308 default/bar server2/bar
|
~
Yuya Nishihara
remotenames: abort if literal revset pattern matches nothing...
r40105 Testing for a literal name which does not exists, which should fail.
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
$ hg log -r 'remotebranches(def)' -GT "{rev}:{node|short} {remotenames}\n"
Yuya Nishihara
remotenames: abort if literal revset pattern matches nothing...
r40105 abort: remote name 'def' does not exist!
[255]
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
$ hg log -r 'remotebookmarks("server3")' -GT "{rev}:{node|short} {remotenames}\n"
Yuya Nishihara
remotenames: abort if literal revset pattern matches nothing...
r40105 abort: remote name 'server3' does not exist!
[255]
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
$ hg log -r 'remotenames("server3")' -GT "{rev}:{node|short} {remotenames}\n"
Yuya Nishihara
remotenames: abort if literal revset pattern matches nothing...
r40105 abort: remote name 'server3' does not exist!
[255]
Testing for a pattern which does not match anything, which shouldn't fail.
$ hg log -r 'remotenames("re:^server3$")'
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
Augie Fackler
remotenames: follow-up on D3639 to make revset funcs take only one arg...
r40096 Testing for multiple names, which is not supported.
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
$ hg log -r 'remotenames("re:default", "re:server2")' -GT "{rev}:{node|short} {remotenames}\n"
Augie Fackler
remotenames: follow-up on D3639 to make revset funcs take only one arg...
r40096 hg: parse error: only one argument accepted
[255]
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
$ hg log -r 'remotebranches("default/wat", "server2/wat")' -GT "{rev}:{node|short} {remotebranches}\n"
Augie Fackler
remotenames: follow-up on D3639 to make revset funcs take only one arg...
r40096 hg: parse error: only one argument accepted
[255]
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
$ hg log -r 'remotebookmarks("default/foo", "server2/foo")' -GT "{rev}:{node|short} {remotebookmarks}\n"
Augie Fackler
remotenames: follow-up on D3639 to make revset funcs take only one arg...
r40096 hg: parse error: only one argument accepted
[255]
Pulkit Goyal
remotenames: add names argument to remotenames revset...
r40095
Testing pattern matching
$ hg log -r 'remotenames("re:def")' -GT "{rev}:{node|short} {remotenames}\n"
o 10:bf433e48adea server2/default
|
| o 8:3e1487808078 default/foo default/wat
| |
| ~
@ 7:ec2426147f0e default/default
|
o 6:87d6d6676308 default/bar server2/bar
|
~
$ hg log -r 'remotebranches("re:ser.*2")' -GT "{rev}:{node|short} {remotebranches}\n"
o 10:bf433e48adea server2/default
|
~
o 9:f34adec73c21 server2/wat
|
~