Mercurial > hg
annotate tests/test-amend-subrepo.t @ 43913:4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
We've run into occasional problems with people committing a repo, and then
amending or rebasing in the subrepo. That makes it so that the revision in the
parent can't be checked out, and the problem gets propagated on push. Mercurial
already tries to defend against this sort of dangling reference by pushing *all*
subrepo revisions first. This reuses the checks that trigger warnings in
`hg verify` to bail on the push unless using `--force`.
I thought about putting this on the server side, but at that point, all of the
data has been transferred, only to bail out. Additionally, SCM Manager hosts
subrepos in a location that isn't nested in the parent, so normal subrepo code
would complain that the subrepo is missing when run on the server.
Because the push command pushes subrepos before calling this exchange code, a
subrepo will be pushed before the parent is verified. Not great, but no
dangling references are exchanged, so it solves the problem. This code isn't in
the loop that pushes the subrepos because:
1) the list of outgoing revisions is needed to limit the scope of the check
2) the loop only accesses the current revision, and therefore can miss
subrepos that were dropped in previous commits
3) this code is called when pushing a subrepo, so the protection is recursive
I'm not sure if there's a cheap check for the list of files in the outgoing
bundle. If there is, that would provide a fast path to bypass this check for
people not using subrepos (or if no subrepo changes were made). There's
probably also room for verifying other references like tags. But since that
doesn't break checkouts, it's much less of a problem.
Differential Revision: https://phab.mercurial-scm.org/D7616
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 12 Dec 2019 12:30:15 -0500 |
parents | 4ea21df312ec |
children | c84844cd523a |
rev | line source |
---|---|
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
1 #testcases obsstore-off obsstore-on |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
2 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
3 $ cat << EOF >> $HGRCPATH |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
4 > [extensions] |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
5 > amend = |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
6 > EOF |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
7 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
8 #if obsstore-on |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
9 $ cat << EOF >> $HGRCPATH |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
10 > [experimental] |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
11 > evolution.createmarkers = True |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
12 > EOF |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
13 #endif |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
14 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
15 Prepare parent repo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
16 ------------------- |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
17 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
18 $ hg init r |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
19 $ cd r |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
20 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
21 $ echo a > a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
22 $ hg ci -Am0 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
23 adding a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
24 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
25 Link first subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
26 ------------------ |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
27 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
28 $ echo 's = s' >> .hgsub |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
29 $ hg add .hgsub |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
30 $ hg init s |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
31 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
32 amend without .hgsub |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
33 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
34 $ hg amend s |
35026
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
35 abort: can't commit subrepos without .hgsub |
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
36 [255] |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
37 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
38 amend with subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
39 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
40 $ hg amend |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
41 saved backup bundle to * (glob) (obsstore-off !) |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
42 $ hg status --change . |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
43 A .hgsub |
35026
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
44 A .hgsubstate |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
45 A a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
46 $ cat .hgsubstate |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
47 0000000000000000000000000000000000000000 s |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
48 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
49 Update subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
50 -------------- |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
51 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
52 add new commit to be amended |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
53 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
54 $ echo a >> a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
55 $ hg ci -m1 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
56 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
57 amend with dirty subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
58 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
59 $ echo a >> s/a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
60 $ hg add -R s |
35393
4441705b7111
tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents:
35166
diff
changeset
|
61 adding s/a |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
62 $ hg amend |
35026
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
63 abort: uncommitted changes in subrepository "s" |
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
64 (use --subrepos for recursive commit) |
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
65 [255] |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
66 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
67 amend with modified subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
68 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
69 $ hg ci -R s -m0 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
70 $ hg amend |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
71 saved backup bundle to * (glob) (obsstore-off !) |
35026
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
72 $ hg status --change . |
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
73 M .hgsubstate |
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
74 M a |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
75 $ cat .hgsubstate |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
76 f7b1eb17ad24730a1651fccd46c43826d1bbc2ac s |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
77 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
78 revert subrepo change |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
79 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
80 $ hg up -R s -q null |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
81 $ hg amend |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
82 saved backup bundle to * (glob) (obsstore-off !) |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
83 $ hg status --change . |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
84 M a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
85 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
86 Link another subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
87 -------------------- |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
88 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
89 add new commit to be amended |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
90 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
91 $ echo b >> b |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
92 $ hg ci -qAm2 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
93 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
94 also checks if non-subrepo change is included |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
95 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
96 $ echo a >> a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
97 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
98 amend with another subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
99 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
100 $ hg init t |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
101 $ echo b >> t/b |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
102 $ hg ci -R t -Am0 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
103 adding b |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
104 $ echo 't = t' >> .hgsub |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
105 $ hg amend |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
106 saved backup bundle to * (glob) (obsstore-off !) |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
107 $ hg status --change . |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
108 M .hgsub |
35026
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
109 M .hgsubstate |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
110 M a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
111 A b |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
112 $ cat .hgsubstate |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
113 0000000000000000000000000000000000000000 s |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
114 bfb1a4fb358498a9533dabf4f2043d94162f1fcd t |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
115 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
116 Unlink one subrepo |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
117 ------------------ |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
118 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
119 add new commit to be amended |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
120 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
121 $ echo a >> a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
122 $ hg ci -m3 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
123 |
41977
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
124 $ echo 't = t' > .hgsub |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
125 |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
126 --interactive won't silently ignore dirty subrepos |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
127 |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
128 $ echo modified > t/b |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
129 $ hg amend --interactive --config ui.interactive=True |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
130 abort: uncommitted changes in subrepository "t" |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
131 [255] |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
132 $ hg amend --interactive --config ui.interactive=True --config ui.commitsubrepos=True |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
133 abort: uncommitted changes in subrepository "t" |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
134 [255] |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
135 |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
136 $ hg -R t revert -q --all --no-backup |
4ea21df312ec
record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents:
35393
diff
changeset
|
137 |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
138 amend with one subrepo dropped |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
139 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
140 $ hg amend |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
141 saved backup bundle to * (glob) (obsstore-off !) |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
142 $ hg status --change . |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
143 M .hgsub |
35026
691524f0bbf6
amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents:
35024
diff
changeset
|
144 M .hgsubstate |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
145 M a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
146 $ cat .hgsubstate |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
147 bfb1a4fb358498a9533dabf4f2043d94162f1fcd t |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
148 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
149 Unlink subrepos completely |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
150 -------------------------- |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
151 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
152 add new commit to be amended |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
153 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
154 $ echo a >> a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
155 $ hg ci -m3 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
156 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
157 amend with .hgsub removed |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
158 |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
159 $ hg rm .hgsub |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
160 $ hg amend |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
161 saved backup bundle to * (glob) (obsstore-off !) |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
162 $ hg status --change . |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
163 M a |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
164 R .hgsub |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
165 R .hgsubstate |
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
166 |
43913
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
167 broken repositories will refuse to push |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
168 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
169 #if obsstore-off |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
170 $ hg up -q -C 2 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
171 #else |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
172 $ hg up -q -C 6 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
173 #endif |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
174 $ echo c >> t/b |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
175 $ hg amend -q -R t |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
176 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
177 $ hg init ../dest |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
178 $ hg init ../dest/t |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
179 $ hg init ../dest/s |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
180 $ hg push -q ../dest |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
181 abort: subrepo 't' is hidden in revision 04aa62396ec6 (obsstore-on !) |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
182 abort: subrepo 't' not found in revision 04aa62396ec6 (obsstore-off !) |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
183 [255] |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
184 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
185 ... unless forced |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
186 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
187 $ hg push --force -q ../dest |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
188 $ hg verify -R ../dest |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
189 checking changesets |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
190 checking manifests |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
191 crosschecking files in changesets and manifests |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
192 checking files |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
193 checked 5 changesets with 12 changes to 4 files |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
194 checking subrepo links |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
195 subrepo 't' not found in revision 04aa62396ec6 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
196 subrepo 't' not found in revision 6bce99600681 |
4b7d5d10c45d
exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents:
41977
diff
changeset
|
197 |
35024
3f909147a2c3
tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff
changeset
|
198 $ cd .. |