2018-10-27 04:52:14 +03:00
|
|
|
TODO: Make this test compatibile with obsstore enabled.
|
|
|
|
$ setconfig experimental.evolution=
|
|
|
|
$ . helpers-usechg.sh
|
|
|
|
|
2016-02-05 09:47:14 +03:00
|
|
|
Setup
|
|
|
|
|
|
|
|
|
2014-11-08 03:27:47 +03:00
|
|
|
$ cat >> $HGRCPATH <<EOF
|
|
|
|
> [ui]
|
2015-10-01 23:03:03 +03:00
|
|
|
> ssh = python "$RUNTESTDIR/dummyssh"
|
2014-11-08 03:27:47 +03:00
|
|
|
> username = nobody <no.reply@fb.com>
|
|
|
|
> [extensions]
|
|
|
|
> strip =
|
|
|
|
> EOF
|
2016-01-08 05:30:24 +03:00
|
|
|
|
|
|
|
$ commit() {
|
|
|
|
> hg commit -d "0 0" -A -m "$@"
|
|
|
|
> }
|
|
|
|
|
|
|
|
$ log() {
|
|
|
|
> hg log -G -T "{desc} [{phase}:{node|short}] {bookmarks}" "$@"
|
|
|
|
> }
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
Set up server repository
|
|
|
|
|
|
|
|
$ hg init server
|
|
|
|
$ cd server
|
|
|
|
$ echo foo > a
|
|
|
|
$ echo foo > b
|
|
|
|
$ commit 'initial'
|
|
|
|
adding a
|
|
|
|
adding b
|
|
|
|
|
|
|
|
Set up client repository
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ hg clone ssh://user@dummy/server client -q
|
|
|
|
$ cd client
|
|
|
|
$ echo "[extensions]" >> .hg/hgrc
|
2016-02-05 09:47:14 +03:00
|
|
|
$ echo "pushrebase =" >> .hg/hgrc
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
Without server extension
|
|
|
|
|
|
|
|
$ cd ../server
|
|
|
|
$ echo 'bar' > a
|
|
|
|
$ commit 'a => bar'
|
|
|
|
|
|
|
|
$ cd ../client
|
2015-07-24 00:11:58 +03:00
|
|
|
$ hg rm b
|
|
|
|
$ commit 'b => xxx'
|
2014-11-08 03:27:47 +03:00
|
|
|
$ echo 'baz' > b
|
2015-07-24 00:11:58 +03:00
|
|
|
$ hg add b
|
2014-11-08 03:27:47 +03:00
|
|
|
$ commit 'b => baz'
|
|
|
|
|
|
|
|
$ echo "[experimental]" >> .hg/hgrc
|
|
|
|
$ echo "bundle2-exp = True" >> .hg/hgrc
|
|
|
|
|
|
|
|
$ echo "[experimental]" >> ../server/.hg/hgrc
|
|
|
|
$ echo "bundle2-exp = True" >> ../server/.hg/hgrc
|
|
|
|
|
|
|
|
Stack of non-conflicting commits should be accepted
|
|
|
|
|
|
|
|
$ cd ../server
|
|
|
|
$ echo "[extensions]" >> .hg/hgrc
|
2016-02-05 09:47:14 +03:00
|
|
|
$ echo "pushrebase =" >> .hg/hgrc
|
2014-11-08 03:27:47 +03:00
|
|
|
$ log
|
|
|
|
@ a => bar [draft:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [draft:2bb9d20e471c]
|
|
|
|
|
|
|
|
|
|
|
|
$ cd ../client
|
|
|
|
$ log
|
2015-07-24 00:11:58 +03:00
|
|
|
@ b => baz [draft:0e3997dc0733]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [draft:46a2df24e272]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2018-06-25 18:35:39 +03:00
|
|
|
$ hg push --to default --config devel.bundle2.debug=1 --debug 2>&1 | tee stuff | grep -v bundle2-
|
2014-11-08 03:27:47 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
2017-08-09 01:12:11 +03:00
|
|
|
running * (glob)
|
2015-10-01 21:15:37 +03:00
|
|
|
sending hello command
|
|
|
|
sending between command
|
2019-02-19 12:54:57 +03:00
|
|
|
remote: 430
|
|
|
|
remote: capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash unbundlereplay batch streamreqs=generaldelta,revlogv1 stream_option bundle2=HG20%0Ab2x%253Arebase%0Abookmarks%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Aphases%3Dheads%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN
|
2015-10-01 21:15:37 +03:00
|
|
|
remote: 1
|
|
|
|
query 1; heads
|
|
|
|
sending batch command
|
2014-11-08 03:27:47 +03:00
|
|
|
searching for changes
|
2015-10-01 21:15:37 +03:00
|
|
|
taking quick initial sample
|
|
|
|
query 2; still undecided: 2, sample size is: 2
|
|
|
|
sending known command
|
2017-06-13 17:16:35 +03:00
|
|
|
2 total queries in *s (glob)
|
2015-10-01 21:15:37 +03:00
|
|
|
preparing listkeys for "phases"
|
|
|
|
sending listkeys command
|
|
|
|
received listkey for "phases": 58 bytes
|
|
|
|
checking for updated bookmarks
|
|
|
|
preparing listkeys for "bookmarks"
|
|
|
|
sending listkeys command
|
|
|
|
received listkey for "bookmarks": 0 bytes
|
|
|
|
validated revset for rebase
|
|
|
|
2 changesets found
|
|
|
|
list of changesets:
|
|
|
|
46a2df24e27273bb06dbf28b085fcc2e911bf986
|
|
|
|
0e3997dc073308e42715a44d345466690abfd09a
|
|
|
|
sending unbundle command
|
2017-07-24 21:42:24 +03:00
|
|
|
remote: pushing 2 changesets:
|
2015-10-29 04:19:18 +03:00
|
|
|
remote: 46a2df24e272 b => xxx
|
|
|
|
remote: 0e3997dc0733 b => baz
|
2016-09-21 17:45:25 +03:00
|
|
|
remote: 3 new changesets from the server will be downloaded
|
2015-06-21 00:27:30 +03:00
|
|
|
adding changesets
|
2015-10-01 21:15:37 +03:00
|
|
|
add changeset add0c792bfce
|
|
|
|
add changeset 6a6d9484552c
|
|
|
|
add changeset 4cfedb0dc25f
|
2015-06-21 00:27:30 +03:00
|
|
|
adding manifests
|
|
|
|
adding file changes
|
2015-10-01 21:15:37 +03:00
|
|
|
adding a revisions
|
|
|
|
adding b revisions
|
2015-06-21 00:27:30 +03:00
|
|
|
added 3 changesets with 1 changes to 2 files (+1 heads)
|
2015-10-01 21:15:37 +03:00
|
|
|
preparing listkeys for "phases"
|
|
|
|
sending listkeys command
|
|
|
|
received listkey for "phases": 15 bytes
|
|
|
|
|
|
|
|
Check that we did not generate any check:heads parts
|
|
|
|
|
|
|
|
$ grep check:heads stuff
|
|
|
|
[1]
|
|
|
|
$ rm stuff
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
$ cd ../server
|
|
|
|
$ hg update default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ log
|
2015-07-24 00:11:58 +03:00
|
|
|
@ b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip -r 2
|
2018-03-01 02:14:40 +03:00
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
saved backup bundle to $TESTTMP/server/.hg/strip-backup/6a6d9484552c-65c69aee-backup.hg
|
|
|
|
|
|
|
|
$ cd ../client
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip 3
|
2018-03-01 02:14:40 +03:00
|
|
|
saved backup bundle to $TESTTMP/client/.hg/strip-backup/add0c792bfce-c3f42717-backup.hg
|
|
|
|
$ hg up 0e3997dc0733
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ log
|
|
|
|
@ b => baz [draft:0e3997dc0733]
|
|
|
|
|
|
|
|
|
o b => xxx [draft:46a2df24e272]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
|
|
|
|
|
|
|
Push using changegroup2
|
|
|
|
|
2018-04-12 02:04:36 +03:00
|
|
|
$ hg push --to default
|
2018-03-01 02:14:40 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
|
|
|
remote: pushing 2 changesets:
|
|
|
|
remote: 46a2df24e272 b => xxx
|
|
|
|
remote: 0e3997dc0733 b => baz
|
|
|
|
remote: 3 new changesets from the server will be downloaded
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 3 changesets with 1 changes to 2 files (+1 heads)
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
$ cd ../client
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip 1
|
2014-11-08 03:27:47 +03:00
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2015-07-24 00:11:58 +03:00
|
|
|
saved backup bundle to $TESTTMP/client/.hg/strip-backup/46a2df24e272-1b034f5b-backup.hg (glob)
|
2014-11-08 03:27:47 +03:00
|
|
|
$ hg pull
|
|
|
|
pulling from ssh://user@dummy/server
|
|
|
|
searching for changes
|
pushrebase: enable pushback always
Test Plan: ##run-tests.py##
Reviewers: durham, pyd, sid0
Reviewed By: sid0
Subscribers: calvinb, mitrandir, rmcelroy, daviser, mpm, davidsp, sid0, akushner, pyd, durham
Differential Revision: https://phabricator.fb.com/D1743234
Signature: t1:1743234:1418762853:e406ef2b4a22601596e0629e4561b2a7ca9a0df3
2014-12-16 22:44:45 +03:00
|
|
|
no changes found
|
2014-11-08 03:27:47 +03:00
|
|
|
$ hg update default
|
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
|
|
|
|
Regular commits should go through without changing hash
|
|
|
|
|
|
|
|
$ cd ../client
|
2014-11-19 03:36:46 +03:00
|
|
|
$ echo '[experimental]' >> .hg/hgrc
|
|
|
|
$ echo 'bundle2.pushback = True' >> .hg/hgrc
|
|
|
|
|
2014-11-08 03:27:47 +03:00
|
|
|
$ echo 'quux' > b
|
|
|
|
$ commit 'b => quux'
|
|
|
|
$ log -r tip
|
2015-07-24 00:11:58 +03:00
|
|
|
@ b => quux [draft:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2016-04-19 13:19:20 +03:00
|
|
|
~
|
2014-11-08 03:27:47 +03:00
|
|
|
|
2015-06-26 21:05:46 +03:00
|
|
|
$ hg push --to default
|
2014-11-08 03:27:47 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
remote: pushing 1 changeset:
|
2015-10-29 04:19:18 +03:00
|
|
|
remote: 741fd2094512 b => quux
|
2014-11-08 03:27:47 +03:00
|
|
|
|
2018-11-07 15:30:49 +03:00
|
|
|
$ log
|
2018-11-07 15:30:49 +03:00
|
|
|
@ b => quux [public:741fd2094512]
|
2018-11-07 15:30:49 +03:00
|
|
|
|
|
|
|
|
o b => baz [public:4cfedb0dc25f]
|
|
|
|
|
|
|
|
|
o b => xxx [public:6a6d9484552c]
|
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2014-11-08 03:27:47 +03:00
|
|
|
$ cd ../server
|
|
|
|
$ hg update default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
|
|
|
|
$ log
|
2015-07-24 00:11:58 +03:00
|
|
|
@ b => quux [public:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
|
|
|
|
|
|
|
Stack with conflict in tail should abort
|
|
|
|
|
|
|
|
$ cd ../server
|
|
|
|
$ echo 'baz' > a
|
|
|
|
$ commit 'a => baz'
|
|
|
|
|
|
|
|
$ cd ../client
|
|
|
|
$ echo 'quux' > a
|
|
|
|
$ commit 'a => quux'
|
|
|
|
$ echo 'foofoo' > b
|
|
|
|
$ commit 'b => foofoo'
|
2015-06-26 21:05:46 +03:00
|
|
|
$ hg push --to default
|
2014-11-08 03:27:47 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
2015-11-18 04:54:31 +03:00
|
|
|
remote: conflicting changes in:
|
2015-10-29 04:19:20 +03:00
|
|
|
a
|
2017-11-15 05:34:41 +03:00
|
|
|
remote: (pull and rebase your changes locally, then try again)
|
2015-11-18 04:54:31 +03:00
|
|
|
abort: push failed on remote
|
2014-11-08 03:27:47 +03:00
|
|
|
[255]
|
|
|
|
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip 5
|
2014-11-08 03:27:47 +03:00
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2015-07-24 00:11:58 +03:00
|
|
|
saved backup bundle to $TESTTMP/client/.hg/strip-backup/11a6a93eb344-7140e689-backup.hg (glob)
|
2014-11-08 03:27:47 +03:00
|
|
|
$ cd ../server
|
|
|
|
$ log
|
2015-07-24 00:11:58 +03:00
|
|
|
@ a => baz [draft:fb983dc509b6]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => quux [public:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
|
|
|
|
|
|
|
Stack with conflict in head should abort
|
|
|
|
|
|
|
|
$ cd ../client
|
|
|
|
$ echo 'foofoo' > b
|
|
|
|
$ commit 'b => foofoo'
|
|
|
|
$ echo 'quux' > a
|
|
|
|
$ commit 'a => quux'
|
2015-06-26 21:05:46 +03:00
|
|
|
$ hg push --to default
|
2014-11-08 03:27:47 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
2015-11-18 04:54:31 +03:00
|
|
|
remote: conflicting changes in:
|
2015-10-29 04:19:20 +03:00
|
|
|
a
|
2017-11-15 05:34:41 +03:00
|
|
|
remote: (pull and rebase your changes locally, then try again)
|
2015-11-18 04:54:31 +03:00
|
|
|
abort: push failed on remote
|
2014-11-08 03:27:47 +03:00
|
|
|
[255]
|
|
|
|
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip 5
|
2014-11-08 03:27:47 +03:00
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2015-07-24 00:11:58 +03:00
|
|
|
saved backup bundle to $TESTTMP/client/.hg/strip-backup/98788efd81b0-93572e45-backup.hg (glob)
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
$ cd ../server
|
|
|
|
$ log
|
2015-07-24 00:11:58 +03:00
|
|
|
@ a => baz [draft:fb983dc509b6]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => quux [public:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2015-06-26 04:49:48 +03:00
|
|
|
Pushing a merge should rebase only the latest side of the merge
|
|
|
|
|
|
|
|
$ hg book master -r tip
|
|
|
|
$ cd ../client
|
|
|
|
$ hg pull -q > /dev/null
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip -q -r tip
|
2015-07-29 23:32:51 +03:00
|
|
|
$ hg up 741fd2094512
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ echo "tux" > other
|
|
|
|
$ hg add other
|
|
|
|
$ hg commit -qm "branch left"
|
2015-06-26 04:49:48 +03:00
|
|
|
$ hg book master -r tip
|
2015-07-29 23:32:51 +03:00
|
|
|
moving bookmark 'master' forward from 741fd2094512
|
2015-06-26 04:49:48 +03:00
|
|
|
$ hg up -q 2
|
|
|
|
$ echo branched > c
|
|
|
|
$ hg commit -Aqm "branch start"
|
|
|
|
$ echo branched2 > c
|
|
|
|
$ hg commit -qm "branch middle"
|
|
|
|
$ hg merge -q master
|
|
|
|
$ hg commit -qm "merge"
|
|
|
|
$ echo ontopofmerge > c
|
|
|
|
$ hg commit -qm "on top of merge"
|
|
|
|
$ hg book master -r tip
|
2015-07-29 23:32:51 +03:00
|
|
|
moving bookmark 'master' forward from e6b7549904cd
|
2015-06-26 04:49:48 +03:00
|
|
|
$ log
|
2015-07-29 23:32:51 +03:00
|
|
|
@ on top of merge [draft:9007d6a204f8] master
|
2015-06-26 04:49:48 +03:00
|
|
|
|
|
2015-07-29 23:32:51 +03:00
|
|
|
o merge [draft:2c0c699d7086]
|
2015-06-26 04:49:48 +03:00
|
|
|
|\
|
2015-07-24 00:11:58 +03:00
|
|
|
| o branch middle [draft:5a0cbf3df4ef]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
| o branch start [draft:add5ec74853d]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-29 23:32:51 +03:00
|
|
|
o | branch left [draft:e6b7549904cd]
|
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
o | b => quux [public:741fd2094512]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
o | b => baz [public:4cfedb0dc25f]
|
2015-06-26 04:49:48 +03:00
|
|
|
|/
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2015-06-26 04:49:48 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2015-06-26 21:05:46 +03:00
|
|
|
$ hg push --to master -B master
|
2015-06-26 04:49:48 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
remote: pushing 5 changesets:
|
2015-10-29 04:19:18 +03:00
|
|
|
remote: e6b7549904cd branch left
|
|
|
|
remote: add5ec74853d branch start
|
|
|
|
remote: 5a0cbf3df4ef branch middle
|
|
|
|
remote: 2c0c699d7086 merge
|
|
|
|
remote: 9007d6a204f8 on top of merge
|
2016-09-21 17:45:25 +03:00
|
|
|
remote: 6 new changesets from the server will be downloaded
|
2015-06-26 04:49:48 +03:00
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
2015-07-29 23:32:51 +03:00
|
|
|
added 4 changesets with 1 changes to 3 files (+1 heads)
|
2015-06-26 04:49:48 +03:00
|
|
|
updating bookmark master
|
|
|
|
$ cd ../server
|
|
|
|
$ log
|
2016-12-16 21:24:12 +03:00
|
|
|
o on top of merge [public:54b35e8b58eb] master
|
2015-06-26 04:49:48 +03:00
|
|
|
|
|
2016-12-16 21:24:12 +03:00
|
|
|
o merge [public:5a512eb2b3f8]
|
2015-06-26 04:49:48 +03:00
|
|
|
|\
|
2015-07-24 00:11:58 +03:00
|
|
|
| o branch middle [public:5a0cbf3df4ef]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
| o branch start [public:add5ec74853d]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-29 23:32:51 +03:00
|
|
|
o | branch left [public:cf07bdf4226e]
|
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
@ | a => baz [public:fb983dc509b6]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
o | b => quux [public:741fd2094512]
|
2015-06-26 04:49:48 +03:00
|
|
|
| |
|
2015-07-24 00:11:58 +03:00
|
|
|
o | b => baz [public:4cfedb0dc25f]
|
2015-06-26 04:49:48 +03:00
|
|
|
|/
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2015-06-26 04:49:48 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2015-08-11 08:15:03 +03:00
|
|
|
- Verify the content of the merge files is correct
|
2016-01-08 05:30:24 +03:00
|
|
|
$ hg cat -r "master^" c
|
2015-08-11 08:15:03 +03:00
|
|
|
branched2
|
2016-01-08 05:30:24 +03:00
|
|
|
$ hg cat -r "master^" other
|
2015-08-11 08:15:03 +03:00
|
|
|
tux
|
|
|
|
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip -r add5ec74853d -q
|
2015-06-26 04:49:48 +03:00
|
|
|
$ cd ../client
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip -r add5ec74853d -q
|
2015-06-26 04:49:48 +03:00
|
|
|
$ hg book -d master
|
|
|
|
$ hg -R ../server book -d master
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
With evolution enabled, should set obsolescence markers
|
|
|
|
|
2015-06-13 02:34:35 +03:00
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
|
> [extensions]
|
|
|
|
> rebase =
|
|
|
|
>
|
|
|
|
> [experimental]
|
pushrebase: do not require exchange for getting markers
Summary:
D4865150 and D4934720 aren't effective in our current setup. The direct
cause in the code is because the server couldn't find common marker version:
```
# old server-side code, returns empty in our current setup
obsolete.commonversion(bundle2.obsmarkersversion(reply.capabilities))
```
Upon investigation, it's because there is no `exchange` enabled client-side.
But we do want one-way (server->client) markers for the rebased commits, as
long as obsstore is enabled (createmarkers is set, without exchange).
The upstream expects the server to have obsstore enabled, and exchange
enabled, to send markers. Since we are generating markers without an
obsstore (see D4865150), we are on our own way. This diff makes it one step
further.
This diff adds an explicit parameter to the `b2x:rebase` part to tell the
server what obsmarker format the client supports so the server could make a
right decision without relying on the "standard" `reply.capabilities`, which
is affected by the exchange option.
Test Plan: Change the existing test, make sure the old code fails.
Reviewers: #mercurial, durham
Reviewed By: durham
Subscribers: durham, mjpieters
Differential Revision: https://phabricator.intern.facebook.com/D4997972
Signature: t1:4997972:1493848751:14c29654b2e8246bd12a8de8820af5b3773e2fb7
2017-05-04 02:08:35 +03:00
|
|
|
> evolution = createmarkers
|
2015-06-13 02:34:35 +03:00
|
|
|
> EOF
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
$ cd ../client
|
2019-02-25 14:50:46 +03:00
|
|
|
$ hg debugstrip -qr fb983dc509b6
|
|
|
|
$ hg debugstrip -qr e6b7549904cd2a7991ef25bc2e0fd910801af2cd
|
2015-07-24 00:11:58 +03:00
|
|
|
$ hg up -q 741fd2094512
|
2015-07-24 19:38:01 +03:00
|
|
|
$ hg mv b k
|
|
|
|
$ commit 'b => k'
|
|
|
|
$ hg mv k b
|
2014-11-08 03:27:47 +03:00
|
|
|
$ echo 'foobar' > b
|
|
|
|
$ commit 'b => foobar'
|
|
|
|
$ log
|
2015-07-24 19:38:01 +03:00
|
|
|
@ b => foobar [draft:e73acfaeee82]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 19:38:01 +03:00
|
|
|
o b => k [draft:9467a8ee5d0d]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => quux [public:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2015-06-26 21:05:46 +03:00
|
|
|
$ hg push --to default
|
2014-11-08 03:27:47 +03:00
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
remote: pushing 2 changesets:
|
2015-10-29 04:19:18 +03:00
|
|
|
remote: 9467a8ee5d0d b => k
|
|
|
|
remote: e73acfaeee82 b => foobar
|
2016-09-21 17:45:25 +03:00
|
|
|
remote: 4 new changesets from the server will be downloaded
|
2015-06-21 00:27:30 +03:00
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
2015-07-29 23:32:51 +03:00
|
|
|
added 4 changesets with 2 changes to 4 files (+1 heads)
|
2015-06-21 00:27:30 +03:00
|
|
|
2 new obsolescence markers
|
2017-07-11 19:44:53 +03:00
|
|
|
obsoleted 2 changesets
|
2017-07-18 22:16:04 +03:00
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2014-11-19 03:36:46 +03:00
|
|
|
|
|
|
|
$ hg pull
|
|
|
|
pulling from ssh://user@dummy/server
|
|
|
|
searching for changes
|
|
|
|
no changes found
|
2015-06-13 02:34:35 +03:00
|
|
|
$ hg debugobsolete | sort
|
|
|
|
9467a8ee5d0d993ba68d94946c9d4a3cae8d31ff 0d76868c25e6789734c06e056f235e1fa223da74 * (glob)
|
|
|
|
e73acfaeee82005b2379f82efb73123cbb74a733 d53a62ed14be0980584e1f92f9c47031ef806a62 * (glob)
|
|
|
|
$ hg up d53a62ed14be
|
2017-07-18 22:16:04 +03:00
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2014-11-08 03:27:47 +03:00
|
|
|
$ log
|
2015-07-29 23:32:51 +03:00
|
|
|
@ b => foobar [public:d53a62ed14be]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-29 23:32:51 +03:00
|
|
|
o b => k [public:0d76868c25e6]
|
|
|
|
|
|
|
|
|
o branch left [public:cf07bdf4226e]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o a => baz [public:fb983dc509b6]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => quux [public:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
|
|
|
|
|
|
|
$ cd ../server
|
2015-07-30 21:14:14 +03:00
|
|
|
$ hg log -r 0d76868c25e6 -T '{file_copies}\n'
|
|
|
|
k (b)
|
2014-11-08 03:27:47 +03:00
|
|
|
$ log
|
2015-07-29 23:32:51 +03:00
|
|
|
o b => foobar [public:d53a62ed14be]
|
|
|
|
|
|
|
|
|
o b => k [public:0d76868c25e6]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-29 23:32:51 +03:00
|
|
|
o branch left [public:cf07bdf4226e]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
@ a => baz [public:fb983dc509b6]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => quux [public:741fd2094512]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => baz [public:4cfedb0dc25f]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
2015-07-24 00:11:58 +03:00
|
|
|
o b => xxx [public:6a6d9484552c]
|
2014-11-08 03:27:47 +03:00
|
|
|
|
|
|
|
|
o a => bar [public:add0c792bfce]
|
|
|
|
|
|
|
|
|
o initial [public:2bb9d20e471c]
|
|
|
|
|
2015-07-25 01:23:16 +03:00
|
|
|
Test pushing master bookmark, fast forward
|
|
|
|
|
|
|
|
$ hg book -r fb983dc509b6 master
|
|
|
|
$ cd ../client
|
|
|
|
$ hg book master
|
|
|
|
$ echo 'babar' > b
|
|
|
|
$ commit 'b => babar'
|
|
|
|
$ hg log -r master -T"{node}\n"
|
2015-07-29 23:32:51 +03:00
|
|
|
56b2e094996609874ae1c9aae1626bfba61d07d8
|
2015-07-25 01:23:16 +03:00
|
|
|
$ hg push --to master
|
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
remote: pushing 1 changeset:
|
2015-10-29 04:19:18 +03:00
|
|
|
remote: 56b2e0949966 b => babar
|
2015-07-25 01:23:16 +03:00
|
|
|
updating bookmark master
|
|
|
|
$ hg log -r master -R ../server -T"{node}\n"
|
2015-07-29 23:32:51 +03:00
|
|
|
56b2e094996609874ae1c9aae1626bfba61d07d8
|
2015-07-25 01:23:16 +03:00
|
|
|
|
|
|
|
Test pushing bookmark with no new commit
|
|
|
|
|
|
|
|
$ hg book stable -r fb983dc509b6
|
2016-01-08 05:30:24 +03:00
|
|
|
$ hg book stable -r "fb983dc509b6^" -R ../server
|
2015-07-25 01:23:16 +03:00
|
|
|
$ hg push -r stable --to stable
|
|
|
|
pushing to ssh://user@dummy/server
|
|
|
|
searching for changes
|
|
|
|
no changes found
|
|
|
|
updating bookmark stable
|
|
|
|
[1]
|
|
|
|
$ hg log -r stable -R ../server
|
|
|
|
changeset: 5:fb983dc509b6
|
|
|
|
bookmark: stable
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: a => baz
|
|
|
|
|
2015-09-25 06:03:02 +03:00
|
|
|
|
2015-10-06 04:56:46 +03:00
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
Test that the prepushrebase hook can run against the bundle repo
|
|
|
|
|
|
|
|
$ cat >> $TESTTMP/prerebase.sh <<EOF
|
|
|
|
> hg log -r tip
|
|
|
|
> echo "Checking if lock exists (it should not):"
|
|
|
|
> ls -l .hg/store/lock
|
|
|
|
> EOF
|
|
|
|
$ chmod a+x $TESTTMP/prerebase.sh
|
|
|
|
$ hg init prepushrebaseserver
|
|
|
|
$ cd prepushrebaseserver
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [hooks]
|
|
|
|
> prepushrebase = $TESTTMP/prerebase.sh
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-10-06 04:56:46 +03:00
|
|
|
> [experimental]
|
|
|
|
> bundle2lazylocking = True
|
|
|
|
> EOF
|
|
|
|
$ touch a && hg add a && hg commit -qm a
|
|
|
|
$ hg book master
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
$ hg clone ssh://user@dummy/prepushrebaseserver prepushrebaseclient
|
|
|
|
requesting all changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files
|
2017-10-17 23:05:18 +03:00
|
|
|
new changesets 3903775176ed
|
2015-10-06 04:56:46 +03:00
|
|
|
updating to branch default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd prepushrebaseclient
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-10-06 04:56:46 +03:00
|
|
|
> EOF
|
|
|
|
$ touch b && hg add b && hg commit -qm b
|
|
|
|
$ hg push --to master
|
|
|
|
pushing to ssh://user@dummy/prepushrebaseserver
|
|
|
|
searching for changes
|
|
|
|
remote: changeset: 1:0e067c57feba
|
|
|
|
remote: tag: tip
|
|
|
|
remote: user: test
|
|
|
|
remote: date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
remote: summary: b
|
|
|
|
remote:
|
|
|
|
remote: Checking if lock exists (it should not):
|
2018-01-09 14:06:09 +03:00
|
|
|
remote: ls: *.hg/store/lock*: $ENOENT$ (glob)
|
2015-12-16 20:47:23 +03:00
|
|
|
remote: prepushrebase hook exited with status * (glob)
|
2015-11-18 04:54:31 +03:00
|
|
|
abort: push failed on remote
|
2015-10-18 04:59:46 +03:00
|
|
|
[255]
|
2015-10-06 04:56:46 +03:00
|
|
|
|
2015-09-25 06:03:02 +03:00
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
Test that hooks are fired with the correct variables
|
|
|
|
|
|
|
|
$ hg init hookserver
|
|
|
|
$ cd hookserver
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [hooks]
|
2015-10-01 23:03:03 +03:00
|
|
|
> changegroup = python "$RUNTESTDIR/printenv.py" changegroup
|
|
|
|
> incoming = python "$RUNTESTDIR/printenv.py" incoming
|
|
|
|
> outgoing = python "$RUNTESTDIR/printenv.py" outgoing
|
|
|
|
> prechangegroup = python "$RUNTESTDIR/printenv.py" prechangegroup
|
|
|
|
> preoutgoing = python "$RUNTESTDIR/printenv.py" preoutgoing
|
|
|
|
> pretxnchangegroup = python "$RUNTESTDIR/printenv.py" pretxnchangegroup
|
|
|
|
> txnclose = python "$RUNTESTDIR/printenv.py" txnclose
|
|
|
|
> pretxnclose = python "$RUNTESTDIR/printenv.py" pretxnclose
|
2015-10-06 04:56:46 +03:00
|
|
|
> prepushrebase = python "$RUNTESTDIR/printenv.py" prepushrebase
|
2015-12-15 02:38:11 +03:00
|
|
|
> prepushkey = python "$RUNTESTDIR/printenv.py" prepushkey
|
2015-09-25 06:03:02 +03:00
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-09-25 06:03:02 +03:00
|
|
|
> EOF
|
|
|
|
$ touch file && hg ci -Aqm initial
|
2018-09-28 17:08:42 +03:00
|
|
|
pretxnclose hook: HG_HOOKNAME=pretxnclose HG_HOOKTYPE=pretxnclose HG_PENDING=$TESTTMP/hookserver HG_PHASES_MOVED=1 HG_SHAREDPENDING=$TESTTMP/hookserver HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
|
2017-04-04 18:36:10 +03:00
|
|
|
txnclose hook: HG_HOOKNAME=txnclose HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:* HG_TXNNAME=commit (glob)
|
2015-09-25 06:03:02 +03:00
|
|
|
$ hg bookmark master
|
2018-09-28 17:08:42 +03:00
|
|
|
pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=pretxnclose HG_HOOKTYPE=pretxnclose HG_PENDING=$TESTTMP/hookserver HG_SHAREDPENDING=$TESTTMP/hookserver HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
|
2017-04-04 18:36:10 +03:00
|
|
|
txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose HG_HOOKTYPE=txnclose HG_TXNID=TXN:* HG_TXNNAME=bookmark (glob)
|
2015-09-25 06:03:02 +03:00
|
|
|
$ cd ../
|
|
|
|
|
|
|
|
$ hg clone hookserver hookclient
|
2017-04-04 18:36:10 +03:00
|
|
|
preoutgoing hook: HG_HOOKNAME=preoutgoing HG_HOOKTYPE=preoutgoing HG_SOURCE=clone
|
|
|
|
outgoing hook: HG_HOOKNAME=outgoing HG_HOOKTYPE=outgoing HG_NODE=0000000000000000000000000000000000000000 HG_SOURCE=clone
|
2015-09-25 06:03:02 +03:00
|
|
|
updating to branch default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd hookclient
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-09-25 06:03:02 +03:00
|
|
|
> EOF
|
2015-12-15 02:38:11 +03:00
|
|
|
$ hg update master
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
(activating bookmark master)
|
2015-09-25 06:03:02 +03:00
|
|
|
$ echo >> file && hg ci -Aqm first
|
2017-06-15 02:29:16 +03:00
|
|
|
$ echo >> file && hg ci -Aqm second
|
|
|
|
$ echo >> file && hg ci -Aqm last
|
2015-12-15 02:38:11 +03:00
|
|
|
$ hg push --to master -B master
|
2016-01-08 05:30:24 +03:00
|
|
|
pushing to $TESTTMP/hookserver (glob)
|
2015-09-25 06:03:02 +03:00
|
|
|
searching for changes
|
2017-12-21 01:31:16 +03:00
|
|
|
prepushrebase hook: HG_BUNDLE2=1 HG_HOOKNAME=prepushrebase HG_HOOKTYPE=prepushrebase HG_HOOK_BUNDLEPATH=* HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_NODE_ONTO=e95be919ac60f0c114075e32a0a4301afabadb60 HG_ONTO=master HG_SOURCE=push (glob)
|
2017-07-24 21:42:24 +03:00
|
|
|
pushing 3 changesets:
|
2015-10-29 04:19:18 +03:00
|
|
|
4fcee35c508c first
|
2017-06-15 02:29:16 +03:00
|
|
|
11be4ca7f3f4 second
|
|
|
|
a5e72ac0df88 last
|
2018-09-26 02:04:23 +03:00
|
|
|
prechangegroup hook: HG_BUNDLE2=1 HG_HOOKNAME=prechangegroup HG_HOOKTYPE=prechangegroup HG_SOURCE=push HG_TXNID=TXN:* HG_URL=file:$TESTTMP/hookserver (glob)
|
2018-09-28 17:08:42 +03:00
|
|
|
pretxnchangegroup hook: HG_BUNDLE2=1 HG_HOOKNAME=pretxnchangegroup HG_HOOKTYPE=pretxnchangegroup HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_NODE_LAST=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_PENDING=$TESTTMP/hookserver HG_SHAREDPENDING=$TESTTMP/hookserver HG_SOURCE=push HG_TXNID=TXN:* HG_URL=file:$TESTTMP/hookserver (glob)
|
|
|
|
prepushkey hook: HG_BUNDLE2=1 HG_HOOKNAME=prepushkey HG_HOOKTYPE=prepushkey HG_KEY=master HG_NAMESPACE=bookmarks HG_NEW=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_OLD=e95be919ac60f0c114075e32a0a4301afabadb60 HG_PENDING=$TESTTMP/hookserver HG_PHASES_MOVED=1 HG_SHAREDPENDING=$TESTTMP/hookserver HG_SOURCE=push HG_TXNID=TXN:* HG_URL=file:$TESTTMP/hookserver (glob)
|
|
|
|
pretxnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=pretxnclose HG_HOOKTYPE=pretxnclose HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_PENDING=$TESTTMP/hookserver HG_PHASES_MOVED=1 HG_SHAREDPENDING=$TESTTMP/hookserver HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=file:$TESTTMP/hookserver (glob)
|
2017-04-04 18:36:10 +03:00
|
|
|
txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose HG_HOOKTYPE=txnclose HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:* HG_TXNNAME=push HG_URL=file:$TESTTMP/hookserver (glob)
|
2017-06-15 02:29:16 +03:00
|
|
|
changegroup hook: HG_BUNDLE2=1 HG_HOOKNAME=changegroup HG_HOOKTYPE=changegroup HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_NODE_LAST=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_SOURCE=push HG_TXNID=TXN:* HG_URL=file:$TESTTMP/hookserver (glob)
|
|
|
|
incoming hook: HG_BUNDLE2=1 HG_HOOKNAME=incoming HG_HOOKTYPE=incoming HG_NODE=4fcee35c508c1019667f72cae9b843efa8908701 HG_NODE_LAST=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_SOURCE=push HG_TXNID=TXN:$ID$ HG_URL=file:$TESTTMP/hookserver
|
|
|
|
incoming hook: HG_BUNDLE2=1 HG_HOOKNAME=incoming HG_HOOKTYPE=incoming HG_NODE=11be4ca7f3f4a4e66fe9158d0d2b8defc7c32c7c HG_NODE_LAST=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_SOURCE=push HG_TXNID=TXN:$ID$ HG_URL=file:$TESTTMP/hookserver
|
|
|
|
incoming hook: HG_BUNDLE2=1 HG_HOOKNAME=incoming HG_HOOKTYPE=incoming HG_NODE=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_NODE_LAST=a5e72ac0df8881afef34132987e8ae78d2e6cb13 HG_SOURCE=push HG_TXNID=TXN:$ID$ HG_URL=file:$TESTTMP/hookserver
|
2015-12-15 02:38:11 +03:00
|
|
|
updating bookmark master
|
|
|
|
|
|
|
|
|
2015-09-28 01:45:31 +03:00
|
|
|
$ cd ../
|
2015-10-18 04:59:46 +03:00
|
|
|
|
2019-04-23 03:07:21 +03:00
|
|
|
Test that failing prechangegroup hooks block the push
|
|
|
|
|
|
|
|
$ hg init hookserver2
|
|
|
|
$ cd hookserver2
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [hooks]
|
|
|
|
> prechangegroup = exit 1
|
|
|
|
> [extensions]
|
|
|
|
> pushrebase=
|
|
|
|
> EOF
|
|
|
|
$ touch file && hg ci -Aqm initial
|
|
|
|
$ hg bookmark master
|
|
|
|
$ cd ../
|
|
|
|
|
|
|
|
$ hg clone hookserver2 hookclient2
|
|
|
|
updating to branch default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd hookclient2
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
|
|
|
> pushrebase=
|
|
|
|
> EOF
|
|
|
|
$ hg update master
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
(activating bookmark master)
|
|
|
|
$ echo >> file && hg ci -Aqm first
|
|
|
|
$ echo >> file && hg ci -Aqm second
|
|
|
|
$ echo >> file && hg ci -Aqm last
|
|
|
|
$ hg push --to master -B master
|
|
|
|
pushing to $TESTTMP/hookserver2
|
|
|
|
searching for changes
|
|
|
|
pushing 3 changesets:
|
|
|
|
4fcee35c508c first
|
|
|
|
11be4ca7f3f4 second
|
|
|
|
a5e72ac0df88 last
|
|
|
|
abort: prechangegroup hook exited with status 1
|
|
|
|
[255]
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
|
2015-10-18 04:59:46 +03:00
|
|
|
Test date rewriting
|
|
|
|
|
|
|
|
$ hg init rewritedate
|
|
|
|
$ cd rewritedate
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-10-18 04:59:46 +03:00
|
|
|
> [pushrebase]
|
|
|
|
> rewritedates = True
|
|
|
|
> EOF
|
|
|
|
$ touch a && hg commit -Aqm a
|
|
|
|
$ touch b && hg commit -Aqm b
|
|
|
|
$ hg book master
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
$ hg clone rewritedate rewritedateclient
|
|
|
|
updating to branch default
|
|
|
|
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd rewritedateclient
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-10-18 04:59:46 +03:00
|
|
|
> EOF
|
|
|
|
$ hg up 0
|
|
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
|
|
$ touch c && hg commit -Aqm c
|
|
|
|
|
|
|
|
$ cat > $TESTTMP/daterewrite.py <<EOF
|
|
|
|
> import sys, time
|
2019-01-30 03:25:33 +03:00
|
|
|
> from edenscm.mercurial import extensions
|
2015-10-18 04:59:46 +03:00
|
|
|
> def extsetup(ui):
|
|
|
|
> def faketime(orig):
|
|
|
|
> return 1000000000
|
|
|
|
> extensions.wrapfunction(time, 'time', faketime)
|
|
|
|
> EOF
|
|
|
|
$ cat >> ../rewritedate/.hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
|
|
|
> daterewrite=$TESTTMP/daterewrite.py
|
|
|
|
> EOF
|
|
|
|
$ hg push --to master
|
2016-01-08 05:30:24 +03:00
|
|
|
pushing to $TESTTMP/rewritedate (glob)
|
2015-10-18 04:59:46 +03:00
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
pushing 1 changeset:
|
2015-10-29 04:19:18 +03:00
|
|
|
d5e255ef74f8 c
|
2016-09-21 17:45:25 +03:00
|
|
|
1 new changeset from the server will be downloaded
|
2015-10-18 04:59:46 +03:00
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 0 changes to 1 files
|
|
|
|
1 new obsolescence markers
|
2017-07-11 19:44:53 +03:00
|
|
|
obsoleted 1 changesets
|
2017-07-18 22:16:04 +03:00
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2015-10-18 04:59:46 +03:00
|
|
|
$ hg log -G -T '{desc} {date|isodate}'
|
2017-07-18 22:16:04 +03:00
|
|
|
@ c 2001-09-09 01:46 +0000
|
|
|
|
|
|
|
|
|
o b 1970-01-01 00:00 +0000
|
2015-10-18 04:59:46 +03:00
|
|
|
|
|
|
|
|
o a 1970-01-01 00:00 +0000
|
|
|
|
|
2015-12-16 20:47:23 +03:00
|
|
|
Test date rewriting with a merge commit
|
|
|
|
|
|
|
|
$ hg up -q 0
|
|
|
|
$ echo x >> x
|
|
|
|
$ hg commit -qAm x
|
|
|
|
$ hg up -q 3
|
|
|
|
$ echo y >> y
|
|
|
|
$ hg commit -qAm y
|
|
|
|
$ hg merge -q 4
|
|
|
|
$ hg commit -qm merge
|
|
|
|
$ hg push --to master
|
2016-01-08 05:30:24 +03:00
|
|
|
pushing to $TESTTMP/rewritedate (glob)
|
2015-12-16 20:47:23 +03:00
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
pushing 3 changesets:
|
2015-12-16 20:47:23 +03:00
|
|
|
a5f9a9a43049 x
|
|
|
|
c1392466a61e y
|
|
|
|
4514adb1f536 merge
|
2016-09-21 17:45:25 +03:00
|
|
|
3 new changesets from the server will be downloaded
|
2015-12-16 20:47:23 +03:00
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 3 changesets with 0 changes to 2 files (+1 heads)
|
|
|
|
3 new obsolescence markers
|
2017-07-11 19:44:53 +03:00
|
|
|
obsoleted 3 changesets
|
2017-07-18 22:16:04 +03:00
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2015-12-16 20:47:23 +03:00
|
|
|
|
2015-10-29 04:19:12 +03:00
|
|
|
$ cd ..
|
|
|
|
|
2016-12-16 21:24:12 +03:00
|
|
|
Test pushrebase on merge commit where master is on the p2 side
|
|
|
|
|
|
|
|
$ hg init p2mergeserver
|
|
|
|
$ cd p2mergeserver
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2016-12-16 21:24:12 +03:00
|
|
|
> EOF
|
|
|
|
$ echo a >> a && hg commit -Aqm 'add a'
|
|
|
|
$ hg bookmark master
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ hg clone -q p2mergeserver p2mergeclient
|
|
|
|
$ cd p2mergeclient
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2016-12-16 21:24:12 +03:00
|
|
|
> EOF
|
|
|
|
$ hg up -q null
|
|
|
|
$ echo b >> b && hg commit -Aqm 'add b'
|
|
|
|
$ hg up -q null
|
|
|
|
$ echo c >> c && hg commit -Aqm 'add c'
|
|
|
|
$ hg merge -q 1
|
|
|
|
$ hg commit -m 'merge b and c'
|
|
|
|
$ hg push --to master
|
|
|
|
pushing to $TESTTMP/p2mergeserver (glob)
|
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
pushing 3 changesets:
|
2016-12-16 21:24:12 +03:00
|
|
|
cde40f86152f add b
|
|
|
|
6c337f0241b3 add c
|
|
|
|
4ae459502279 merge b and c
|
|
|
|
3 new changesets from the server will be downloaded
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 2 changesets with 0 changes to 2 files
|
|
|
|
2 new obsolescence markers
|
2017-07-11 19:44:53 +03:00
|
|
|
obsoleted 2 changesets
|
2017-07-18 22:16:04 +03:00
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2016-12-16 21:24:12 +03:00
|
|
|
$ hg -R ../p2mergeserver log -G -T '{rev}: {desc}'
|
|
|
|
o 3: merge b and c
|
|
|
|
|\
|
|
|
|
| o 2: add c
|
|
|
|
|
|
|
|
|
o 1: add b
|
|
|
|
|
|
|
|
|
@ 0: add a
|
|
|
|
|
|
|
|
$ hg -R ../p2mergeserver manifest -r 1
|
|
|
|
a
|
|
|
|
b
|
|
|
|
$ hg -R ../p2mergeserver manifest -r 3
|
|
|
|
a
|
|
|
|
b
|
|
|
|
c
|
|
|
|
$ cd ..
|
|
|
|
|
2015-10-29 04:19:12 +03:00
|
|
|
Test force pushes
|
|
|
|
$ hg init forcepushserver
|
|
|
|
$ cd forcepushserver
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-10-29 04:19:12 +03:00
|
|
|
> EOF
|
|
|
|
$ echo a > a && hg commit -Aqm a
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
$ hg clone forcepushserver forcepushclient
|
|
|
|
updating to branch default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ cd forcepushserver
|
|
|
|
$ echo a >> a && hg commit -Aqm aa
|
|
|
|
|
|
|
|
$ cd ../forcepushclient
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2015-10-29 04:19:12 +03:00
|
|
|
> EOF
|
|
|
|
$ hg up 0
|
|
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ echo b >> a && hg commit -Aqm b
|
|
|
|
$ hg book master
|
|
|
|
$ hg push -f --to master -B master
|
2016-01-08 05:30:24 +03:00
|
|
|
pushing to $TESTTMP/forcepushserver (glob)
|
2015-10-29 04:19:12 +03:00
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
pushing 1 changeset:
|
2015-10-29 04:19:18 +03:00
|
|
|
1846eede8b68 b
|
2015-10-29 04:19:12 +03:00
|
|
|
exporting bookmark master
|
|
|
|
$ hg pull
|
2016-01-08 05:30:24 +03:00
|
|
|
pulling from $TESTTMP/forcepushserver (glob)
|
2015-10-29 04:19:12 +03:00
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files (+1 heads)
|
2017-10-17 23:05:18 +03:00
|
|
|
new changesets 86cf3bb05fcf
|
2015-10-29 04:19:12 +03:00
|
|
|
(run 'hg heads' to see heads, 'hg merge' to merge)
|
|
|
|
$ hg log -G -T '{rev} {desc} {bookmarks}'
|
|
|
|
o 2 aa
|
|
|
|
|
|
|
|
|
| @ 1 b master
|
|
|
|
|/
|
|
|
|
o 0 a
|
|
|
|
|
2017-01-03 17:01:57 +03:00
|
|
|
Make sure that no hg-bundle-* files left
|
2017-01-04 00:09:31 +03:00
|
|
|
(the '|| true' and '*' prefix is because ls has different behavior on linux
|
|
|
|
and osx)
|
|
|
|
$ ls ../server/.hg/hg-bundle-* || true
|
2018-01-09 14:06:09 +03:00
|
|
|
ls: *../server/.hg/hg-bundle-*: $ENOENT$ (glob)
|
2017-04-11 23:21:27 +03:00
|
|
|
|
2017-04-26 00:46:36 +03:00
|
|
|
Server with obsstore disabled can still send obsmarkers useful to client, and
|
|
|
|
phase is updated correctly with the marker information.
|
2017-04-11 23:21:27 +03:00
|
|
|
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
|
|
> [experimental]
|
|
|
|
> evolution =
|
|
|
|
> EOF
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ hg init server1
|
|
|
|
$ cd server1
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2017-04-11 23:21:27 +03:00
|
|
|
> EOF
|
|
|
|
$ echo a > a
|
|
|
|
$ hg commit -m a -A a -q
|
|
|
|
$ cd ..
|
|
|
|
|
|
|
|
$ cp -R server1 client1
|
|
|
|
$ cd server1
|
|
|
|
$ echo b > b
|
|
|
|
$ hg commit -m b -A b -q
|
|
|
|
|
|
|
|
$ cd ../client1
|
|
|
|
$ echo a2 >> a
|
|
|
|
$ hg commit -m a2
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [experimental]
|
|
|
|
> evolution = all
|
|
|
|
> [paths]
|
|
|
|
> default = ../server1
|
|
|
|
> EOF
|
|
|
|
|
2017-07-27 22:33:43 +03:00
|
|
|
$ hg book -i BOOK
|
2017-04-11 23:21:27 +03:00
|
|
|
$ hg push -r . --to default
|
|
|
|
pushing to $TESTTMP/server1 (glob)
|
|
|
|
searching for changes
|
2017-07-24 21:42:24 +03:00
|
|
|
pushing 1 changeset:
|
2017-04-11 23:21:27 +03:00
|
|
|
045279cde9f0 a2
|
|
|
|
2 new changesets from the server will be downloaded
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 2 changesets with 1 changes to 2 files (+1 heads)
|
|
|
|
1 new obsolescence markers
|
2017-07-11 19:44:53 +03:00
|
|
|
obsoleted 1 changesets
|
2017-07-18 22:16:04 +03:00
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
2017-04-11 23:21:27 +03:00
|
|
|
$ hg up tip -q
|
2017-04-26 00:46:36 +03:00
|
|
|
$ log --hidden
|
2017-07-27 22:33:43 +03:00
|
|
|
@ a2 [public:722505d780e3] BOOK
|
2017-04-11 23:21:27 +03:00
|
|
|
|
|
2017-04-26 00:46:36 +03:00
|
|
|
o b [public:d2ae7f538514]
|
2017-04-11 23:21:27 +03:00
|
|
|
|
|
2017-04-26 00:46:36 +03:00
|
|
|
| x a2 [draft:045279cde9f0]
|
2017-04-11 23:21:27 +03:00
|
|
|
|/
|
2017-04-26 00:46:36 +03:00
|
|
|
o a [public:cb9a9f314b8b]
|
2017-04-11 23:21:27 +03:00
|
|
|
|
2017-07-27 22:33:43 +03:00
|
|
|
$ log
|
|
|
|
@ a2 [public:722505d780e3] BOOK
|
|
|
|
|
|
|
|
|
o b [public:d2ae7f538514]
|
|
|
|
|
|
|
|
|
o a [public:cb9a9f314b8b]
|
|
|
|
|
2017-10-21 03:15:01 +03:00
|
|
|
Push a file-copy changeset and the copy source gets modified by others:
|
|
|
|
|
|
|
|
$ cd $TESTTMP
|
|
|
|
$ hg init server2
|
|
|
|
$ cd server2
|
|
|
|
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [extensions]
|
2018-01-09 14:06:09 +03:00
|
|
|
> pushrebase=
|
2017-10-21 03:15:01 +03:00
|
|
|
> EOF
|
|
|
|
|
|
|
|
$ echo 1 > A
|
|
|
|
$ hg commit -m A -A A
|
|
|
|
|
|
|
|
$ cd ..
|
|
|
|
$ cp -R server2 client2
|
|
|
|
|
|
|
|
$ cd client2
|
|
|
|
$ hg cp A B
|
|
|
|
$ hg commit -m 'Copy A to B'
|
|
|
|
|
|
|
|
$ cd ../server2
|
|
|
|
$ echo 2 >> A
|
|
|
|
$ hg commit -m 'Modify A' A
|
|
|
|
|
|
|
|
$ cd ../client2
|
|
|
|
$ cat >> .hg/hgrc <<EOF
|
|
|
|
> [experimental]
|
|
|
|
> evolution = all
|
|
|
|
> [paths]
|
|
|
|
> default = ../server2
|
|
|
|
> EOF
|
|
|
|
|
|
|
|
$ hg push -r . --to default
|
|
|
|
pushing to $TESTTMP/server2 (glob)
|
|
|
|
searching for changes
|
2017-10-26 12:47:39 +03:00
|
|
|
abort: conflicting changes in:
|
|
|
|
A
|
2017-11-15 06:02:51 +03:00
|
|
|
(pull and rebase your changes locally, then try again)
|
2017-10-26 12:47:39 +03:00
|
|
|
[255]
|
|
|
|
|
2017-11-29 07:10:46 +03:00
|
|
|
Push an already-public changeset and confirm it is rejected
|
|
|
|
|
|
|
|
$ hg update -q '.^'
|
|
|
|
$ echo 2 > C
|
|
|
|
$ hg commit -m C -A C
|
|
|
|
$ hg phase -r. --public
|
|
|
|
$ hg push -r . --to default
|
|
|
|
pushing to $TESTTMP/server2 (glob)
|
|
|
|
searching for changes
|
|
|
|
abort: cannot rebase public changesets: 3850a85c4706
|
|
|
|
[255]
|
|
|
|
|
|
|
|
$ echo 3 >> C
|
|
|
|
$ hg commit -m C2
|
|
|
|
$ echo 4 >> C
|
|
|
|
$ hg commit -m C3
|
|
|
|
$ echo 5 >> C
|
|
|
|
$ hg commit -m C4
|
|
|
|
$ hg phase -r. --public
|
|
|
|
$ hg push -r . --to default
|
|
|
|
pushing to $TESTTMP/server2 (glob)
|
|
|
|
searching for changes
|
|
|
|
abort: cannot rebase public changesets: 3850a85c4706, 50b1220b7c4e, de211a1843b7, ...
|
|
|
|
[255]
|