##// END OF EJS Templates
py3: byte-stringify literals in extension in test-bundle2-exchange.t...
Yuya Nishihara -
r38622:4df549d0 default
parent child Browse files
Show More
@@ -1,1159 +1,1159 b''
1 #testcases sshv1 sshv2
1 #testcases sshv1 sshv2
2
2
3 #if sshv2
3 #if sshv2
4 $ cat >> $HGRCPATH << EOF
4 $ cat >> $HGRCPATH << EOF
5 > [experimental]
5 > [experimental]
6 > sshpeer.advertise-v2 = true
6 > sshpeer.advertise-v2 = true
7 > sshserver.support-v2 = true
7 > sshserver.support-v2 = true
8 > EOF
8 > EOF
9 #endif
9 #endif
10
10
11 Test exchange of common information using bundle2
11 Test exchange of common information using bundle2
12
12
13
13
14 $ getmainid() {
14 $ getmainid() {
15 > hg -R main log --template '{node}\n' --rev "$1"
15 > hg -R main log --template '{node}\n' --rev "$1"
16 > }
16 > }
17
17
18 enable obsolescence
18 enable obsolescence
19
19
20 $ cp $HGRCPATH $TESTTMP/hgrc.orig
20 $ cp $HGRCPATH $TESTTMP/hgrc.orig
21 $ cat > $TESTTMP/bundle2-pushkey-hook.sh << EOF
21 $ cat > $TESTTMP/bundle2-pushkey-hook.sh << EOF
22 > echo pushkey: lock state after \"\$HG_NAMESPACE\"
22 > echo pushkey: lock state after \"\$HG_NAMESPACE\"
23 > hg debuglock
23 > hg debuglock
24 > EOF
24 > EOF
25
25
26 $ cat >> $HGRCPATH << EOF
26 $ cat >> $HGRCPATH << EOF
27 > [experimental]
27 > [experimental]
28 > evolution.createmarkers=True
28 > evolution.createmarkers=True
29 > evolution.exchange=True
29 > evolution.exchange=True
30 > bundle2-output-capture=True
30 > bundle2-output-capture=True
31 > [ui]
31 > [ui]
32 > ssh="$PYTHON" "$TESTDIR/dummyssh"
32 > ssh="$PYTHON" "$TESTDIR/dummyssh"
33 > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline}
33 > logtemplate={rev}:{node|short} {phase} {author} {bookmarks} {desc|firstline}
34 > [web]
34 > [web]
35 > push_ssl = false
35 > push_ssl = false
36 > allow_push = *
36 > allow_push = *
37 > [phases]
37 > [phases]
38 > publish=False
38 > publish=False
39 > [hooks]
39 > [hooks]
40 > pretxnclose.tip = hg log -r tip -T "pre-close-tip:{node|short} {phase} {bookmarks}\n"
40 > pretxnclose.tip = hg log -r tip -T "pre-close-tip:{node|short} {phase} {bookmarks}\n"
41 > txnclose.tip = hg log -r tip -T "postclose-tip:{node|short} {phase} {bookmarks}\n"
41 > txnclose.tip = hg log -r tip -T "postclose-tip:{node|short} {phase} {bookmarks}\n"
42 > txnclose.env = sh -c "HG_LOCAL= printenv.py txnclose"
42 > txnclose.env = sh -c "HG_LOCAL= printenv.py txnclose"
43 > pushkey= sh "$TESTTMP/bundle2-pushkey-hook.sh"
43 > pushkey= sh "$TESTTMP/bundle2-pushkey-hook.sh"
44 > EOF
44 > EOF
45
45
46 The extension requires a repo (currently unused)
46 The extension requires a repo (currently unused)
47
47
48 $ hg init main
48 $ hg init main
49 $ cd main
49 $ cd main
50 $ touch a
50 $ touch a
51 $ hg add a
51 $ hg add a
52 $ hg commit -m 'a'
52 $ hg commit -m 'a'
53 pre-close-tip:3903775176ed draft
53 pre-close-tip:3903775176ed draft
54 postclose-tip:3903775176ed draft
54 postclose-tip:3903775176ed draft
55 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
55 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
56
56
57 $ hg unbundle $TESTDIR/bundles/rebase.hg
57 $ hg unbundle $TESTDIR/bundles/rebase.hg
58 adding changesets
58 adding changesets
59 adding manifests
59 adding manifests
60 adding file changes
60 adding file changes
61 added 8 changesets with 7 changes to 7 files (+3 heads)
61 added 8 changesets with 7 changes to 7 files (+3 heads)
62 pre-close-tip:02de42196ebe draft
62 pre-close-tip:02de42196ebe draft
63 new changesets cd010b8cd998:02de42196ebe
63 new changesets cd010b8cd998:02de42196ebe
64 postclose-tip:02de42196ebe draft
64 postclose-tip:02de42196ebe draft
65 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:$ID$ HG_TXNNAME=unbundle
65 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=unbundle HG_TXNID=TXN:$ID$ HG_TXNNAME=unbundle
66 bundle:*/tests/bundles/rebase.hg HG_URL=bundle:*/tests/bundles/rebase.hg (glob)
66 bundle:*/tests/bundles/rebase.hg HG_URL=bundle:*/tests/bundles/rebase.hg (glob)
67 (run 'hg heads' to see heads, 'hg merge' to merge)
67 (run 'hg heads' to see heads, 'hg merge' to merge)
68
68
69 $ cd ..
69 $ cd ..
70
70
71 Real world exchange
71 Real world exchange
72 =====================
72 =====================
73
73
74 Add more obsolescence information
74 Add more obsolescence information
75
75
76 $ hg -R main debugobsolete -d '0 0' 1111111111111111111111111111111111111111 `getmainid 9520eea781bc`
76 $ hg -R main debugobsolete -d '0 0' 1111111111111111111111111111111111111111 `getmainid 9520eea781bc`
77 pre-close-tip:02de42196ebe draft
77 pre-close-tip:02de42196ebe draft
78 postclose-tip:02de42196ebe draft
78 postclose-tip:02de42196ebe draft
79 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
79 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
80 $ hg -R main debugobsolete -d '0 0' 2222222222222222222222222222222222222222 `getmainid 24b6387c8c8c`
80 $ hg -R main debugobsolete -d '0 0' 2222222222222222222222222222222222222222 `getmainid 24b6387c8c8c`
81 pre-close-tip:02de42196ebe draft
81 pre-close-tip:02de42196ebe draft
82 postclose-tip:02de42196ebe draft
82 postclose-tip:02de42196ebe draft
83 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
83 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
84
84
85 clone --pull
85 clone --pull
86
86
87 $ hg -R main phase --public cd010b8cd998
87 $ hg -R main phase --public cd010b8cd998
88 pre-close-tip:02de42196ebe draft
88 pre-close-tip:02de42196ebe draft
89 postclose-tip:02de42196ebe draft
89 postclose-tip:02de42196ebe draft
90 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
90 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
91 $ hg clone main other --pull --rev 9520eea781bc
91 $ hg clone main other --pull --rev 9520eea781bc
92 adding changesets
92 adding changesets
93 adding manifests
93 adding manifests
94 adding file changes
94 adding file changes
95 added 2 changesets with 2 changes to 2 files
95 added 2 changesets with 2 changes to 2 files
96 1 new obsolescence markers
96 1 new obsolescence markers
97 pre-close-tip:9520eea781bc draft
97 pre-close-tip:9520eea781bc draft
98 new changesets cd010b8cd998:9520eea781bc
98 new changesets cd010b8cd998:9520eea781bc
99 postclose-tip:9520eea781bc draft
99 postclose-tip:9520eea781bc draft
100 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=9520eea781bcca16c1e15acc0ba14335a0e8e5ba HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
100 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=cd010b8cd998f3981a5a8115f94f8da4ab506089 HG_NODE_LAST=9520eea781bcca16c1e15acc0ba14335a0e8e5ba HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
101 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
101 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
102 updating to branch default
102 updating to branch default
103 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
103 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
104 $ hg -R other log -G
104 $ hg -R other log -G
105 @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
105 @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
106 |
106 |
107 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
107 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
108
108
109 $ hg -R other debugobsolete
109 $ hg -R other debugobsolete
110 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
110 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
111
111
112 pull
112 pull
113
113
114 $ hg -R main phase --public 9520eea781bc
114 $ hg -R main phase --public 9520eea781bc
115 pre-close-tip:02de42196ebe draft
115 pre-close-tip:02de42196ebe draft
116 postclose-tip:02de42196ebe draft
116 postclose-tip:02de42196ebe draft
117 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
117 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
118 $ hg -R other pull -r 24b6387c8c8c
118 $ hg -R other pull -r 24b6387c8c8c
119 pulling from $TESTTMP/main
119 pulling from $TESTTMP/main
120 searching for changes
120 searching for changes
121 adding changesets
121 adding changesets
122 adding manifests
122 adding manifests
123 adding file changes
123 adding file changes
124 added 1 changesets with 1 changes to 1 files (+1 heads)
124 added 1 changesets with 1 changes to 1 files (+1 heads)
125 1 new obsolescence markers
125 1 new obsolescence markers
126 pre-close-tip:24b6387c8c8c draft
126 pre-close-tip:24b6387c8c8c draft
127 new changesets 24b6387c8c8c
127 new changesets 24b6387c8c8c
128 postclose-tip:24b6387c8c8c draft
128 postclose-tip:24b6387c8c8c draft
129 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_NODE_LAST=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
129 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_NODE_LAST=24b6387c8c8cae37178880f3fa95ded3cb1cf785 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
130 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
130 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
131 (run 'hg heads' to see heads, 'hg merge' to merge)
131 (run 'hg heads' to see heads, 'hg merge' to merge)
132 $ hg -R other log -G
132 $ hg -R other log -G
133 o 2:24b6387c8c8c draft Nicolas Dumazet <nicdumz.commits@gmail.com> F
133 o 2:24b6387c8c8c draft Nicolas Dumazet <nicdumz.commits@gmail.com> F
134 |
134 |
135 | @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
135 | @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
136 |/
136 |/
137 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
137 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
138
138
139 $ hg -R other debugobsolete
139 $ hg -R other debugobsolete
140 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
140 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
141 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
141 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
142
142
143 pull empty (with phase movement)
143 pull empty (with phase movement)
144
144
145 $ hg -R main phase --public 24b6387c8c8c
145 $ hg -R main phase --public 24b6387c8c8c
146 pre-close-tip:02de42196ebe draft
146 pre-close-tip:02de42196ebe draft
147 postclose-tip:02de42196ebe draft
147 postclose-tip:02de42196ebe draft
148 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
148 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
149 $ hg -R other pull -r 24b6387c8c8c
149 $ hg -R other pull -r 24b6387c8c8c
150 pulling from $TESTTMP/main
150 pulling from $TESTTMP/main
151 no changes found
151 no changes found
152 pre-close-tip:24b6387c8c8c public
152 pre-close-tip:24b6387c8c8c public
153 1 local changesets published
153 1 local changesets published
154 postclose-tip:24b6387c8c8c public
154 postclose-tip:24b6387c8c8c public
155 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=0 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
155 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=0 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
156 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
156 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
157 $ hg -R other log -G
157 $ hg -R other log -G
158 o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
158 o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
159 |
159 |
160 | @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
160 | @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
161 |/
161 |/
162 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
162 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
163
163
164 $ hg -R other debugobsolete
164 $ hg -R other debugobsolete
165 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
165 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
166 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
166 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
167
167
168 pull empty
168 pull empty
169
169
170 $ hg -R other pull -r 24b6387c8c8c
170 $ hg -R other pull -r 24b6387c8c8c
171 pulling from $TESTTMP/main
171 pulling from $TESTTMP/main
172 no changes found
172 no changes found
173 pre-close-tip:24b6387c8c8c public
173 pre-close-tip:24b6387c8c8c public
174 postclose-tip:24b6387c8c8c public
174 postclose-tip:24b6387c8c8c public
175 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=0 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
175 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=0 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
176 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
176 file:/*/$TESTTMP/main HG_URL=file:$TESTTMP/main (glob)
177 $ hg -R other log -G
177 $ hg -R other log -G
178 o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
178 o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
179 |
179 |
180 | @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
180 | @ 1:9520eea781bc draft Nicolas Dumazet <nicdumz.commits@gmail.com> E
181 |/
181 |/
182 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
182 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
183
183
184 $ hg -R other debugobsolete
184 $ hg -R other debugobsolete
185 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
185 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
186 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
186 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
187
187
188 add extra data to test their exchange during push
188 add extra data to test their exchange during push
189
189
190 $ hg -R main bookmark --rev eea13746799a book_eea1
190 $ hg -R main bookmark --rev eea13746799a book_eea1
191 pre-close-tip:02de42196ebe draft
191 pre-close-tip:02de42196ebe draft
192 postclose-tip:02de42196ebe draft
192 postclose-tip:02de42196ebe draft
193 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
193 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
194 $ hg -R main debugobsolete -d '0 0' 3333333333333333333333333333333333333333 `getmainid eea13746799a`
194 $ hg -R main debugobsolete -d '0 0' 3333333333333333333333333333333333333333 `getmainid eea13746799a`
195 pre-close-tip:02de42196ebe draft
195 pre-close-tip:02de42196ebe draft
196 postclose-tip:02de42196ebe draft
196 postclose-tip:02de42196ebe draft
197 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
197 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
198 $ hg -R main bookmark --rev 02de42196ebe book_02de
198 $ hg -R main bookmark --rev 02de42196ebe book_02de
199 pre-close-tip:02de42196ebe draft book_02de
199 pre-close-tip:02de42196ebe draft book_02de
200 postclose-tip:02de42196ebe draft book_02de
200 postclose-tip:02de42196ebe draft book_02de
201 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
201 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
202 $ hg -R main debugobsolete -d '0 0' 4444444444444444444444444444444444444444 `getmainid 02de42196ebe`
202 $ hg -R main debugobsolete -d '0 0' 4444444444444444444444444444444444444444 `getmainid 02de42196ebe`
203 pre-close-tip:02de42196ebe draft book_02de
203 pre-close-tip:02de42196ebe draft book_02de
204 postclose-tip:02de42196ebe draft book_02de
204 postclose-tip:02de42196ebe draft book_02de
205 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
205 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
206 $ hg -R main bookmark --rev 42ccdea3bb16 book_42cc
206 $ hg -R main bookmark --rev 42ccdea3bb16 book_42cc
207 pre-close-tip:02de42196ebe draft book_02de
207 pre-close-tip:02de42196ebe draft book_02de
208 postclose-tip:02de42196ebe draft book_02de
208 postclose-tip:02de42196ebe draft book_02de
209 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
209 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
210 $ hg -R main debugobsolete -d '0 0' 5555555555555555555555555555555555555555 `getmainid 42ccdea3bb16`
210 $ hg -R main debugobsolete -d '0 0' 5555555555555555555555555555555555555555 `getmainid 42ccdea3bb16`
211 pre-close-tip:02de42196ebe draft book_02de
211 pre-close-tip:02de42196ebe draft book_02de
212 postclose-tip:02de42196ebe draft book_02de
212 postclose-tip:02de42196ebe draft book_02de
213 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
213 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
214 $ hg -R main bookmark --rev 5fddd98957c8 book_5fdd
214 $ hg -R main bookmark --rev 5fddd98957c8 book_5fdd
215 pre-close-tip:02de42196ebe draft book_02de
215 pre-close-tip:02de42196ebe draft book_02de
216 postclose-tip:02de42196ebe draft book_02de
216 postclose-tip:02de42196ebe draft book_02de
217 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
217 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
218 $ hg -R main debugobsolete -d '0 0' 6666666666666666666666666666666666666666 `getmainid 5fddd98957c8`
218 $ hg -R main debugobsolete -d '0 0' 6666666666666666666666666666666666666666 `getmainid 5fddd98957c8`
219 pre-close-tip:02de42196ebe draft book_02de
219 pre-close-tip:02de42196ebe draft book_02de
220 postclose-tip:02de42196ebe draft book_02de
220 postclose-tip:02de42196ebe draft book_02de
221 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
221 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
222 $ hg -R main bookmark --rev 32af7686d403 book_32af
222 $ hg -R main bookmark --rev 32af7686d403 book_32af
223 pre-close-tip:02de42196ebe draft book_02de
223 pre-close-tip:02de42196ebe draft book_02de
224 postclose-tip:02de42196ebe draft book_02de
224 postclose-tip:02de42196ebe draft book_02de
225 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
225 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
226 $ hg -R main debugobsolete -d '0 0' 7777777777777777777777777777777777777777 `getmainid 32af7686d403`
226 $ hg -R main debugobsolete -d '0 0' 7777777777777777777777777777777777777777 `getmainid 32af7686d403`
227 pre-close-tip:02de42196ebe draft book_02de
227 pre-close-tip:02de42196ebe draft book_02de
228 postclose-tip:02de42196ebe draft book_02de
228 postclose-tip:02de42196ebe draft book_02de
229 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
229 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=debugobsolete
230
230
231 $ hg -R other bookmark --rev cd010b8cd998 book_eea1
231 $ hg -R other bookmark --rev cd010b8cd998 book_eea1
232 pre-close-tip:24b6387c8c8c public
232 pre-close-tip:24b6387c8c8c public
233 postclose-tip:24b6387c8c8c public
233 postclose-tip:24b6387c8c8c public
234 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
234 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
235 $ hg -R other bookmark --rev cd010b8cd998 book_02de
235 $ hg -R other bookmark --rev cd010b8cd998 book_02de
236 pre-close-tip:24b6387c8c8c public
236 pre-close-tip:24b6387c8c8c public
237 postclose-tip:24b6387c8c8c public
237 postclose-tip:24b6387c8c8c public
238 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
238 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
239 $ hg -R other bookmark --rev cd010b8cd998 book_42cc
239 $ hg -R other bookmark --rev cd010b8cd998 book_42cc
240 pre-close-tip:24b6387c8c8c public
240 pre-close-tip:24b6387c8c8c public
241 postclose-tip:24b6387c8c8c public
241 postclose-tip:24b6387c8c8c public
242 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
242 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
243 $ hg -R other bookmark --rev cd010b8cd998 book_5fdd
243 $ hg -R other bookmark --rev cd010b8cd998 book_5fdd
244 pre-close-tip:24b6387c8c8c public
244 pre-close-tip:24b6387c8c8c public
245 postclose-tip:24b6387c8c8c public
245 postclose-tip:24b6387c8c8c public
246 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
246 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
247 $ hg -R other bookmark --rev cd010b8cd998 book_32af
247 $ hg -R other bookmark --rev cd010b8cd998 book_32af
248 pre-close-tip:24b6387c8c8c public
248 pre-close-tip:24b6387c8c8c public
249 postclose-tip:24b6387c8c8c public
249 postclose-tip:24b6387c8c8c public
250 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
250 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=bookmark
251
251
252 $ hg -R main phase --public eea13746799a
252 $ hg -R main phase --public eea13746799a
253 pre-close-tip:02de42196ebe draft book_02de
253 pre-close-tip:02de42196ebe draft book_02de
254 postclose-tip:02de42196ebe draft book_02de
254 postclose-tip:02de42196ebe draft book_02de
255 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
255 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
256
256
257 push
257 push
258 $ hg -R main push other --rev eea13746799a --bookmark book_eea1
258 $ hg -R main push other --rev eea13746799a --bookmark book_eea1
259 pushing to other
259 pushing to other
260 searching for changes
260 searching for changes
261 remote: adding changesets
261 remote: adding changesets
262 remote: adding manifests
262 remote: adding manifests
263 remote: adding file changes
263 remote: adding file changes
264 remote: added 1 changesets with 0 changes to 0 files (-1 heads)
264 remote: added 1 changesets with 0 changes to 0 files (-1 heads)
265 remote: 1 new obsolescence markers
265 remote: 1 new obsolescence markers
266 remote: pre-close-tip:eea13746799a public book_eea1
266 remote: pre-close-tip:eea13746799a public book_eea1
267 remote: pushkey: lock state after "bookmarks"
267 remote: pushkey: lock state after "bookmarks"
268 remote: lock: free
268 remote: lock: free
269 remote: wlock: free
269 remote: wlock: free
270 remote: postclose-tip:eea13746799a public book_eea1
270 remote: postclose-tip:eea13746799a public book_eea1
271 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_NODE_LAST=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:$ID$ HG_TXNNAME=push HG_URL=file:$TESTTMP/other
271 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_NODE_LAST=eea13746799a9e0bfd88f29d3c2e9dc9389f524f HG_PHASES_MOVED=1 HG_SOURCE=push HG_TXNID=TXN:$ID$ HG_TXNNAME=push HG_URL=file:$TESTTMP/other
272 updating bookmark book_eea1
272 updating bookmark book_eea1
273 pre-close-tip:02de42196ebe draft book_02de
273 pre-close-tip:02de42196ebe draft book_02de
274 postclose-tip:02de42196ebe draft book_02de
274 postclose-tip:02de42196ebe draft book_02de
275 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
275 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
276 file:/*/$TESTTMP/other HG_URL=file:$TESTTMP/other (glob)
276 file:/*/$TESTTMP/other HG_URL=file:$TESTTMP/other (glob)
277 $ hg -R other log -G
277 $ hg -R other log -G
278 o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
278 o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
279 |\
279 |\
280 | o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
280 | o 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
281 | |
281 | |
282 @ | 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
282 @ | 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
283 |/
283 |/
284 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de book_32af book_42cc book_5fdd A
284 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de book_32af book_42cc book_5fdd A
285
285
286 $ hg -R other debugobsolete
286 $ hg -R other debugobsolete
287 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
287 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
288 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
288 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
289 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
289 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
290
290
291 pull over ssh
291 pull over ssh
292
292
293 $ hg -R other pull ssh://user@dummy/main -r 02de42196ebe --bookmark book_02de
293 $ hg -R other pull ssh://user@dummy/main -r 02de42196ebe --bookmark book_02de
294 pulling from ssh://user@dummy/main
294 pulling from ssh://user@dummy/main
295 searching for changes
295 searching for changes
296 adding changesets
296 adding changesets
297 adding manifests
297 adding manifests
298 adding file changes
298 adding file changes
299 added 1 changesets with 1 changes to 1 files (+1 heads)
299 added 1 changesets with 1 changes to 1 files (+1 heads)
300 1 new obsolescence markers
300 1 new obsolescence markers
301 updating bookmark book_02de
301 updating bookmark book_02de
302 pre-close-tip:02de42196ebe draft book_02de
302 pre-close-tip:02de42196ebe draft book_02de
303 new changesets 02de42196ebe
303 new changesets 02de42196ebe
304 postclose-tip:02de42196ebe draft book_02de
304 postclose-tip:02de42196ebe draft book_02de
305 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
305 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_NODE_LAST=02de42196ebee42ef284b6780a87cdc96e8eaab6 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
306 ssh://user@dummy/main HG_URL=ssh://user@dummy/main
306 ssh://user@dummy/main HG_URL=ssh://user@dummy/main
307 (run 'hg heads' to see heads, 'hg merge' to merge)
307 (run 'hg heads' to see heads, 'hg merge' to merge)
308 $ hg -R other debugobsolete
308 $ hg -R other debugobsolete
309 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
309 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
310 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
310 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
311 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
311 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
312 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
312 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
313
313
314 pull over http
314 pull over http
315
315
316 $ hg serve -R main -p $HGPORT -d --pid-file=main.pid -E main-error.log
316 $ hg serve -R main -p $HGPORT -d --pid-file=main.pid -E main-error.log
317 $ cat main.pid >> $DAEMON_PIDS
317 $ cat main.pid >> $DAEMON_PIDS
318
318
319 $ hg -R other pull http://localhost:$HGPORT/ -r 42ccdea3bb16 --bookmark book_42cc
319 $ hg -R other pull http://localhost:$HGPORT/ -r 42ccdea3bb16 --bookmark book_42cc
320 pulling from http://localhost:$HGPORT/
320 pulling from http://localhost:$HGPORT/
321 searching for changes
321 searching for changes
322 adding changesets
322 adding changesets
323 adding manifests
323 adding manifests
324 adding file changes
324 adding file changes
325 added 1 changesets with 1 changes to 1 files (+1 heads)
325 added 1 changesets with 1 changes to 1 files (+1 heads)
326 1 new obsolescence markers
326 1 new obsolescence markers
327 updating bookmark book_42cc
327 updating bookmark book_42cc
328 pre-close-tip:42ccdea3bb16 draft book_42cc
328 pre-close-tip:42ccdea3bb16 draft book_42cc
329 new changesets 42ccdea3bb16
329 new changesets 42ccdea3bb16
330 postclose-tip:42ccdea3bb16 draft book_42cc
330 postclose-tip:42ccdea3bb16 draft book_42cc
331 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_NODE_LAST=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
331 txnclose hook: HG_BOOKMARK_MOVED=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_NODE_LAST=42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 HG_PHASES_MOVED=1 HG_SOURCE=pull HG_TXNID=TXN:$ID$ HG_TXNNAME=pull
332 http://localhost:$HGPORT/ HG_URL=http://localhost:$HGPORT/
332 http://localhost:$HGPORT/ HG_URL=http://localhost:$HGPORT/
333 (run 'hg heads .' to see heads, 'hg merge' to merge)
333 (run 'hg heads .' to see heads, 'hg merge' to merge)
334 $ cat main-error.log
334 $ cat main-error.log
335 $ hg -R other debugobsolete
335 $ hg -R other debugobsolete
336 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
336 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
337 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
337 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
338 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
338 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
339 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
339 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
340 5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
340 5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
341
341
342 push over ssh
342 push over ssh
343
343
344 $ hg -R main push ssh://user@dummy/other -r 5fddd98957c8 --bookmark book_5fdd
344 $ hg -R main push ssh://user@dummy/other -r 5fddd98957c8 --bookmark book_5fdd
345 pushing to ssh://user@dummy/other
345 pushing to ssh://user@dummy/other
346 searching for changes
346 searching for changes
347 remote: adding changesets
347 remote: adding changesets
348 remote: adding manifests
348 remote: adding manifests
349 remote: adding file changes
349 remote: adding file changes
350 remote: added 1 changesets with 1 changes to 1 files
350 remote: added 1 changesets with 1 changes to 1 files
351 remote: 1 new obsolescence markers
351 remote: 1 new obsolescence markers
352 remote: pre-close-tip:5fddd98957c8 draft book_5fdd
352 remote: pre-close-tip:5fddd98957c8 draft book_5fdd
353 remote: pushkey: lock state after "bookmarks"
353 remote: pushkey: lock state after "bookmarks"
354 remote: lock: free
354 remote: lock: free
355 remote: wlock: free
355 remote: wlock: free
356 remote: postclose-tip:5fddd98957c8 draft book_5fdd
356 remote: postclose-tip:5fddd98957c8 draft book_5fdd
357 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_NODE_LAST=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_SOURCE=serve HG_TXNID=TXN:$ID$ HG_TXNNAME=serve HG_URL=remote:ssh:$LOCALIP
357 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_NODE_LAST=5fddd98957c8a54a4d436dfe1da9d87f21a1b97b HG_SOURCE=serve HG_TXNID=TXN:$ID$ HG_TXNNAME=serve HG_URL=remote:ssh:$LOCALIP
358 updating bookmark book_5fdd
358 updating bookmark book_5fdd
359 pre-close-tip:02de42196ebe draft book_02de
359 pre-close-tip:02de42196ebe draft book_02de
360 postclose-tip:02de42196ebe draft book_02de
360 postclose-tip:02de42196ebe draft book_02de
361 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
361 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
362 ssh://user@dummy/other HG_URL=ssh://user@dummy/other
362 ssh://user@dummy/other HG_URL=ssh://user@dummy/other
363 $ hg -R other log -G
363 $ hg -R other log -G
364 o 6:5fddd98957c8 draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_5fdd C
364 o 6:5fddd98957c8 draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_5fdd C
365 |
365 |
366 o 5:42ccdea3bb16 draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_42cc B
366 o 5:42ccdea3bb16 draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_42cc B
367 |
367 |
368 | o 4:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de H
368 | o 4:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de H
369 | |
369 | |
370 | | o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
370 | | o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
371 | |/|
371 | |/|
372 | o | 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
372 | o | 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
373 |/ /
373 |/ /
374 | @ 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
374 | @ 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
375 |/
375 |/
376 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_32af A
376 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_32af A
377
377
378 $ hg -R other debugobsolete
378 $ hg -R other debugobsolete
379 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
379 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
380 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
380 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
381 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
381 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
382 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
382 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
383 5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
383 5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
384 6666666666666666666666666666666666666666 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
384 6666666666666666666666666666666666666666 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
385
385
386 push over http
386 push over http
387
387
388 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
388 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
389 $ cat other.pid >> $DAEMON_PIDS
389 $ cat other.pid >> $DAEMON_PIDS
390
390
391 $ hg -R main phase --public 32af7686d403
391 $ hg -R main phase --public 32af7686d403
392 pre-close-tip:02de42196ebe draft book_02de
392 pre-close-tip:02de42196ebe draft book_02de
393 postclose-tip:02de42196ebe draft book_02de
393 postclose-tip:02de42196ebe draft book_02de
394 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
394 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_PHASES_MOVED=1 HG_TXNID=TXN:$ID$ HG_TXNNAME=phase
395 $ hg -R main push http://localhost:$HGPORT2/ -r 32af7686d403 --bookmark book_32af
395 $ hg -R main push http://localhost:$HGPORT2/ -r 32af7686d403 --bookmark book_32af
396 pushing to http://localhost:$HGPORT2/
396 pushing to http://localhost:$HGPORT2/
397 searching for changes
397 searching for changes
398 remote: adding changesets
398 remote: adding changesets
399 remote: adding manifests
399 remote: adding manifests
400 remote: adding file changes
400 remote: adding file changes
401 remote: added 1 changesets with 1 changes to 1 files
401 remote: added 1 changesets with 1 changes to 1 files
402 remote: 1 new obsolescence markers
402 remote: 1 new obsolescence markers
403 remote: pre-close-tip:32af7686d403 public book_32af
403 remote: pre-close-tip:32af7686d403 public book_32af
404 remote: pushkey: lock state after "bookmarks"
404 remote: pushkey: lock state after "bookmarks"
405 remote: lock: free
405 remote: lock: free
406 remote: wlock: free
406 remote: wlock: free
407 remote: postclose-tip:32af7686d403 public book_32af
407 remote: postclose-tip:32af7686d403 public book_32af
408 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=32af7686d403cf45b5d95f2d70cebea587ac806a HG_NODE_LAST=32af7686d403cf45b5d95f2d70cebea587ac806a HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:$ID$ HG_TXNNAME=serve HG_URL=remote:http:$LOCALIP: (glob)
408 remote: txnclose hook: HG_BOOKMARK_MOVED=1 HG_BUNDLE2=1 HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_NEW_OBSMARKERS=1 HG_NODE=32af7686d403cf45b5d95f2d70cebea587ac806a HG_NODE_LAST=32af7686d403cf45b5d95f2d70cebea587ac806a HG_PHASES_MOVED=1 HG_SOURCE=serve HG_TXNID=TXN:$ID$ HG_TXNNAME=serve HG_URL=remote:http:$LOCALIP: (glob)
409 updating bookmark book_32af
409 updating bookmark book_32af
410 pre-close-tip:02de42196ebe draft book_02de
410 pre-close-tip:02de42196ebe draft book_02de
411 postclose-tip:02de42196ebe draft book_02de
411 postclose-tip:02de42196ebe draft book_02de
412 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
412 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_SOURCE=push-response HG_TXNID=TXN:$ID$ HG_TXNNAME=push-response
413 http://localhost:$HGPORT2/ HG_URL=http://localhost:$HGPORT2/
413 http://localhost:$HGPORT2/ HG_URL=http://localhost:$HGPORT2/
414 $ cat other-error.log
414 $ cat other-error.log
415
415
416 Check final content.
416 Check final content.
417
417
418 $ hg -R other log -G
418 $ hg -R other log -G
419 o 7:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_32af D
419 o 7:32af7686d403 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_32af D
420 |
420 |
421 o 6:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_5fdd C
421 o 6:5fddd98957c8 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_5fdd C
422 |
422 |
423 o 5:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_42cc B
423 o 5:42ccdea3bb16 public Nicolas Dumazet <nicdumz.commits@gmail.com> book_42cc B
424 |
424 |
425 | o 4:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de H
425 | o 4:02de42196ebe draft Nicolas Dumazet <nicdumz.commits@gmail.com> book_02de H
426 | |
426 | |
427 | | o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
427 | | o 3:eea13746799a public Nicolas Dumazet <nicdumz.commits@gmail.com> book_eea1 G
428 | |/|
428 | |/|
429 | o | 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
429 | o | 2:24b6387c8c8c public Nicolas Dumazet <nicdumz.commits@gmail.com> F
430 |/ /
430 |/ /
431 | @ 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
431 | @ 1:9520eea781bc public Nicolas Dumazet <nicdumz.commits@gmail.com> E
432 |/
432 |/
433 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
433 o 0:cd010b8cd998 public Nicolas Dumazet <nicdumz.commits@gmail.com> A
434
434
435 $ hg -R other debugobsolete
435 $ hg -R other debugobsolete
436 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
436 1111111111111111111111111111111111111111 9520eea781bcca16c1e15acc0ba14335a0e8e5ba 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
437 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
437 2222222222222222222222222222222222222222 24b6387c8c8cae37178880f3fa95ded3cb1cf785 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
438 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
438 3333333333333333333333333333333333333333 eea13746799a9e0bfd88f29d3c2e9dc9389f524f 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
439 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
439 4444444444444444444444444444444444444444 02de42196ebee42ef284b6780a87cdc96e8eaab6 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
440 5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
440 5555555555555555555555555555555555555555 42ccdea3bb16d28e1848c95fe2e44c000f3f21b1 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
441 6666666666666666666666666666666666666666 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
441 6666666666666666666666666666666666666666 5fddd98957c8a54a4d436dfe1da9d87f21a1b97b 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
442 7777777777777777777777777777777777777777 32af7686d403cf45b5d95f2d70cebea587ac806a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
442 7777777777777777777777777777777777777777 32af7686d403cf45b5d95f2d70cebea587ac806a 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'}
443
443
444 (check that no 'pending' files remain)
444 (check that no 'pending' files remain)
445
445
446 $ ls -1 other/.hg/bookmarks*
446 $ ls -1 other/.hg/bookmarks*
447 other/.hg/bookmarks
447 other/.hg/bookmarks
448 $ ls -1 other/.hg/store/phaseroots*
448 $ ls -1 other/.hg/store/phaseroots*
449 other/.hg/store/phaseroots
449 other/.hg/store/phaseroots
450 $ ls -1 other/.hg/store/00changelog.i*
450 $ ls -1 other/.hg/store/00changelog.i*
451 other/.hg/store/00changelog.i
451 other/.hg/store/00changelog.i
452
452
453 Error Handling
453 Error Handling
454 ==============
454 ==============
455
455
456 Check that errors are properly returned to the client during push.
456 Check that errors are properly returned to the client during push.
457
457
458 Setting up
458 Setting up
459
459
460 $ cat > failpush.py << EOF
460 $ cat > failpush.py << EOF
461 > """A small extension that makes push fails when using bundle2
461 > """A small extension that makes push fails when using bundle2
462 >
462 >
463 > used to test error handling in bundle2
463 > used to test error handling in bundle2
464 > """
464 > """
465 >
465 >
466 > from mercurial import error
466 > from mercurial import error
467 > from mercurial import bundle2
467 > from mercurial import bundle2
468 > from mercurial import exchange
468 > from mercurial import exchange
469 > from mercurial import extensions
469 > from mercurial import extensions
470 > from mercurial import registrar
470 > from mercurial import registrar
471 > cmdtable = {}
471 > cmdtable = {}
472 > command = registrar.command(cmdtable)
472 > command = registrar.command(cmdtable)
473 >
473 >
474 > configtable = {}
474 > configtable = {}
475 > configitem = registrar.configitem(configtable)
475 > configitem = registrar.configitem(configtable)
476 > configitem(b'failpush', b'reason',
476 > configitem(b'failpush', b'reason',
477 > default=None,
477 > default=None,
478 > )
478 > )
479 >
479 >
480 > def _pushbundle2failpart(pushop, bundler):
480 > def _pushbundle2failpart(pushop, bundler):
481 > reason = pushop.ui.config(b'failpush', b'reason')
481 > reason = pushop.ui.config(b'failpush', b'reason')
482 > part = None
482 > part = None
483 > if reason == b'abort':
483 > if reason == b'abort':
484 > bundler.newpart(b'test:abort')
484 > bundler.newpart(b'test:abort')
485 > if reason == b'unknown':
485 > if reason == b'unknown':
486 > bundler.newpart(b'test:unknown')
486 > bundler.newpart(b'test:unknown')
487 > if reason == b'race':
487 > if reason == b'race':
488 > # 20 Bytes of crap
488 > # 20 Bytes of crap
489 > bundler.newpart(b'check:heads', data=b'01234567890123456789')
489 > bundler.newpart(b'check:heads', data=b'01234567890123456789')
490 >
490 >
491 > @bundle2.parthandler(b"test:abort")
491 > @bundle2.parthandler(b"test:abort")
492 > def handleabort(op, part):
492 > def handleabort(op, part):
493 > raise error.Abort(b'Abandon ship!', hint=b"don't panic")
493 > raise error.Abort(b'Abandon ship!', hint=b"don't panic")
494 >
494 >
495 > def uisetup(ui):
495 > def uisetup(ui):
496 > exchange.b2partsgenmapping[b'failpart'] = _pushbundle2failpart
496 > exchange.b2partsgenmapping[b'failpart'] = _pushbundle2failpart
497 > exchange.b2partsgenorder.insert(0, b'failpart')
497 > exchange.b2partsgenorder.insert(0, b'failpart')
498 >
498 >
499 > EOF
499 > EOF
500
500
501 $ cd main
501 $ cd main
502 $ hg up tip
502 $ hg up tip
503 3 files updated, 0 files merged, 1 files removed, 0 files unresolved
503 3 files updated, 0 files merged, 1 files removed, 0 files unresolved
504 $ echo 'I' > I
504 $ echo 'I' > I
505 $ hg add I
505 $ hg add I
506 $ hg ci -m 'I'
506 $ hg ci -m 'I'
507 pre-close-tip:e7ec4e813ba6 draft
507 pre-close-tip:e7ec4e813ba6 draft
508 postclose-tip:e7ec4e813ba6 draft
508 postclose-tip:e7ec4e813ba6 draft
509 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
509 txnclose hook: HG_HOOKNAME=txnclose.env HG_HOOKTYPE=txnclose HG_TXNID=TXN:$ID$ HG_TXNNAME=commit
510 $ hg id
510 $ hg id
511 e7ec4e813ba6 tip
511 e7ec4e813ba6 tip
512 $ cd ..
512 $ cd ..
513
513
514 $ cat << EOF >> $HGRCPATH
514 $ cat << EOF >> $HGRCPATH
515 > [extensions]
515 > [extensions]
516 > failpush=$TESTTMP/failpush.py
516 > failpush=$TESTTMP/failpush.py
517 > EOF
517 > EOF
518
518
519 $ killdaemons.py
519 $ killdaemons.py
520 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
520 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
521 $ cat other.pid >> $DAEMON_PIDS
521 $ cat other.pid >> $DAEMON_PIDS
522
522
523 Doing the actual push: Abort error
523 Doing the actual push: Abort error
524
524
525 $ cat << EOF >> $HGRCPATH
525 $ cat << EOF >> $HGRCPATH
526 > [failpush]
526 > [failpush]
527 > reason = abort
527 > reason = abort
528 > EOF
528 > EOF
529
529
530 $ hg -R main push other -r e7ec4e813ba6
530 $ hg -R main push other -r e7ec4e813ba6
531 pushing to other
531 pushing to other
532 searching for changes
532 searching for changes
533 abort: Abandon ship!
533 abort: Abandon ship!
534 (don't panic)
534 (don't panic)
535 [255]
535 [255]
536
536
537 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
537 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
538 pushing to ssh://user@dummy/other
538 pushing to ssh://user@dummy/other
539 searching for changes
539 searching for changes
540 remote: Abandon ship!
540 remote: Abandon ship!
541 remote: (don't panic)
541 remote: (don't panic)
542 abort: push failed on remote
542 abort: push failed on remote
543 [255]
543 [255]
544
544
545 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
545 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
546 pushing to http://localhost:$HGPORT2/
546 pushing to http://localhost:$HGPORT2/
547 searching for changes
547 searching for changes
548 remote: Abandon ship!
548 remote: Abandon ship!
549 remote: (don't panic)
549 remote: (don't panic)
550 abort: push failed on remote
550 abort: push failed on remote
551 [255]
551 [255]
552
552
553
553
554 Doing the actual push: unknown mandatory parts
554 Doing the actual push: unknown mandatory parts
555
555
556 $ cat << EOF >> $HGRCPATH
556 $ cat << EOF >> $HGRCPATH
557 > [failpush]
557 > [failpush]
558 > reason = unknown
558 > reason = unknown
559 > EOF
559 > EOF
560
560
561 $ hg -R main push other -r e7ec4e813ba6
561 $ hg -R main push other -r e7ec4e813ba6
562 pushing to other
562 pushing to other
563 searching for changes
563 searching for changes
564 abort: missing support for test:unknown
564 abort: missing support for test:unknown
565 [255]
565 [255]
566
566
567 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
567 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
568 pushing to ssh://user@dummy/other
568 pushing to ssh://user@dummy/other
569 searching for changes
569 searching for changes
570 abort: missing support for test:unknown
570 abort: missing support for test:unknown
571 [255]
571 [255]
572
572
573 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
573 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
574 pushing to http://localhost:$HGPORT2/
574 pushing to http://localhost:$HGPORT2/
575 searching for changes
575 searching for changes
576 abort: missing support for test:unknown
576 abort: missing support for test:unknown
577 [255]
577 [255]
578
578
579 Doing the actual push: race
579 Doing the actual push: race
580
580
581 $ cat << EOF >> $HGRCPATH
581 $ cat << EOF >> $HGRCPATH
582 > [failpush]
582 > [failpush]
583 > reason = race
583 > reason = race
584 > EOF
584 > EOF
585
585
586 $ hg -R main push other -r e7ec4e813ba6
586 $ hg -R main push other -r e7ec4e813ba6
587 pushing to other
587 pushing to other
588 searching for changes
588 searching for changes
589 abort: push failed:
589 abort: push failed:
590 'repository changed while pushing - please try again'
590 'repository changed while pushing - please try again'
591 [255]
591 [255]
592
592
593 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
593 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
594 pushing to ssh://user@dummy/other
594 pushing to ssh://user@dummy/other
595 searching for changes
595 searching for changes
596 abort: push failed:
596 abort: push failed:
597 'repository changed while pushing - please try again'
597 'repository changed while pushing - please try again'
598 [255]
598 [255]
599
599
600 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
600 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
601 pushing to http://localhost:$HGPORT2/
601 pushing to http://localhost:$HGPORT2/
602 searching for changes
602 searching for changes
603 abort: push failed:
603 abort: push failed:
604 'repository changed while pushing - please try again'
604 'repository changed while pushing - please try again'
605 [255]
605 [255]
606
606
607 Doing the actual push: hook abort
607 Doing the actual push: hook abort
608
608
609 $ cat << EOF >> $HGRCPATH
609 $ cat << EOF >> $HGRCPATH
610 > [failpush]
610 > [failpush]
611 > reason =
611 > reason =
612 > [hooks]
612 > [hooks]
613 > pretxnclose.failpush = sh -c "echo 'You shall not pass!'; false"
613 > pretxnclose.failpush = sh -c "echo 'You shall not pass!'; false"
614 > txnabort.failpush = sh -c "echo 'Cleaning up the mess...'"
614 > txnabort.failpush = sh -c "echo 'Cleaning up the mess...'"
615 > EOF
615 > EOF
616
616
617 $ killdaemons.py
617 $ killdaemons.py
618 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
618 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
619 $ cat other.pid >> $DAEMON_PIDS
619 $ cat other.pid >> $DAEMON_PIDS
620
620
621 $ hg -R main push other -r e7ec4e813ba6
621 $ hg -R main push other -r e7ec4e813ba6
622 pushing to other
622 pushing to other
623 searching for changes
623 searching for changes
624 remote: adding changesets
624 remote: adding changesets
625 remote: adding manifests
625 remote: adding manifests
626 remote: adding file changes
626 remote: adding file changes
627 remote: added 1 changesets with 1 changes to 1 files
627 remote: added 1 changesets with 1 changes to 1 files
628 remote: pre-close-tip:e7ec4e813ba6 draft
628 remote: pre-close-tip:e7ec4e813ba6 draft
629 remote: You shall not pass!
629 remote: You shall not pass!
630 remote: transaction abort!
630 remote: transaction abort!
631 remote: Cleaning up the mess...
631 remote: Cleaning up the mess...
632 remote: rollback completed
632 remote: rollback completed
633 abort: pretxnclose.failpush hook exited with status 1
633 abort: pretxnclose.failpush hook exited with status 1
634 [255]
634 [255]
635
635
636 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
636 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
637 pushing to ssh://user@dummy/other
637 pushing to ssh://user@dummy/other
638 searching for changes
638 searching for changes
639 remote: adding changesets
639 remote: adding changesets
640 remote: adding manifests
640 remote: adding manifests
641 remote: adding file changes
641 remote: adding file changes
642 remote: added 1 changesets with 1 changes to 1 files
642 remote: added 1 changesets with 1 changes to 1 files
643 remote: pre-close-tip:e7ec4e813ba6 draft
643 remote: pre-close-tip:e7ec4e813ba6 draft
644 remote: You shall not pass!
644 remote: You shall not pass!
645 remote: transaction abort!
645 remote: transaction abort!
646 remote: Cleaning up the mess...
646 remote: Cleaning up the mess...
647 remote: rollback completed
647 remote: rollback completed
648 remote: pretxnclose.failpush hook exited with status 1
648 remote: pretxnclose.failpush hook exited with status 1
649 abort: push failed on remote
649 abort: push failed on remote
650 [255]
650 [255]
651
651
652 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
652 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
653 pushing to http://localhost:$HGPORT2/
653 pushing to http://localhost:$HGPORT2/
654 searching for changes
654 searching for changes
655 remote: adding changesets
655 remote: adding changesets
656 remote: adding manifests
656 remote: adding manifests
657 remote: adding file changes
657 remote: adding file changes
658 remote: added 1 changesets with 1 changes to 1 files
658 remote: added 1 changesets with 1 changes to 1 files
659 remote: pre-close-tip:e7ec4e813ba6 draft
659 remote: pre-close-tip:e7ec4e813ba6 draft
660 remote: You shall not pass!
660 remote: You shall not pass!
661 remote: transaction abort!
661 remote: transaction abort!
662 remote: Cleaning up the mess...
662 remote: Cleaning up the mess...
663 remote: rollback completed
663 remote: rollback completed
664 remote: pretxnclose.failpush hook exited with status 1
664 remote: pretxnclose.failpush hook exited with status 1
665 abort: push failed on remote
665 abort: push failed on remote
666 [255]
666 [255]
667
667
668 (check that no 'pending' files remain)
668 (check that no 'pending' files remain)
669
669
670 $ ls -1 other/.hg/bookmarks*
670 $ ls -1 other/.hg/bookmarks*
671 other/.hg/bookmarks
671 other/.hg/bookmarks
672 $ ls -1 other/.hg/store/phaseroots*
672 $ ls -1 other/.hg/store/phaseroots*
673 other/.hg/store/phaseroots
673 other/.hg/store/phaseroots
674 $ ls -1 other/.hg/store/00changelog.i*
674 $ ls -1 other/.hg/store/00changelog.i*
675 other/.hg/store/00changelog.i
675 other/.hg/store/00changelog.i
676
676
677 Check error from hook during the unbundling process itself
677 Check error from hook during the unbundling process itself
678
678
679 $ cat << EOF >> $HGRCPATH
679 $ cat << EOF >> $HGRCPATH
680 > pretxnchangegroup = sh -c "echo 'Fail early!'; false"
680 > pretxnchangegroup = sh -c "echo 'Fail early!'; false"
681 > EOF
681 > EOF
682 $ killdaemons.py # reload http config
682 $ killdaemons.py # reload http config
683 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
683 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
684 $ cat other.pid >> $DAEMON_PIDS
684 $ cat other.pid >> $DAEMON_PIDS
685
685
686 $ hg -R main push other -r e7ec4e813ba6
686 $ hg -R main push other -r e7ec4e813ba6
687 pushing to other
687 pushing to other
688 searching for changes
688 searching for changes
689 remote: adding changesets
689 remote: adding changesets
690 remote: adding manifests
690 remote: adding manifests
691 remote: adding file changes
691 remote: adding file changes
692 remote: added 1 changesets with 1 changes to 1 files
692 remote: added 1 changesets with 1 changes to 1 files
693 remote: Fail early!
693 remote: Fail early!
694 remote: transaction abort!
694 remote: transaction abort!
695 remote: Cleaning up the mess...
695 remote: Cleaning up the mess...
696 remote: rollback completed
696 remote: rollback completed
697 abort: pretxnchangegroup hook exited with status 1
697 abort: pretxnchangegroup hook exited with status 1
698 [255]
698 [255]
699 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
699 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
700 pushing to ssh://user@dummy/other
700 pushing to ssh://user@dummy/other
701 searching for changes
701 searching for changes
702 remote: adding changesets
702 remote: adding changesets
703 remote: adding manifests
703 remote: adding manifests
704 remote: adding file changes
704 remote: adding file changes
705 remote: added 1 changesets with 1 changes to 1 files
705 remote: added 1 changesets with 1 changes to 1 files
706 remote: Fail early!
706 remote: Fail early!
707 remote: transaction abort!
707 remote: transaction abort!
708 remote: Cleaning up the mess...
708 remote: Cleaning up the mess...
709 remote: rollback completed
709 remote: rollback completed
710 remote: pretxnchangegroup hook exited with status 1
710 remote: pretxnchangegroup hook exited with status 1
711 abort: push failed on remote
711 abort: push failed on remote
712 [255]
712 [255]
713 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
713 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
714 pushing to http://localhost:$HGPORT2/
714 pushing to http://localhost:$HGPORT2/
715 searching for changes
715 searching for changes
716 remote: adding changesets
716 remote: adding changesets
717 remote: adding manifests
717 remote: adding manifests
718 remote: adding file changes
718 remote: adding file changes
719 remote: added 1 changesets with 1 changes to 1 files
719 remote: added 1 changesets with 1 changes to 1 files
720 remote: Fail early!
720 remote: Fail early!
721 remote: transaction abort!
721 remote: transaction abort!
722 remote: Cleaning up the mess...
722 remote: Cleaning up the mess...
723 remote: rollback completed
723 remote: rollback completed
724 remote: pretxnchangegroup hook exited with status 1
724 remote: pretxnchangegroup hook exited with status 1
725 abort: push failed on remote
725 abort: push failed on remote
726 [255]
726 [255]
727
727
728 Check output capture control.
728 Check output capture control.
729
729
730 (should be still forced for http, disabled for local and ssh)
730 (should be still forced for http, disabled for local and ssh)
731
731
732 $ cat >> $HGRCPATH << EOF
732 $ cat >> $HGRCPATH << EOF
733 > [experimental]
733 > [experimental]
734 > bundle2-output-capture=False
734 > bundle2-output-capture=False
735 > EOF
735 > EOF
736
736
737 $ hg -R main push other -r e7ec4e813ba6
737 $ hg -R main push other -r e7ec4e813ba6
738 pushing to other
738 pushing to other
739 searching for changes
739 searching for changes
740 adding changesets
740 adding changesets
741 adding manifests
741 adding manifests
742 adding file changes
742 adding file changes
743 added 1 changesets with 1 changes to 1 files
743 added 1 changesets with 1 changes to 1 files
744 Fail early!
744 Fail early!
745 transaction abort!
745 transaction abort!
746 Cleaning up the mess...
746 Cleaning up the mess...
747 rollback completed
747 rollback completed
748 abort: pretxnchangegroup hook exited with status 1
748 abort: pretxnchangegroup hook exited with status 1
749 [255]
749 [255]
750 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
750 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
751 pushing to ssh://user@dummy/other
751 pushing to ssh://user@dummy/other
752 searching for changes
752 searching for changes
753 remote: adding changesets
753 remote: adding changesets
754 remote: adding manifests
754 remote: adding manifests
755 remote: adding file changes
755 remote: adding file changes
756 remote: added 1 changesets with 1 changes to 1 files
756 remote: added 1 changesets with 1 changes to 1 files
757 remote: Fail early!
757 remote: Fail early!
758 remote: transaction abort!
758 remote: transaction abort!
759 remote: Cleaning up the mess...
759 remote: Cleaning up the mess...
760 remote: rollback completed
760 remote: rollback completed
761 remote: pretxnchangegroup hook exited with status 1
761 remote: pretxnchangegroup hook exited with status 1
762 abort: push failed on remote
762 abort: push failed on remote
763 [255]
763 [255]
764 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
764 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
765 pushing to http://localhost:$HGPORT2/
765 pushing to http://localhost:$HGPORT2/
766 searching for changes
766 searching for changes
767 remote: adding changesets
767 remote: adding changesets
768 remote: adding manifests
768 remote: adding manifests
769 remote: adding file changes
769 remote: adding file changes
770 remote: added 1 changesets with 1 changes to 1 files
770 remote: added 1 changesets with 1 changes to 1 files
771 remote: Fail early!
771 remote: Fail early!
772 remote: transaction abort!
772 remote: transaction abort!
773 remote: Cleaning up the mess...
773 remote: Cleaning up the mess...
774 remote: rollback completed
774 remote: rollback completed
775 remote: pretxnchangegroup hook exited with status 1
775 remote: pretxnchangegroup hook exited with status 1
776 abort: push failed on remote
776 abort: push failed on remote
777 [255]
777 [255]
778
778
779 Check abort from mandatory pushkey
779 Check abort from mandatory pushkey
780
780
781 $ cat > mandatorypart.py << EOF
781 $ cat > mandatorypart.py << EOF
782 > from mercurial import exchange
782 > from mercurial import exchange
783 > from mercurial import pushkey
783 > from mercurial import pushkey
784 > from mercurial import node
784 > from mercurial import node
785 > from mercurial import error
785 > from mercurial import error
786 > @exchange.b2partsgenerator(b'failingpuskey')
786 > @exchange.b2partsgenerator(b'failingpuskey')
787 > def addfailingpushey(pushop, bundler):
787 > def addfailingpushey(pushop, bundler):
788 > enc = pushkey.encode
788 > enc = pushkey.encode
789 > part = bundler.newpart(b'pushkey')
789 > part = bundler.newpart(b'pushkey')
790 > part.addparam(b'namespace', enc(b'phases'))
790 > part.addparam(b'namespace', enc(b'phases'))
791 > part.addparam(b'key', enc(b'cd010b8cd998f3981a5a8115f94f8da4ab506089'))
791 > part.addparam(b'key', enc(b'cd010b8cd998f3981a5a8115f94f8da4ab506089'))
792 > part.addparam(b'old', enc(b'0')) # successful update
792 > part.addparam(b'old', enc(b'0')) # successful update
793 > part.addparam(b'new', enc(b'0'))
793 > part.addparam(b'new', enc(b'0'))
794 > def fail(pushop, exc):
794 > def fail(pushop, exc):
795 > raise error.Abort(b'Correct phase push failed (because hooks)')
795 > raise error.Abort(b'Correct phase push failed (because hooks)')
796 > pushop.pkfailcb[part.id] = fail
796 > pushop.pkfailcb[part.id] = fail
797 > EOF
797 > EOF
798 $ cat >> $HGRCPATH << EOF
798 $ cat >> $HGRCPATH << EOF
799 > [hooks]
799 > [hooks]
800 > pretxnchangegroup=
800 > pretxnchangegroup=
801 > pretxnclose.failpush=
801 > pretxnclose.failpush=
802 > prepushkey.failpush = sh -c "echo 'do not push the key !'; false"
802 > prepushkey.failpush = sh -c "echo 'do not push the key !'; false"
803 > [extensions]
803 > [extensions]
804 > mandatorypart=$TESTTMP/mandatorypart.py
804 > mandatorypart=$TESTTMP/mandatorypart.py
805 > EOF
805 > EOF
806 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
806 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
807 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
807 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
808 $ cat other.pid >> $DAEMON_PIDS
808 $ cat other.pid >> $DAEMON_PIDS
809
809
810 (Failure from a hook)
810 (Failure from a hook)
811
811
812 $ hg -R main push other -r e7ec4e813ba6
812 $ hg -R main push other -r e7ec4e813ba6
813 pushing to other
813 pushing to other
814 searching for changes
814 searching for changes
815 adding changesets
815 adding changesets
816 adding manifests
816 adding manifests
817 adding file changes
817 adding file changes
818 added 1 changesets with 1 changes to 1 files
818 added 1 changesets with 1 changes to 1 files
819 do not push the key !
819 do not push the key !
820 pushkey-abort: prepushkey.failpush hook exited with status 1
820 pushkey-abort: prepushkey.failpush hook exited with status 1
821 transaction abort!
821 transaction abort!
822 Cleaning up the mess...
822 Cleaning up the mess...
823 rollback completed
823 rollback completed
824 abort: Correct phase push failed (because hooks)
824 abort: Correct phase push failed (because hooks)
825 [255]
825 [255]
826 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
826 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
827 pushing to ssh://user@dummy/other
827 pushing to ssh://user@dummy/other
828 searching for changes
828 searching for changes
829 remote: adding changesets
829 remote: adding changesets
830 remote: adding manifests
830 remote: adding manifests
831 remote: adding file changes
831 remote: adding file changes
832 remote: added 1 changesets with 1 changes to 1 files
832 remote: added 1 changesets with 1 changes to 1 files
833 remote: do not push the key !
833 remote: do not push the key !
834 remote: pushkey-abort: prepushkey.failpush hook exited with status 1
834 remote: pushkey-abort: prepushkey.failpush hook exited with status 1
835 remote: transaction abort!
835 remote: transaction abort!
836 remote: Cleaning up the mess...
836 remote: Cleaning up the mess...
837 remote: rollback completed
837 remote: rollback completed
838 abort: Correct phase push failed (because hooks)
838 abort: Correct phase push failed (because hooks)
839 [255]
839 [255]
840 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
840 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
841 pushing to http://localhost:$HGPORT2/
841 pushing to http://localhost:$HGPORT2/
842 searching for changes
842 searching for changes
843 remote: adding changesets
843 remote: adding changesets
844 remote: adding manifests
844 remote: adding manifests
845 remote: adding file changes
845 remote: adding file changes
846 remote: added 1 changesets with 1 changes to 1 files
846 remote: added 1 changesets with 1 changes to 1 files
847 remote: do not push the key !
847 remote: do not push the key !
848 remote: pushkey-abort: prepushkey.failpush hook exited with status 1
848 remote: pushkey-abort: prepushkey.failpush hook exited with status 1
849 remote: transaction abort!
849 remote: transaction abort!
850 remote: Cleaning up the mess...
850 remote: Cleaning up the mess...
851 remote: rollback completed
851 remote: rollback completed
852 abort: Correct phase push failed (because hooks)
852 abort: Correct phase push failed (because hooks)
853 [255]
853 [255]
854
854
855 (Failure from a the pushkey)
855 (Failure from a the pushkey)
856
856
857 $ cat > mandatorypart.py << EOF
857 $ cat > mandatorypart.py << EOF
858 > from mercurial import exchange
858 > from mercurial import exchange
859 > from mercurial import pushkey
859 > from mercurial import pushkey
860 > from mercurial import node
860 > from mercurial import node
861 > from mercurial import error
861 > from mercurial import error
862 > @exchange.b2partsgenerator(b'failingpuskey')
862 > @exchange.b2partsgenerator(b'failingpuskey')
863 > def addfailingpushey(pushop, bundler):
863 > def addfailingpushey(pushop, bundler):
864 > enc = pushkey.encode
864 > enc = pushkey.encode
865 > part = bundler.newpart(b'pushkey')
865 > part = bundler.newpart(b'pushkey')
866 > part.addparam(b'namespace', enc(b'phases'))
866 > part.addparam(b'namespace', enc(b'phases'))
867 > part.addparam(b'key', enc(b'cd010b8cd998f3981a5a8115f94f8da4ab506089'))
867 > part.addparam(b'key', enc(b'cd010b8cd998f3981a5a8115f94f8da4ab506089'))
868 > part.addparam(b'old', enc(b'4')) # will fail
868 > part.addparam(b'old', enc(b'4')) # will fail
869 > part.addparam(b'new', enc(b'3'))
869 > part.addparam(b'new', enc(b'3'))
870 > def fail(pushop, exc):
870 > def fail(pushop, exc):
871 > raise error.Abort(b'Clown phase push failed')
871 > raise error.Abort(b'Clown phase push failed')
872 > pushop.pkfailcb[part.id] = fail
872 > pushop.pkfailcb[part.id] = fail
873 > EOF
873 > EOF
874 $ cat >> $HGRCPATH << EOF
874 $ cat >> $HGRCPATH << EOF
875 > [hooks]
875 > [hooks]
876 > prepushkey.failpush =
876 > prepushkey.failpush =
877 > EOF
877 > EOF
878 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
878 $ "$TESTDIR/killdaemons.py" $DAEMON_PIDS # reload http config
879 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
879 $ hg serve -R other -p $HGPORT2 -d --pid-file=other.pid -E other-error.log
880 $ cat other.pid >> $DAEMON_PIDS
880 $ cat other.pid >> $DAEMON_PIDS
881
881
882 $ hg -R main push other -r e7ec4e813ba6
882 $ hg -R main push other -r e7ec4e813ba6
883 pushing to other
883 pushing to other
884 searching for changes
884 searching for changes
885 adding changesets
885 adding changesets
886 adding manifests
886 adding manifests
887 adding file changes
887 adding file changes
888 added 1 changesets with 1 changes to 1 files
888 added 1 changesets with 1 changes to 1 files
889 transaction abort!
889 transaction abort!
890 Cleaning up the mess...
890 Cleaning up the mess...
891 rollback completed
891 rollback completed
892 pushkey: lock state after "phases"
892 pushkey: lock state after "phases"
893 lock: free
893 lock: free
894 wlock: free
894 wlock: free
895 abort: Clown phase push failed
895 abort: Clown phase push failed
896 [255]
896 [255]
897 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
897 $ hg -R main push ssh://user@dummy/other -r e7ec4e813ba6
898 pushing to ssh://user@dummy/other
898 pushing to ssh://user@dummy/other
899 searching for changes
899 searching for changes
900 remote: adding changesets
900 remote: adding changesets
901 remote: adding manifests
901 remote: adding manifests
902 remote: adding file changes
902 remote: adding file changes
903 remote: added 1 changesets with 1 changes to 1 files
903 remote: added 1 changesets with 1 changes to 1 files
904 remote: transaction abort!
904 remote: transaction abort!
905 remote: Cleaning up the mess...
905 remote: Cleaning up the mess...
906 remote: rollback completed
906 remote: rollback completed
907 remote: pushkey: lock state after "phases"
907 remote: pushkey: lock state after "phases"
908 remote: lock: free
908 remote: lock: free
909 remote: wlock: free
909 remote: wlock: free
910 abort: Clown phase push failed
910 abort: Clown phase push failed
911 [255]
911 [255]
912 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
912 $ hg -R main push http://localhost:$HGPORT2/ -r e7ec4e813ba6
913 pushing to http://localhost:$HGPORT2/
913 pushing to http://localhost:$HGPORT2/
914 searching for changes
914 searching for changes
915 remote: adding changesets
915 remote: adding changesets
916 remote: adding manifests
916 remote: adding manifests
917 remote: adding file changes
917 remote: adding file changes
918 remote: added 1 changesets with 1 changes to 1 files
918 remote: added 1 changesets with 1 changes to 1 files
919 remote: transaction abort!
919 remote: transaction abort!
920 remote: Cleaning up the mess...
920 remote: Cleaning up the mess...
921 remote: rollback completed
921 remote: rollback completed
922 remote: pushkey: lock state after "phases"
922 remote: pushkey: lock state after "phases"
923 remote: lock: free
923 remote: lock: free
924 remote: wlock: free
924 remote: wlock: free
925 abort: Clown phase push failed
925 abort: Clown phase push failed
926 [255]
926 [255]
927
927
928 Test lazily acquiring the lock during unbundle
928 Test lazily acquiring the lock during unbundle
929 $ cp $TESTTMP/hgrc.orig $HGRCPATH
929 $ cp $TESTTMP/hgrc.orig $HGRCPATH
930 $ cat >> $HGRCPATH <<EOF
930 $ cat >> $HGRCPATH <<EOF
931 > [ui]
931 > [ui]
932 > ssh="$PYTHON" "$TESTDIR/dummyssh"
932 > ssh="$PYTHON" "$TESTDIR/dummyssh"
933 > EOF
933 > EOF
934
934
935 $ cat >> $TESTTMP/locktester.py <<EOF
935 $ cat >> $TESTTMP/locktester.py <<EOF
936 > import os
936 > import os
937 > from mercurial import extensions, bundle2, error
937 > from mercurial import extensions, bundle2, error
938 > def checklock(orig, repo, *args, **kwargs):
938 > def checklock(orig, repo, *args, **kwargs):
939 > if repo.svfs.lexists("lock"):
939 > if repo.svfs.lexists(b"lock"):
940 > raise error.Abort("Lock should not be taken")
940 > raise error.Abort(b"Lock should not be taken")
941 > return orig(repo, *args, **kwargs)
941 > return orig(repo, *args, **kwargs)
942 > def extsetup(ui):
942 > def extsetup(ui):
943 > extensions.wrapfunction(bundle2, 'processbundle', checklock)
943 > extensions.wrapfunction(bundle2, b'processbundle', checklock)
944 > EOF
944 > EOF
945
945
946 $ hg init lazylock
946 $ hg init lazylock
947 $ cat >> lazylock/.hg/hgrc <<EOF
947 $ cat >> lazylock/.hg/hgrc <<EOF
948 > [extensions]
948 > [extensions]
949 > locktester=$TESTTMP/locktester.py
949 > locktester=$TESTTMP/locktester.py
950 > EOF
950 > EOF
951
951
952 $ hg clone -q ssh://user@dummy/lazylock lazylockclient
952 $ hg clone -q ssh://user@dummy/lazylock lazylockclient
953 $ cd lazylockclient
953 $ cd lazylockclient
954 $ touch a && hg ci -Aqm a
954 $ touch a && hg ci -Aqm a
955 $ hg push
955 $ hg push
956 pushing to ssh://user@dummy/lazylock
956 pushing to ssh://user@dummy/lazylock
957 searching for changes
957 searching for changes
958 remote: Lock should not be taken
958 remote: Lock should not be taken
959 abort: push failed on remote
959 abort: push failed on remote
960 [255]
960 [255]
961
961
962 $ cat >> ../lazylock/.hg/hgrc <<EOF
962 $ cat >> ../lazylock/.hg/hgrc <<EOF
963 > [experimental]
963 > [experimental]
964 > bundle2lazylocking=True
964 > bundle2lazylocking=True
965 > EOF
965 > EOF
966 $ hg push
966 $ hg push
967 pushing to ssh://user@dummy/lazylock
967 pushing to ssh://user@dummy/lazylock
968 searching for changes
968 searching for changes
969 remote: adding changesets
969 remote: adding changesets
970 remote: adding manifests
970 remote: adding manifests
971 remote: adding file changes
971 remote: adding file changes
972 remote: added 1 changesets with 1 changes to 1 files
972 remote: added 1 changesets with 1 changes to 1 files
973
973
974 $ cd ..
974 $ cd ..
975
975
976 Servers can disable bundle1 for clone/pull operations
976 Servers can disable bundle1 for clone/pull operations
977
977
978 $ killdaemons.py
978 $ killdaemons.py
979 $ hg init bundle2onlyserver
979 $ hg init bundle2onlyserver
980 $ cd bundle2onlyserver
980 $ cd bundle2onlyserver
981 $ cat > .hg/hgrc << EOF
981 $ cat > .hg/hgrc << EOF
982 > [server]
982 > [server]
983 > bundle1.pull = false
983 > bundle1.pull = false
984 > EOF
984 > EOF
985
985
986 $ touch foo
986 $ touch foo
987 $ hg -q commit -A -m initial
987 $ hg -q commit -A -m initial
988
988
989 $ hg serve -p $HGPORT -d --pid-file=hg.pid
989 $ hg serve -p $HGPORT -d --pid-file=hg.pid
990 $ cat hg.pid >> $DAEMON_PIDS
990 $ cat hg.pid >> $DAEMON_PIDS
991
991
992 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
992 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
993 requesting all changes
993 requesting all changes
994 abort: remote error:
994 abort: remote error:
995 incompatible Mercurial client; bundle2 required
995 incompatible Mercurial client; bundle2 required
996 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
996 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
997 [255]
997 [255]
998 $ killdaemons.py
998 $ killdaemons.py
999 $ cd ..
999 $ cd ..
1000
1000
1001 bundle1 can still pull non-generaldelta repos when generaldelta bundle1 disabled
1001 bundle1 can still pull non-generaldelta repos when generaldelta bundle1 disabled
1002
1002
1003 $ hg --config format.usegeneraldelta=false init notgdserver
1003 $ hg --config format.usegeneraldelta=false init notgdserver
1004 $ cd notgdserver
1004 $ cd notgdserver
1005 $ cat > .hg/hgrc << EOF
1005 $ cat > .hg/hgrc << EOF
1006 > [server]
1006 > [server]
1007 > bundle1gd.pull = false
1007 > bundle1gd.pull = false
1008 > EOF
1008 > EOF
1009
1009
1010 $ touch foo
1010 $ touch foo
1011 $ hg -q commit -A -m initial
1011 $ hg -q commit -A -m initial
1012 $ hg serve -p $HGPORT -d --pid-file=hg.pid
1012 $ hg serve -p $HGPORT -d --pid-file=hg.pid
1013 $ cat hg.pid >> $DAEMON_PIDS
1013 $ cat hg.pid >> $DAEMON_PIDS
1014
1014
1015 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2-1
1015 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2-1
1016 requesting all changes
1016 requesting all changes
1017 adding changesets
1017 adding changesets
1018 adding manifests
1018 adding manifests
1019 adding file changes
1019 adding file changes
1020 added 1 changesets with 1 changes to 1 files
1020 added 1 changesets with 1 changes to 1 files
1021 new changesets 96ee1d7354c4
1021 new changesets 96ee1d7354c4
1022 updating to branch default
1022 updating to branch default
1023 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1023 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1024
1024
1025 $ killdaemons.py
1025 $ killdaemons.py
1026 $ cd ../bundle2onlyserver
1026 $ cd ../bundle2onlyserver
1027
1027
1028 bundle1 pull can be disabled for generaldelta repos only
1028 bundle1 pull can be disabled for generaldelta repos only
1029
1029
1030 $ cat > .hg/hgrc << EOF
1030 $ cat > .hg/hgrc << EOF
1031 > [server]
1031 > [server]
1032 > bundle1gd.pull = false
1032 > bundle1gd.pull = false
1033 > EOF
1033 > EOF
1034
1034
1035 $ hg serve -p $HGPORT -d --pid-file=hg.pid
1035 $ hg serve -p $HGPORT -d --pid-file=hg.pid
1036 $ cat hg.pid >> $DAEMON_PIDS
1036 $ cat hg.pid >> $DAEMON_PIDS
1037 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
1037 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
1038 requesting all changes
1038 requesting all changes
1039 abort: remote error:
1039 abort: remote error:
1040 incompatible Mercurial client; bundle2 required
1040 incompatible Mercurial client; bundle2 required
1041 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1041 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1042 [255]
1042 [255]
1043
1043
1044 $ killdaemons.py
1044 $ killdaemons.py
1045
1045
1046 Verify the global server.bundle1 option works
1046 Verify the global server.bundle1 option works
1047
1047
1048 $ cd ..
1048 $ cd ..
1049 $ cat > bundle2onlyserver/.hg/hgrc << EOF
1049 $ cat > bundle2onlyserver/.hg/hgrc << EOF
1050 > [server]
1050 > [server]
1051 > bundle1 = false
1051 > bundle1 = false
1052 > EOF
1052 > EOF
1053 $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
1053 $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
1054 $ cat hg.pid >> $DAEMON_PIDS
1054 $ cat hg.pid >> $DAEMON_PIDS
1055 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT not-bundle2
1055 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT not-bundle2
1056 requesting all changes
1056 requesting all changes
1057 abort: remote error:
1057 abort: remote error:
1058 incompatible Mercurial client; bundle2 required
1058 incompatible Mercurial client; bundle2 required
1059 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1059 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1060 [255]
1060 [255]
1061 $ killdaemons.py
1061 $ killdaemons.py
1062
1062
1063 $ hg --config devel.legacy.exchange=bundle1 clone ssh://user@dummy/bundle2onlyserver not-bundle2-ssh
1063 $ hg --config devel.legacy.exchange=bundle1 clone ssh://user@dummy/bundle2onlyserver not-bundle2-ssh
1064 requesting all changes
1064 requesting all changes
1065 adding changesets
1065 adding changesets
1066 remote: abort: incompatible Mercurial client; bundle2 required
1066 remote: abort: incompatible Mercurial client; bundle2 required
1067 remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1067 remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1068 transaction abort!
1068 transaction abort!
1069 rollback completed
1069 rollback completed
1070 abort: stream ended unexpectedly (got 0 bytes, expected 4)
1070 abort: stream ended unexpectedly (got 0 bytes, expected 4)
1071 [255]
1071 [255]
1072
1072
1073 $ cat > bundle2onlyserver/.hg/hgrc << EOF
1073 $ cat > bundle2onlyserver/.hg/hgrc << EOF
1074 > [server]
1074 > [server]
1075 > bundle1gd = false
1075 > bundle1gd = false
1076 > EOF
1076 > EOF
1077 $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
1077 $ hg serve -R bundle2onlyserver -p $HGPORT -d --pid-file=hg.pid
1078 $ cat hg.pid >> $DAEMON_PIDS
1078 $ cat hg.pid >> $DAEMON_PIDS
1079
1079
1080 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
1080 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2
1081 requesting all changes
1081 requesting all changes
1082 abort: remote error:
1082 abort: remote error:
1083 incompatible Mercurial client; bundle2 required
1083 incompatible Mercurial client; bundle2 required
1084 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1084 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1085 [255]
1085 [255]
1086
1086
1087 $ killdaemons.py
1087 $ killdaemons.py
1088
1088
1089 $ cd notgdserver
1089 $ cd notgdserver
1090 $ cat > .hg/hgrc << EOF
1090 $ cat > .hg/hgrc << EOF
1091 > [server]
1091 > [server]
1092 > bundle1gd = false
1092 > bundle1gd = false
1093 > EOF
1093 > EOF
1094 $ hg serve -p $HGPORT -d --pid-file=hg.pid
1094 $ hg serve -p $HGPORT -d --pid-file=hg.pid
1095 $ cat hg.pid >> $DAEMON_PIDS
1095 $ cat hg.pid >> $DAEMON_PIDS
1096
1096
1097 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2-2
1097 $ hg --config devel.legacy.exchange=bundle1 clone http://localhost:$HGPORT/ not-bundle2-2
1098 requesting all changes
1098 requesting all changes
1099 adding changesets
1099 adding changesets
1100 adding manifests
1100 adding manifests
1101 adding file changes
1101 adding file changes
1102 added 1 changesets with 1 changes to 1 files
1102 added 1 changesets with 1 changes to 1 files
1103 new changesets 96ee1d7354c4
1103 new changesets 96ee1d7354c4
1104 updating to branch default
1104 updating to branch default
1105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1105 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1106
1106
1107 $ killdaemons.py
1107 $ killdaemons.py
1108 $ cd ../bundle2onlyserver
1108 $ cd ../bundle2onlyserver
1109
1109
1110 Verify bundle1 pushes can be disabled
1110 Verify bundle1 pushes can be disabled
1111
1111
1112 $ cat > .hg/hgrc << EOF
1112 $ cat > .hg/hgrc << EOF
1113 > [server]
1113 > [server]
1114 > bundle1.push = false
1114 > bundle1.push = false
1115 > [web]
1115 > [web]
1116 > allow_push = *
1116 > allow_push = *
1117 > push_ssl = false
1117 > push_ssl = false
1118 > EOF
1118 > EOF
1119
1119
1120 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E error.log
1120 $ hg serve -p $HGPORT -d --pid-file=hg.pid -E error.log
1121 $ cat hg.pid >> $DAEMON_PIDS
1121 $ cat hg.pid >> $DAEMON_PIDS
1122 $ cd ..
1122 $ cd ..
1123
1123
1124 $ hg clone http://localhost:$HGPORT bundle2-only
1124 $ hg clone http://localhost:$HGPORT bundle2-only
1125 requesting all changes
1125 requesting all changes
1126 adding changesets
1126 adding changesets
1127 adding manifests
1127 adding manifests
1128 adding file changes
1128 adding file changes
1129 added 1 changesets with 1 changes to 1 files
1129 added 1 changesets with 1 changes to 1 files
1130 new changesets 96ee1d7354c4
1130 new changesets 96ee1d7354c4
1131 updating to branch default
1131 updating to branch default
1132 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1132 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
1133 $ cd bundle2-only
1133 $ cd bundle2-only
1134 $ echo commit > foo
1134 $ echo commit > foo
1135 $ hg commit -m commit
1135 $ hg commit -m commit
1136 $ hg --config devel.legacy.exchange=bundle1 push
1136 $ hg --config devel.legacy.exchange=bundle1 push
1137 pushing to http://localhost:$HGPORT/
1137 pushing to http://localhost:$HGPORT/
1138 searching for changes
1138 searching for changes
1139 abort: remote error:
1139 abort: remote error:
1140 incompatible Mercurial client; bundle2 required
1140 incompatible Mercurial client; bundle2 required
1141 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1141 (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1142 [255]
1142 [255]
1143
1143
1144 (also check with ssh)
1144 (also check with ssh)
1145
1145
1146 $ hg --config devel.legacy.exchange=bundle1 push ssh://user@dummy/bundle2onlyserver
1146 $ hg --config devel.legacy.exchange=bundle1 push ssh://user@dummy/bundle2onlyserver
1147 pushing to ssh://user@dummy/bundle2onlyserver
1147 pushing to ssh://user@dummy/bundle2onlyserver
1148 searching for changes
1148 searching for changes
1149 remote: abort: incompatible Mercurial client; bundle2 required
1149 remote: abort: incompatible Mercurial client; bundle2 required
1150 remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1150 remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient)
1151 [1]
1151 [1]
1152
1152
1153 $ hg push
1153 $ hg push
1154 pushing to http://localhost:$HGPORT/
1154 pushing to http://localhost:$HGPORT/
1155 searching for changes
1155 searching for changes
1156 remote: adding changesets
1156 remote: adding changesets
1157 remote: adding manifests
1157 remote: adding manifests
1158 remote: adding file changes
1158 remote: adding file changes
1159 remote: added 1 changesets with 1 changes to 1 files
1159 remote: added 1 changesets with 1 changes to 1 files
General Comments 0
You need to be logged in to leave comments. Login now