|
1 $ cat >> $HGRCPATH <<EOF |
|
2 > [web] |
|
3 > push_ssl = false |
|
4 > allow_push = * |
|
5 > [phases] |
|
6 > publish = False |
|
7 > [alias] |
|
8 > qlog = log --template='{rev} - {node|short} {desc} ({phase})\n' |
|
9 > [diff] |
|
10 > git = 1 |
|
11 > unified = 0 |
|
12 > [extensions] |
|
13 > hgext.graphlog= |
|
14 > EOF |
|
15 $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH |
|
16 $ mkcommit() { |
|
17 > echo "$1" > "$1" |
|
18 > hg add "$1" |
|
19 > hg ci -m "$1" |
|
20 > } |
|
21 |
|
22 $ mkstack() { |
|
23 > # Creates a stack of commit based on $1 with messages from $2, $3 .. |
|
24 > hg update $1 -C |
|
25 > shift |
|
26 > mkcommits $* |
|
27 > } |
|
28 |
|
29 $ glog() { |
|
30 > hg glog --template '{rev}:{node|short}@{branch}({phase}) {desc|firstline}\n' "$@" |
|
31 > } |
|
32 |
|
33 $ shaof() { |
|
34 > hg log -T {node} -r "first(desc($1))" |
|
35 > } |
|
36 |
|
37 $ mkcommits() { |
|
38 > for i in $@; do mkcommit $i ; done |
|
39 > } |
|
40 |
|
41 ########################## |
|
42 importing Parren test |
|
43 ########################## |
|
44 |
|
45 $ cat << EOF >> $HGRCPATH |
|
46 > [ui] |
|
47 > logtemplate = "{rev}\t{bookmarks}: {desc|firstline} - {author|user}\n" |
|
48 > EOF |
|
49 |
|
50 HG METAEDIT |
|
51 =============================== |
|
52 |
|
53 Setup the Base Repo |
|
54 ------------------- |
|
55 |
|
56 We start with a plain base repo:: |
|
57 |
|
58 $ hg init $TESTTMP/metaedit; cd $TESTTMP/metaedit |
|
59 $ mkcommit "ROOT" |
|
60 $ hg phase --public "desc(ROOT)" |
|
61 $ mkcommit "A" |
|
62 $ mkcommit "B" |
|
63 $ hg up "desc(A)" |
|
64 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
65 $ mkcommit "C" |
|
66 created new head |
|
67 $ mkcommit "D" |
|
68 $ echo "D'" > D |
|
69 $ hg amend -m "D2" |
|
70 $ hg up "desc(C)" |
|
71 0 files updated, 0 files merged, 1 files removed, 0 files unresolved |
|
72 $ mkcommit "E" |
|
73 created new head |
|
74 $ mkcommit "F" |
|
75 |
|
76 Test |
|
77 ---- |
|
78 |
|
79 $ hg log -G |
|
80 @ 8 : F - test |
|
81 | |
|
82 o 7 : E - test |
|
83 | |
|
84 | o 6 : D2 - test |
|
85 |/ |
|
86 o 3 : C - test |
|
87 | |
|
88 | o 2 : B - test |
|
89 |/ |
|
90 o 1 : A - test |
|
91 | |
|
92 o 0 : ROOT - test |
|
93 |
|
94 $ hg update --clean . |
|
95 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
96 $ hg metaedit -r 0 |
|
97 abort: cannot edit commit information for public revisions |
|
98 [255] |
|
99 $ hg metaedit --fold |
|
100 abort: revisions must be specified with --fold |
|
101 [255] |
|
102 $ hg metaedit -r 0 --fold |
|
103 abort: cannot fold public revisions |
|
104 [255] |
|
105 $ hg metaedit 'desc(C) + desc(F)' --fold |
|
106 abort: cannot fold non-linear revisions (multiple roots given) |
|
107 [255] |
|
108 $ hg metaedit "desc(C)::desc(D2) + desc(E)" --fold |
|
109 abort: cannot fold non-linear revisions (multiple heads given) |
|
110 [255] |
|
111 check that metaedit respects allowunstable |
|
112 $ hg metaedit '.^' --config 'experimental.evolution=createmarkers, allnewcommands' |
|
113 abort: cannot edit commit information in the middle of a stack |
|
114 (587528abfffe will become unstable and new unstable changes are not allowed) |
|
115 [255] |
|
116 $ hg metaedit 'desc(A)::desc(B)' --fold --config 'experimental.evolution=createmarkers, allnewcommands' |
|
117 abort: cannot fold chain not ending with a head or with branching |
|
118 (new unstable changesets are not allowed) |
|
119 [255] |
|
120 $ hg metaedit --user foobar |
|
121 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
122 $ hg log --template '{rev}: {author}\n' -r 'desc(F):' --hidden |
|
123 5: test |
|
124 6: test |
|
125 7: test |
|
126 8: test |
|
127 9: foobar |
|
128 $ hg log --template '{rev}: {author}\n' -r . |
|
129 9: foobar |
|
130 |
|
131 TODO: support this |
|
132 $ hg metaedit '.^::.' |
|
133 abort: editing multiple revisions without --fold is not currently supported |
|
134 [255] |
|
135 |
|
136 $ HGEDITOR=cat hg metaedit '.^::.' --fold |
|
137 HG: This is a fold of 2 changesets. |
|
138 HG: Commit message of changeset 7. |
|
139 |
|
140 E |
|
141 |
|
142 HG: Commit message of changeset 9. |
|
143 |
|
144 F |
|
145 |
|
146 |
|
147 |
|
148 HG: Enter commit message. Lines beginning with 'HG:' are removed. |
|
149 HG: Leave message empty to abort commit. |
|
150 HG: -- |
|
151 HG: user: test |
|
152 HG: branch 'default' |
|
153 HG: added E |
|
154 HG: added F |
|
155 2 changesets folded |
|
156 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
157 |
|
158 $ glog -r . |
|
159 @ 10:a08d35fd7d9d@default(draft) E |
|
160 | |
|
161 ~ |
|
162 |
|
163 no new commit is created here because the date is the same |
|
164 $ HGEDITOR=cat hg metaedit |
|
165 E |
|
166 |
|
167 |
|
168 F |
|
169 |
|
170 |
|
171 HG: Enter commit message. Lines beginning with 'HG:' are removed. |
|
172 HG: Leave message empty to abort commit. |
|
173 HG: -- |
|
174 HG: user: test |
|
175 HG: branch 'default' |
|
176 HG: added E |
|
177 HG: added F |
|
178 nothing changed |
|
179 |
|
180 $ glog -r '.^::.' |
|
181 @ 10:a08d35fd7d9d@default(draft) E |
|
182 | |
|
183 o 3:3260958f1169@default(draft) C |
|
184 | |
|
185 ~ |
|
186 |
|
187 TODO: don't create a new commit in this case, we should take the date of the |
|
188 old commit (we add a default date with a value to show that metaedit is taking |
|
189 the current date to generate the hash, this way we still have a stable hash |
|
190 but highlight the bug) |
|
191 $ hg metaedit --config defaults.metaedit= --config devel.default-date="42 0" |
|
192 0 files updated, 0 files merged, 0 files removed, 0 files unresolved |
|
193 $ hg log -r '.^::.' --template '{rev}: {desc|firstline}\n' |
|
194 3: C |
|
195 11: E |
|
196 |
|
197 $ hg up .^ |
|
198 0 files updated, 0 files merged, 2 files removed, 0 files unresolved |
|
199 $ hg metaedit --user foobar2 tip |
|
200 $ hg log --template '{rev}: {author}\n' -r "user(foobar):" --hidden |
|
201 9: foobar |
|
202 10: test |
|
203 11: test |
|
204 12: foobar2 |
|
205 $ hg diff -r "10" -r "11" --hidden |
|
206 |
|
207 'fold' one commit |
|
208 $ hg metaedit "desc(D2)" --fold --user foobar3 |
|
209 1 changesets folded |
|
210 $ hg log -r "tip" --template '{rev}: {author}\n' |
|
211 13: foobar3 |