##// END OF EJS Templates
graphmod: don't try to visit nullrev (issue3772)
Bryan O'Sullivan -
r18467:e441657b stable
parent child Browse files
Show More
@@ -1,368 +1,368
1 1 # Revision graph generator for Mercurial
2 2 #
3 3 # Copyright 2008 Dirkjan Ochtman <dirkjan@ochtman.nl>
4 4 # Copyright 2007 Joel Rosdahl <joel@rosdahl.net>
5 5 #
6 6 # This software may be used and distributed according to the terms of the
7 7 # GNU General Public License version 2 or any later version.
8 8
9 9 """supports walking the history as DAGs suitable for graphical output
10 10
11 11 The most basic format we use is that of::
12 12
13 13 (id, type, data, [parentids])
14 14
15 15 The node and parent ids are arbitrary integers which identify a node in the
16 16 context of the graph returned. Type is a constant specifying the node type.
17 17 Data depends on type.
18 18 """
19 19
20 20 from mercurial.node import nullrev
21 21 import util
22 22
23 23 CHANGESET = 'C'
24 24
25 25 def dagwalker(repo, revs):
26 26 """cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
27 27
28 28 This generator function walks through revisions (which should be ordered
29 29 from bigger to lower). It returns a tuple for each node. The node and parent
30 30 ids are arbitrary integers which identify a node in the context of the graph
31 31 returned.
32 32 """
33 33 if not revs:
34 34 return
35 35
36 36 cl = repo.changelog
37 37 lowestrev = min(revs)
38 38 gpcache = {}
39 39
40 40 knownrevs = set(revs)
41 41 for rev in revs:
42 42 ctx = repo[rev]
43 43 parents = sorted(set([p.rev() for p in ctx.parents()
44 44 if p.rev() in knownrevs]))
45 45 mpars = [p.rev() for p in ctx.parents() if
46 46 p.rev() != nullrev and p.rev() not in parents]
47 47
48 48 for mpar in mpars:
49 49 gp = gpcache.get(mpar)
50 50 if gp is None:
51 51 gp = gpcache[mpar] = grandparent(cl, lowestrev, revs, mpar)
52 52 if not gp:
53 53 parents.append(mpar)
54 54 else:
55 55 parents.extend(g for g in gp if g not in parents)
56 56
57 57 yield (ctx.rev(), CHANGESET, ctx, parents)
58 58
59 59 def nodes(repo, nodes):
60 60 """cset DAG generator yielding (id, CHANGESET, ctx, [parentids]) tuples
61 61
62 62 This generator function walks the given nodes. It only returns parents
63 63 that are in nodes, too.
64 64 """
65 65 include = set(nodes)
66 66 for node in nodes:
67 67 ctx = repo[node]
68 68 parents = set([p.rev() for p in ctx.parents() if p.node() in include])
69 69 yield (ctx.rev(), CHANGESET, ctx, sorted(parents))
70 70
71 71 def colored(dag, repo):
72 72 """annotates a DAG with colored edge information
73 73
74 74 For each DAG node this function emits tuples::
75 75
76 76 (id, type, data, (col, color), [(col, nextcol, color)])
77 77
78 78 with the following new elements:
79 79
80 80 - Tuple (col, color) with column and color index for the current node
81 81 - A list of tuples indicating the edges between the current node and its
82 82 parents.
83 83 """
84 84 seen = []
85 85 colors = {}
86 86 newcolor = 1
87 87 config = {}
88 88
89 89 for key, val in repo.ui.configitems('graph'):
90 90 if '.' in key:
91 91 branch, setting = key.rsplit('.', 1)
92 92 # Validation
93 93 if setting == "width" and val.isdigit():
94 94 config.setdefault(branch, {})[setting] = int(val)
95 95 elif setting == "color" and val.isalnum():
96 96 config.setdefault(branch, {})[setting] = val
97 97
98 98 if config:
99 99 getconf = util.lrucachefunc(
100 100 lambda rev: config.get(repo[rev].branch(), {}))
101 101 else:
102 102 getconf = lambda rev: {}
103 103
104 104 for (cur, type, data, parents) in dag:
105 105
106 106 # Compute seen and next
107 107 if cur not in seen:
108 108 seen.append(cur) # new head
109 109 colors[cur] = newcolor
110 110 newcolor += 1
111 111
112 112 col = seen.index(cur)
113 113 color = colors.pop(cur)
114 114 next = seen[:]
115 115
116 116 # Add parents to next
117 117 addparents = [p for p in parents if p not in next]
118 118 next[col:col + 1] = addparents
119 119
120 120 # Set colors for the parents
121 121 for i, p in enumerate(addparents):
122 122 if not i:
123 123 colors[p] = color
124 124 else:
125 125 colors[p] = newcolor
126 126 newcolor += 1
127 127
128 128 # Add edges to the graph
129 129 edges = []
130 130 for ecol, eid in enumerate(seen):
131 131 if eid in next:
132 132 bconf = getconf(eid)
133 133 edges.append((
134 134 ecol, next.index(eid), colors[eid],
135 135 bconf.get('width', -1),
136 136 bconf.get('color', '')))
137 137 elif eid == cur:
138 138 for p in parents:
139 139 bconf = getconf(p)
140 140 edges.append((
141 141 ecol, next.index(p), color,
142 142 bconf.get('width', -1),
143 143 bconf.get('color', '')))
144 144
145 145 # Yield and move on
146 146 yield (cur, type, data, (col, color), edges)
147 147 seen = next
148 148
149 149 def grandparent(cl, lowestrev, roots, head):
150 150 """Return all ancestors of head in roots which revision is
151 151 greater or equal to lowestrev.
152 152 """
153 153 pending = set([head])
154 154 seen = set()
155 155 kept = set()
156 156 llowestrev = max(nullrev, lowestrev)
157 157 while pending:
158 158 r = pending.pop()
159 159 if r >= llowestrev and r not in seen:
160 160 if r in roots:
161 161 kept.add(r)
162 162 else:
163 163 pending.update([p for p in cl.parentrevs(r)])
164 164 seen.add(r)
165 165 return sorted(kept)
166 166
167 167 def asciiedges(type, char, lines, seen, rev, parents):
168 168 """adds edge info to changelog DAG walk suitable for ascii()"""
169 169 if rev not in seen:
170 170 seen.append(rev)
171 171 nodeidx = seen.index(rev)
172 172
173 173 knownparents = []
174 174 newparents = []
175 175 for parent in parents:
176 176 if parent in seen:
177 177 knownparents.append(parent)
178 178 else:
179 179 newparents.append(parent)
180 180
181 181 ncols = len(seen)
182 182 nextseen = seen[:]
183 183 nextseen[nodeidx:nodeidx + 1] = newparents
184 edges = [(nodeidx, nextseen.index(p)) for p in knownparents]
184 edges = [(nodeidx, nextseen.index(p)) for p in knownparents if p != nullrev]
185 185
186 186 while len(newparents) > 2:
187 187 # ascii() only knows how to add or remove a single column between two
188 188 # calls. Nodes with more than two parents break this constraint so we
189 189 # introduce intermediate expansion lines to grow the active node list
190 190 # slowly.
191 191 edges.append((nodeidx, nodeidx))
192 192 edges.append((nodeidx, nodeidx + 1))
193 193 nmorecols = 1
194 194 yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
195 195 char = '\\'
196 196 lines = []
197 197 nodeidx += 1
198 198 ncols += 1
199 199 edges = []
200 200 del newparents[0]
201 201
202 202 if len(newparents) > 0:
203 203 edges.append((nodeidx, nodeidx))
204 204 if len(newparents) > 1:
205 205 edges.append((nodeidx, nodeidx + 1))
206 206 nmorecols = len(nextseen) - ncols
207 207 seen[:] = nextseen
208 208 yield (type, char, lines, (nodeidx, edges, ncols, nmorecols))
209 209
210 210 def _fixlongrightedges(edges):
211 211 for (i, (start, end)) in enumerate(edges):
212 212 if end > start:
213 213 edges[i] = (start, end + 1)
214 214
215 215 def _getnodelineedgestail(
216 216 node_index, p_node_index, n_columns, n_columns_diff, p_diff, fix_tail):
217 217 if fix_tail and n_columns_diff == p_diff and n_columns_diff != 0:
218 218 # Still going in the same non-vertical direction.
219 219 if n_columns_diff == -1:
220 220 start = max(node_index + 1, p_node_index)
221 221 tail = ["|", " "] * (start - node_index - 1)
222 222 tail.extend(["/", " "] * (n_columns - start))
223 223 return tail
224 224 else:
225 225 return ["\\", " "] * (n_columns - node_index - 1)
226 226 else:
227 227 return ["|", " "] * (n_columns - node_index - 1)
228 228
229 229 def _drawedges(edges, nodeline, interline):
230 230 for (start, end) in edges:
231 231 if start == end + 1:
232 232 interline[2 * end + 1] = "/"
233 233 elif start == end - 1:
234 234 interline[2 * start + 1] = "\\"
235 235 elif start == end:
236 236 interline[2 * start] = "|"
237 237 else:
238 238 if 2 * end >= len(nodeline):
239 239 continue
240 240 nodeline[2 * end] = "+"
241 241 if start > end:
242 242 (start, end) = (end, start)
243 243 for i in range(2 * start + 1, 2 * end):
244 244 if nodeline[i] != "+":
245 245 nodeline[i] = "-"
246 246
247 247 def _getpaddingline(ni, n_columns, edges):
248 248 line = []
249 249 line.extend(["|", " "] * ni)
250 250 if (ni, ni - 1) in edges or (ni, ni) in edges:
251 251 # (ni, ni - 1) (ni, ni)
252 252 # | | | | | | | |
253 253 # +---o | | o---+
254 254 # | | c | | c | |
255 255 # | |/ / | |/ /
256 256 # | | | | | |
257 257 c = "|"
258 258 else:
259 259 c = " "
260 260 line.extend([c, " "])
261 261 line.extend(["|", " "] * (n_columns - ni - 1))
262 262 return line
263 263
264 264 def asciistate():
265 265 """returns the initial value for the "state" argument to ascii()"""
266 266 return [0, 0]
267 267
268 268 def ascii(ui, state, type, char, text, coldata):
269 269 """prints an ASCII graph of the DAG
270 270
271 271 takes the following arguments (one call per node in the graph):
272 272
273 273 - ui to write to
274 274 - Somewhere to keep the needed state in (init to asciistate())
275 275 - Column of the current node in the set of ongoing edges.
276 276 - Type indicator of node data, usually 'C' for changesets.
277 277 - Payload: (char, lines):
278 278 - Character to use as node's symbol.
279 279 - List of lines to display as the node's text.
280 280 - Edges; a list of (col, next_col) indicating the edges between
281 281 the current node and its parents.
282 282 - Number of columns (ongoing edges) in the current revision.
283 283 - The difference between the number of columns (ongoing edges)
284 284 in the next revision and the number of columns (ongoing edges)
285 285 in the current revision. That is: -1 means one column removed;
286 286 0 means no columns added or removed; 1 means one column added.
287 287 """
288 288
289 289 idx, edges, ncols, coldiff = coldata
290 290 assert -2 < coldiff < 2
291 291 if coldiff == -1:
292 292 # Transform
293 293 #
294 294 # | | | | | |
295 295 # o | | into o---+
296 296 # |X / |/ /
297 297 # | | | |
298 298 _fixlongrightedges(edges)
299 299
300 300 # add_padding_line says whether to rewrite
301 301 #
302 302 # | | | | | | | |
303 303 # | o---+ into | o---+
304 304 # | / / | | | # <--- padding line
305 305 # o | | | / /
306 306 # o | |
307 307 add_padding_line = (len(text) > 2 and coldiff == -1 and
308 308 [x for (x, y) in edges if x + 1 < y])
309 309
310 310 # fix_nodeline_tail says whether to rewrite
311 311 #
312 312 # | | o | | | | o | |
313 313 # | | |/ / | | |/ /
314 314 # | o | | into | o / / # <--- fixed nodeline tail
315 315 # | |/ / | |/ /
316 316 # o | | o | |
317 317 fix_nodeline_tail = len(text) <= 2 and not add_padding_line
318 318
319 319 # nodeline is the line containing the node character (typically o)
320 320 nodeline = ["|", " "] * idx
321 321 nodeline.extend([char, " "])
322 322
323 323 nodeline.extend(
324 324 _getnodelineedgestail(idx, state[1], ncols, coldiff,
325 325 state[0], fix_nodeline_tail))
326 326
327 327 # shift_interline is the line containing the non-vertical
328 328 # edges between this entry and the next
329 329 shift_interline = ["|", " "] * idx
330 330 if coldiff == -1:
331 331 n_spaces = 1
332 332 edge_ch = "/"
333 333 elif coldiff == 0:
334 334 n_spaces = 2
335 335 edge_ch = "|"
336 336 else:
337 337 n_spaces = 3
338 338 edge_ch = "\\"
339 339 shift_interline.extend(n_spaces * [" "])
340 340 shift_interline.extend([edge_ch, " "] * (ncols - idx - 1))
341 341
342 342 # draw edges from the current node to its parents
343 343 _drawedges(edges, nodeline, shift_interline)
344 344
345 345 # lines is the list of all graph lines to print
346 346 lines = [nodeline]
347 347 if add_padding_line:
348 348 lines.append(_getpaddingline(idx, ncols, edges))
349 349 lines.append(shift_interline)
350 350
351 351 # make sure that there are as many graph lines as there are
352 352 # log strings
353 353 while len(text) < len(lines):
354 354 text.append("")
355 355 if len(lines) < len(text):
356 356 extra_interline = ["|", " "] * (ncols + coldiff)
357 357 while len(lines) < len(text):
358 358 lines.append(extra_interline)
359 359
360 360 # print lines
361 361 indentation_level = max(ncols, ncols + coldiff)
362 362 for (line, logstr) in zip(lines, text):
363 363 ln = "%-*s %s" % (2 * indentation_level, "".join(line), logstr)
364 364 ui.write(ln.rstrip() + '\n')
365 365
366 366 # ... and start over
367 367 state[0] = coldiff
368 368 state[1] = idx
@@ -1,2112 +1,2120
1 1 @ (34) head
2 2 |
3 3 | o (33) head
4 4 | |
5 5 o | (32) expand
6 6 |\ \
7 7 | o \ (31) expand
8 8 | |\ \
9 9 | | o \ (30) expand
10 10 | | |\ \
11 11 | | | o | (29) regular commit
12 12 | | | | |
13 13 | | o | | (28) merge zero known
14 14 | | |\ \ \
15 15 o | | | | | (27) collapse
16 16 |/ / / / /
17 17 | | o---+ (26) merge one known; far right
18 18 | | | | |
19 19 +---o | | (25) merge one known; far left
20 20 | | | | |
21 21 | | o | | (24) merge one known; immediate right
22 22 | | |\| |
23 23 | | o | | (23) merge one known; immediate left
24 24 | |/| | |
25 25 +---o---+ (22) merge two known; one far left, one far right
26 26 | | / /
27 27 o | | | (21) expand
28 28 |\ \ \ \
29 29 | o---+-+ (20) merge two known; two far right
30 30 | / / /
31 31 o | | | (19) expand
32 32 |\ \ \ \
33 33 +---+---o (18) merge two known; two far left
34 34 | | | |
35 35 | o | | (17) expand
36 36 | |\ \ \
37 37 | | o---+ (16) merge two known; one immediate right, one near right
38 38 | | |/ /
39 39 o | | | (15) expand
40 40 |\ \ \ \
41 41 | o-----+ (14) merge two known; one immediate right, one far right
42 42 | |/ / /
43 43 o | | | (13) expand
44 44 |\ \ \ \
45 45 +---o | | (12) merge two known; one immediate right, one far left
46 46 | | |/ /
47 47 | o | | (11) expand
48 48 | |\ \ \
49 49 | | o---+ (10) merge two known; one immediate left, one near right
50 50 | |/ / /
51 51 o | | | (9) expand
52 52 |\ \ \ \
53 53 | o-----+ (8) merge two known; one immediate left, one far right
54 54 |/ / / /
55 55 o | | | (7) expand
56 56 |\ \ \ \
57 57 +---o | | (6) merge two known; one immediate left, one far left
58 58 | |/ / /
59 59 | o | | (5) expand
60 60 | |\ \ \
61 61 | | o | | (4) merge two known; one immediate left, one immediate right
62 62 | |/|/ /
63 63 | o / / (3) collapse
64 64 |/ / /
65 65 o / / (2) collapse
66 66 |/ /
67 67 o / (1) collapse
68 68 |/
69 69 o (0) root
70 70
71 71
72 72 $ commit()
73 73 > {
74 74 > rev=$1
75 75 > msg=$2
76 76 > shift 2
77 77 > if [ "$#" -gt 0 ]; then
78 78 > hg debugsetparents "$@"
79 79 > fi
80 80 > echo $rev > a
81 81 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
82 82 > }
83 83
84 84 $ cat > printrevset.py <<EOF
85 85 > from mercurial import extensions, revset, commands, cmdutil
86 86 >
87 87 > def uisetup(ui):
88 88 > def printrevset(orig, ui, repo, *pats, **opts):
89 89 > if opts.get('print_revset'):
90 90 > expr = cmdutil.getgraphlogrevs(repo, pats, opts)[1]
91 91 > if expr:
92 92 > tree = revset.parse(expr)[0]
93 93 > else:
94 94 > tree = []
95 95 > ui.write('%r\n' % (opts.get('rev', []),))
96 96 > ui.write(revset.prettyformat(tree) + '\n')
97 97 > return 0
98 98 > return orig(ui, repo, *pats, **opts)
99 99 > entry = extensions.wrapcommand(commands.table, 'log', printrevset)
100 100 > entry[1].append(('', 'print-revset', False,
101 101 > 'print generated revset and exit (DEPRECATED)'))
102 102 > EOF
103 103
104 104 $ echo "[extensions]" >> $HGRCPATH
105 105 $ echo "graphlog=" >> $HGRCPATH
106 106 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
107 107
108 108 $ hg init repo
109 109 $ cd repo
110 110
111 111 Empty repo:
112 112
113 113 $ hg glog
114 114
115 115
116 116 Building DAG:
117 117
118 118 $ commit 0 "root"
119 119 $ commit 1 "collapse" 0
120 120 $ commit 2 "collapse" 1
121 121 $ commit 3 "collapse" 2
122 122 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
123 123 $ commit 5 "expand" 3 4
124 124 $ commit 6 "merge two known; one immediate left, one far left" 2 5
125 125 $ commit 7 "expand" 2 5
126 126 $ commit 8 "merge two known; one immediate left, one far right" 0 7
127 127 $ commit 9 "expand" 7 8
128 128 $ commit 10 "merge two known; one immediate left, one near right" 0 6
129 129 $ commit 11 "expand" 6 10
130 130 $ commit 12 "merge two known; one immediate right, one far left" 1 9
131 131 $ commit 13 "expand" 9 11
132 132 $ commit 14 "merge two known; one immediate right, one far right" 0 12
133 133 $ commit 15 "expand" 13 14
134 134 $ commit 16 "merge two known; one immediate right, one near right" 0 1
135 135 $ commit 17 "expand" 12 16
136 136 $ commit 18 "merge two known; two far left" 1 15
137 137 $ commit 19 "expand" 15 17
138 138 $ commit 20 "merge two known; two far right" 0 18
139 139 $ commit 21 "expand" 19 20
140 140 $ commit 22 "merge two known; one far left, one far right" 18 21
141 141 $ commit 23 "merge one known; immediate left" 1 22
142 142 $ commit 24 "merge one known; immediate right" 0 23
143 143 $ commit 25 "merge one known; far left" 21 24
144 144 $ commit 26 "merge one known; far right" 18 25
145 145 $ commit 27 "collapse" 21
146 146 $ commit 28 "merge zero known" 1 26
147 147 $ commit 29 "regular commit" 0
148 148 $ commit 30 "expand" 28 29
149 149 $ commit 31 "expand" 21 30
150 150 $ commit 32 "expand" 27 31
151 151 $ commit 33 "head" 18
152 152 $ commit 34 "head" 32
153 153
154 154
155 155 $ hg glog -q
156 156 @ 34:fea3ac5810e0
157 157 |
158 158 | o 33:68608f5145f9
159 159 | |
160 160 o | 32:d06dffa21a31
161 161 |\ \
162 162 | o \ 31:621d83e11f67
163 163 | |\ \
164 164 | | o \ 30:6e11cd4b648f
165 165 | | |\ \
166 166 | | | o | 29:cd9bb2be7593
167 167 | | | | |
168 168 | | o | | 28:44ecd0b9ae99
169 169 | | |\ \ \
170 170 o | | | | | 27:886ed638191b
171 171 |/ / / / /
172 172 | | o---+ 26:7f25b6c2f0b9
173 173 | | | | |
174 174 +---o | | 25:91da8ed57247
175 175 | | | | |
176 176 | | o | | 24:a9c19a3d96b7
177 177 | | |\| |
178 178 | | o | | 23:a01cddf0766d
179 179 | |/| | |
180 180 +---o---+ 22:e0d9cccacb5d
181 181 | | / /
182 182 o | | | 21:d42a756af44d
183 183 |\ \ \ \
184 184 | o---+-+ 20:d30ed6450e32
185 185 | / / /
186 186 o | | | 19:31ddc2c1573b
187 187 |\ \ \ \
188 188 +---+---o 18:1aa84d96232a
189 189 | | | |
190 190 | o | | 17:44765d7c06e0
191 191 | |\ \ \
192 192 | | o---+ 16:3677d192927d
193 193 | | |/ /
194 194 o | | | 15:1dda3f72782d
195 195 |\ \ \ \
196 196 | o-----+ 14:8eac370358ef
197 197 | |/ / /
198 198 o | | | 13:22d8966a97e3
199 199 |\ \ \ \
200 200 +---o | | 12:86b91144a6e9
201 201 | | |/ /
202 202 | o | | 11:832d76e6bdf2
203 203 | |\ \ \
204 204 | | o---+ 10:74c64d036d72
205 205 | |/ / /
206 206 o | | | 9:7010c0af0a35
207 207 |\ \ \ \
208 208 | o-----+ 8:7a0b11f71937
209 209 |/ / / /
210 210 o | | | 7:b632bb1b1224
211 211 |\ \ \ \
212 212 +---o | | 6:b105a072e251
213 213 | |/ / /
214 214 | o | | 5:4409d547b708
215 215 | |\ \ \
216 216 | | o | | 4:26a8bac39d9f
217 217 | |/|/ /
218 218 | o / / 3:27eef8ed80b4
219 219 |/ / /
220 220 o / / 2:3d9a33b8d1e1
221 221 |/ /
222 222 o / 1:6db2ef61d156
223 223 |/
224 224 o 0:e6eb3150255d
225 225
226 226
227 227 $ hg glog
228 228 @ changeset: 34:fea3ac5810e0
229 229 | tag: tip
230 230 | parent: 32:d06dffa21a31
231 231 | user: test
232 232 | date: Thu Jan 01 00:00:34 1970 +0000
233 233 | summary: (34) head
234 234 |
235 235 | o changeset: 33:68608f5145f9
236 236 | | parent: 18:1aa84d96232a
237 237 | | user: test
238 238 | | date: Thu Jan 01 00:00:33 1970 +0000
239 239 | | summary: (33) head
240 240 | |
241 241 o | changeset: 32:d06dffa21a31
242 242 |\ \ parent: 27:886ed638191b
243 243 | | | parent: 31:621d83e11f67
244 244 | | | user: test
245 245 | | | date: Thu Jan 01 00:00:32 1970 +0000
246 246 | | | summary: (32) expand
247 247 | | |
248 248 | o | changeset: 31:621d83e11f67
249 249 | |\ \ parent: 21:d42a756af44d
250 250 | | | | parent: 30:6e11cd4b648f
251 251 | | | | user: test
252 252 | | | | date: Thu Jan 01 00:00:31 1970 +0000
253 253 | | | | summary: (31) expand
254 254 | | | |
255 255 | | o | changeset: 30:6e11cd4b648f
256 256 | | |\ \ parent: 28:44ecd0b9ae99
257 257 | | | | | parent: 29:cd9bb2be7593
258 258 | | | | | user: test
259 259 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
260 260 | | | | | summary: (30) expand
261 261 | | | | |
262 262 | | | o | changeset: 29:cd9bb2be7593
263 263 | | | | | parent: 0:e6eb3150255d
264 264 | | | | | user: test
265 265 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
266 266 | | | | | summary: (29) regular commit
267 267 | | | | |
268 268 | | o | | changeset: 28:44ecd0b9ae99
269 269 | | |\ \ \ parent: 1:6db2ef61d156
270 270 | | | | | | parent: 26:7f25b6c2f0b9
271 271 | | | | | | user: test
272 272 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
273 273 | | | | | | summary: (28) merge zero known
274 274 | | | | | |
275 275 o | | | | | changeset: 27:886ed638191b
276 276 |/ / / / / parent: 21:d42a756af44d
277 277 | | | | | user: test
278 278 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
279 279 | | | | | summary: (27) collapse
280 280 | | | | |
281 281 | | o---+ changeset: 26:7f25b6c2f0b9
282 282 | | | | | parent: 18:1aa84d96232a
283 283 | | | | | parent: 25:91da8ed57247
284 284 | | | | | user: test
285 285 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
286 286 | | | | | summary: (26) merge one known; far right
287 287 | | | | |
288 288 +---o | | changeset: 25:91da8ed57247
289 289 | | | | | parent: 21:d42a756af44d
290 290 | | | | | parent: 24:a9c19a3d96b7
291 291 | | | | | user: test
292 292 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
293 293 | | | | | summary: (25) merge one known; far left
294 294 | | | | |
295 295 | | o | | changeset: 24:a9c19a3d96b7
296 296 | | |\| | parent: 0:e6eb3150255d
297 297 | | | | | parent: 23:a01cddf0766d
298 298 | | | | | user: test
299 299 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
300 300 | | | | | summary: (24) merge one known; immediate right
301 301 | | | | |
302 302 | | o | | changeset: 23:a01cddf0766d
303 303 | |/| | | parent: 1:6db2ef61d156
304 304 | | | | | parent: 22:e0d9cccacb5d
305 305 | | | | | user: test
306 306 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
307 307 | | | | | summary: (23) merge one known; immediate left
308 308 | | | | |
309 309 +---o---+ changeset: 22:e0d9cccacb5d
310 310 | | | | parent: 18:1aa84d96232a
311 311 | | / / parent: 21:d42a756af44d
312 312 | | | | user: test
313 313 | | | | date: Thu Jan 01 00:00:22 1970 +0000
314 314 | | | | summary: (22) merge two known; one far left, one far right
315 315 | | | |
316 316 o | | | changeset: 21:d42a756af44d
317 317 |\ \ \ \ parent: 19:31ddc2c1573b
318 318 | | | | | parent: 20:d30ed6450e32
319 319 | | | | | user: test
320 320 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
321 321 | | | | | summary: (21) expand
322 322 | | | | |
323 323 | o---+-+ changeset: 20:d30ed6450e32
324 324 | | | | parent: 0:e6eb3150255d
325 325 | / / / parent: 18:1aa84d96232a
326 326 | | | | user: test
327 327 | | | | date: Thu Jan 01 00:00:20 1970 +0000
328 328 | | | | summary: (20) merge two known; two far right
329 329 | | | |
330 330 o | | | changeset: 19:31ddc2c1573b
331 331 |\ \ \ \ parent: 15:1dda3f72782d
332 332 | | | | | parent: 17:44765d7c06e0
333 333 | | | | | user: test
334 334 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
335 335 | | | | | summary: (19) expand
336 336 | | | | |
337 337 +---+---o changeset: 18:1aa84d96232a
338 338 | | | | parent: 1:6db2ef61d156
339 339 | | | | parent: 15:1dda3f72782d
340 340 | | | | user: test
341 341 | | | | date: Thu Jan 01 00:00:18 1970 +0000
342 342 | | | | summary: (18) merge two known; two far left
343 343 | | | |
344 344 | o | | changeset: 17:44765d7c06e0
345 345 | |\ \ \ parent: 12:86b91144a6e9
346 346 | | | | | parent: 16:3677d192927d
347 347 | | | | | user: test
348 348 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
349 349 | | | | | summary: (17) expand
350 350 | | | | |
351 351 | | o---+ changeset: 16:3677d192927d
352 352 | | | | | parent: 0:e6eb3150255d
353 353 | | |/ / parent: 1:6db2ef61d156
354 354 | | | | user: test
355 355 | | | | date: Thu Jan 01 00:00:16 1970 +0000
356 356 | | | | summary: (16) merge two known; one immediate right, one near right
357 357 | | | |
358 358 o | | | changeset: 15:1dda3f72782d
359 359 |\ \ \ \ parent: 13:22d8966a97e3
360 360 | | | | | parent: 14:8eac370358ef
361 361 | | | | | user: test
362 362 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
363 363 | | | | | summary: (15) expand
364 364 | | | | |
365 365 | o-----+ changeset: 14:8eac370358ef
366 366 | | | | | parent: 0:e6eb3150255d
367 367 | |/ / / parent: 12:86b91144a6e9
368 368 | | | | user: test
369 369 | | | | date: Thu Jan 01 00:00:14 1970 +0000
370 370 | | | | summary: (14) merge two known; one immediate right, one far right
371 371 | | | |
372 372 o | | | changeset: 13:22d8966a97e3
373 373 |\ \ \ \ parent: 9:7010c0af0a35
374 374 | | | | | parent: 11:832d76e6bdf2
375 375 | | | | | user: test
376 376 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
377 377 | | | | | summary: (13) expand
378 378 | | | | |
379 379 +---o | | changeset: 12:86b91144a6e9
380 380 | | |/ / parent: 1:6db2ef61d156
381 381 | | | | parent: 9:7010c0af0a35
382 382 | | | | user: test
383 383 | | | | date: Thu Jan 01 00:00:12 1970 +0000
384 384 | | | | summary: (12) merge two known; one immediate right, one far left
385 385 | | | |
386 386 | o | | changeset: 11:832d76e6bdf2
387 387 | |\ \ \ parent: 6:b105a072e251
388 388 | | | | | parent: 10:74c64d036d72
389 389 | | | | | user: test
390 390 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
391 391 | | | | | summary: (11) expand
392 392 | | | | |
393 393 | | o---+ changeset: 10:74c64d036d72
394 394 | | | | | parent: 0:e6eb3150255d
395 395 | |/ / / parent: 6:b105a072e251
396 396 | | | | user: test
397 397 | | | | date: Thu Jan 01 00:00:10 1970 +0000
398 398 | | | | summary: (10) merge two known; one immediate left, one near right
399 399 | | | |
400 400 o | | | changeset: 9:7010c0af0a35
401 401 |\ \ \ \ parent: 7:b632bb1b1224
402 402 | | | | | parent: 8:7a0b11f71937
403 403 | | | | | user: test
404 404 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
405 405 | | | | | summary: (9) expand
406 406 | | | | |
407 407 | o-----+ changeset: 8:7a0b11f71937
408 408 | | | | | parent: 0:e6eb3150255d
409 409 |/ / / / parent: 7:b632bb1b1224
410 410 | | | | user: test
411 411 | | | | date: Thu Jan 01 00:00:08 1970 +0000
412 412 | | | | summary: (8) merge two known; one immediate left, one far right
413 413 | | | |
414 414 o | | | changeset: 7:b632bb1b1224
415 415 |\ \ \ \ parent: 2:3d9a33b8d1e1
416 416 | | | | | parent: 5:4409d547b708
417 417 | | | | | user: test
418 418 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
419 419 | | | | | summary: (7) expand
420 420 | | | | |
421 421 +---o | | changeset: 6:b105a072e251
422 422 | |/ / / parent: 2:3d9a33b8d1e1
423 423 | | | | parent: 5:4409d547b708
424 424 | | | | user: test
425 425 | | | | date: Thu Jan 01 00:00:06 1970 +0000
426 426 | | | | summary: (6) merge two known; one immediate left, one far left
427 427 | | | |
428 428 | o | | changeset: 5:4409d547b708
429 429 | |\ \ \ parent: 3:27eef8ed80b4
430 430 | | | | | parent: 4:26a8bac39d9f
431 431 | | | | | user: test
432 432 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
433 433 | | | | | summary: (5) expand
434 434 | | | | |
435 435 | | o | | changeset: 4:26a8bac39d9f
436 436 | |/|/ / parent: 1:6db2ef61d156
437 437 | | | | parent: 3:27eef8ed80b4
438 438 | | | | user: test
439 439 | | | | date: Thu Jan 01 00:00:04 1970 +0000
440 440 | | | | summary: (4) merge two known; one immediate left, one immediate right
441 441 | | | |
442 442 | o | | changeset: 3:27eef8ed80b4
443 443 |/ / / user: test
444 444 | | | date: Thu Jan 01 00:00:03 1970 +0000
445 445 | | | summary: (3) collapse
446 446 | | |
447 447 o | | changeset: 2:3d9a33b8d1e1
448 448 |/ / user: test
449 449 | | date: Thu Jan 01 00:00:02 1970 +0000
450 450 | | summary: (2) collapse
451 451 | |
452 452 o | changeset: 1:6db2ef61d156
453 453 |/ user: test
454 454 | date: Thu Jan 01 00:00:01 1970 +0000
455 455 | summary: (1) collapse
456 456 |
457 457 o changeset: 0:e6eb3150255d
458 458 user: test
459 459 date: Thu Jan 01 00:00:00 1970 +0000
460 460 summary: (0) root
461 461
462 462
463 463 File glog:
464 464 $ hg glog a
465 465 @ changeset: 34:fea3ac5810e0
466 466 | tag: tip
467 467 | parent: 32:d06dffa21a31
468 468 | user: test
469 469 | date: Thu Jan 01 00:00:34 1970 +0000
470 470 | summary: (34) head
471 471 |
472 472 | o changeset: 33:68608f5145f9
473 473 | | parent: 18:1aa84d96232a
474 474 | | user: test
475 475 | | date: Thu Jan 01 00:00:33 1970 +0000
476 476 | | summary: (33) head
477 477 | |
478 478 o | changeset: 32:d06dffa21a31
479 479 |\ \ parent: 27:886ed638191b
480 480 | | | parent: 31:621d83e11f67
481 481 | | | user: test
482 482 | | | date: Thu Jan 01 00:00:32 1970 +0000
483 483 | | | summary: (32) expand
484 484 | | |
485 485 | o | changeset: 31:621d83e11f67
486 486 | |\ \ parent: 21:d42a756af44d
487 487 | | | | parent: 30:6e11cd4b648f
488 488 | | | | user: test
489 489 | | | | date: Thu Jan 01 00:00:31 1970 +0000
490 490 | | | | summary: (31) expand
491 491 | | | |
492 492 | | o | changeset: 30:6e11cd4b648f
493 493 | | |\ \ parent: 28:44ecd0b9ae99
494 494 | | | | | parent: 29:cd9bb2be7593
495 495 | | | | | user: test
496 496 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
497 497 | | | | | summary: (30) expand
498 498 | | | | |
499 499 | | | o | changeset: 29:cd9bb2be7593
500 500 | | | | | parent: 0:e6eb3150255d
501 501 | | | | | user: test
502 502 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
503 503 | | | | | summary: (29) regular commit
504 504 | | | | |
505 505 | | o | | changeset: 28:44ecd0b9ae99
506 506 | | |\ \ \ parent: 1:6db2ef61d156
507 507 | | | | | | parent: 26:7f25b6c2f0b9
508 508 | | | | | | user: test
509 509 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
510 510 | | | | | | summary: (28) merge zero known
511 511 | | | | | |
512 512 o | | | | | changeset: 27:886ed638191b
513 513 |/ / / / / parent: 21:d42a756af44d
514 514 | | | | | user: test
515 515 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
516 516 | | | | | summary: (27) collapse
517 517 | | | | |
518 518 | | o---+ changeset: 26:7f25b6c2f0b9
519 519 | | | | | parent: 18:1aa84d96232a
520 520 | | | | | parent: 25:91da8ed57247
521 521 | | | | | user: test
522 522 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
523 523 | | | | | summary: (26) merge one known; far right
524 524 | | | | |
525 525 +---o | | changeset: 25:91da8ed57247
526 526 | | | | | parent: 21:d42a756af44d
527 527 | | | | | parent: 24:a9c19a3d96b7
528 528 | | | | | user: test
529 529 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
530 530 | | | | | summary: (25) merge one known; far left
531 531 | | | | |
532 532 | | o | | changeset: 24:a9c19a3d96b7
533 533 | | |\| | parent: 0:e6eb3150255d
534 534 | | | | | parent: 23:a01cddf0766d
535 535 | | | | | user: test
536 536 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
537 537 | | | | | summary: (24) merge one known; immediate right
538 538 | | | | |
539 539 | | o | | changeset: 23:a01cddf0766d
540 540 | |/| | | parent: 1:6db2ef61d156
541 541 | | | | | parent: 22:e0d9cccacb5d
542 542 | | | | | user: test
543 543 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
544 544 | | | | | summary: (23) merge one known; immediate left
545 545 | | | | |
546 546 +---o---+ changeset: 22:e0d9cccacb5d
547 547 | | | | parent: 18:1aa84d96232a
548 548 | | / / parent: 21:d42a756af44d
549 549 | | | | user: test
550 550 | | | | date: Thu Jan 01 00:00:22 1970 +0000
551 551 | | | | summary: (22) merge two known; one far left, one far right
552 552 | | | |
553 553 o | | | changeset: 21:d42a756af44d
554 554 |\ \ \ \ parent: 19:31ddc2c1573b
555 555 | | | | | parent: 20:d30ed6450e32
556 556 | | | | | user: test
557 557 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
558 558 | | | | | summary: (21) expand
559 559 | | | | |
560 560 | o---+-+ changeset: 20:d30ed6450e32
561 561 | | | | parent: 0:e6eb3150255d
562 562 | / / / parent: 18:1aa84d96232a
563 563 | | | | user: test
564 564 | | | | date: Thu Jan 01 00:00:20 1970 +0000
565 565 | | | | summary: (20) merge two known; two far right
566 566 | | | |
567 567 o | | | changeset: 19:31ddc2c1573b
568 568 |\ \ \ \ parent: 15:1dda3f72782d
569 569 | | | | | parent: 17:44765d7c06e0
570 570 | | | | | user: test
571 571 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
572 572 | | | | | summary: (19) expand
573 573 | | | | |
574 574 +---+---o changeset: 18:1aa84d96232a
575 575 | | | | parent: 1:6db2ef61d156
576 576 | | | | parent: 15:1dda3f72782d
577 577 | | | | user: test
578 578 | | | | date: Thu Jan 01 00:00:18 1970 +0000
579 579 | | | | summary: (18) merge two known; two far left
580 580 | | | |
581 581 | o | | changeset: 17:44765d7c06e0
582 582 | |\ \ \ parent: 12:86b91144a6e9
583 583 | | | | | parent: 16:3677d192927d
584 584 | | | | | user: test
585 585 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
586 586 | | | | | summary: (17) expand
587 587 | | | | |
588 588 | | o---+ changeset: 16:3677d192927d
589 589 | | | | | parent: 0:e6eb3150255d
590 590 | | |/ / parent: 1:6db2ef61d156
591 591 | | | | user: test
592 592 | | | | date: Thu Jan 01 00:00:16 1970 +0000
593 593 | | | | summary: (16) merge two known; one immediate right, one near right
594 594 | | | |
595 595 o | | | changeset: 15:1dda3f72782d
596 596 |\ \ \ \ parent: 13:22d8966a97e3
597 597 | | | | | parent: 14:8eac370358ef
598 598 | | | | | user: test
599 599 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
600 600 | | | | | summary: (15) expand
601 601 | | | | |
602 602 | o-----+ changeset: 14:8eac370358ef
603 603 | | | | | parent: 0:e6eb3150255d
604 604 | |/ / / parent: 12:86b91144a6e9
605 605 | | | | user: test
606 606 | | | | date: Thu Jan 01 00:00:14 1970 +0000
607 607 | | | | summary: (14) merge two known; one immediate right, one far right
608 608 | | | |
609 609 o | | | changeset: 13:22d8966a97e3
610 610 |\ \ \ \ parent: 9:7010c0af0a35
611 611 | | | | | parent: 11:832d76e6bdf2
612 612 | | | | | user: test
613 613 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
614 614 | | | | | summary: (13) expand
615 615 | | | | |
616 616 +---o | | changeset: 12:86b91144a6e9
617 617 | | |/ / parent: 1:6db2ef61d156
618 618 | | | | parent: 9:7010c0af0a35
619 619 | | | | user: test
620 620 | | | | date: Thu Jan 01 00:00:12 1970 +0000
621 621 | | | | summary: (12) merge two known; one immediate right, one far left
622 622 | | | |
623 623 | o | | changeset: 11:832d76e6bdf2
624 624 | |\ \ \ parent: 6:b105a072e251
625 625 | | | | | parent: 10:74c64d036d72
626 626 | | | | | user: test
627 627 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
628 628 | | | | | summary: (11) expand
629 629 | | | | |
630 630 | | o---+ changeset: 10:74c64d036d72
631 631 | | | | | parent: 0:e6eb3150255d
632 632 | |/ / / parent: 6:b105a072e251
633 633 | | | | user: test
634 634 | | | | date: Thu Jan 01 00:00:10 1970 +0000
635 635 | | | | summary: (10) merge two known; one immediate left, one near right
636 636 | | | |
637 637 o | | | changeset: 9:7010c0af0a35
638 638 |\ \ \ \ parent: 7:b632bb1b1224
639 639 | | | | | parent: 8:7a0b11f71937
640 640 | | | | | user: test
641 641 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
642 642 | | | | | summary: (9) expand
643 643 | | | | |
644 644 | o-----+ changeset: 8:7a0b11f71937
645 645 | | | | | parent: 0:e6eb3150255d
646 646 |/ / / / parent: 7:b632bb1b1224
647 647 | | | | user: test
648 648 | | | | date: Thu Jan 01 00:00:08 1970 +0000
649 649 | | | | summary: (8) merge two known; one immediate left, one far right
650 650 | | | |
651 651 o | | | changeset: 7:b632bb1b1224
652 652 |\ \ \ \ parent: 2:3d9a33b8d1e1
653 653 | | | | | parent: 5:4409d547b708
654 654 | | | | | user: test
655 655 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
656 656 | | | | | summary: (7) expand
657 657 | | | | |
658 658 +---o | | changeset: 6:b105a072e251
659 659 | |/ / / parent: 2:3d9a33b8d1e1
660 660 | | | | parent: 5:4409d547b708
661 661 | | | | user: test
662 662 | | | | date: Thu Jan 01 00:00:06 1970 +0000
663 663 | | | | summary: (6) merge two known; one immediate left, one far left
664 664 | | | |
665 665 | o | | changeset: 5:4409d547b708
666 666 | |\ \ \ parent: 3:27eef8ed80b4
667 667 | | | | | parent: 4:26a8bac39d9f
668 668 | | | | | user: test
669 669 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
670 670 | | | | | summary: (5) expand
671 671 | | | | |
672 672 | | o | | changeset: 4:26a8bac39d9f
673 673 | |/|/ / parent: 1:6db2ef61d156
674 674 | | | | parent: 3:27eef8ed80b4
675 675 | | | | user: test
676 676 | | | | date: Thu Jan 01 00:00:04 1970 +0000
677 677 | | | | summary: (4) merge two known; one immediate left, one immediate right
678 678 | | | |
679 679 | o | | changeset: 3:27eef8ed80b4
680 680 |/ / / user: test
681 681 | | | date: Thu Jan 01 00:00:03 1970 +0000
682 682 | | | summary: (3) collapse
683 683 | | |
684 684 o | | changeset: 2:3d9a33b8d1e1
685 685 |/ / user: test
686 686 | | date: Thu Jan 01 00:00:02 1970 +0000
687 687 | | summary: (2) collapse
688 688 | |
689 689 o | changeset: 1:6db2ef61d156
690 690 |/ user: test
691 691 | date: Thu Jan 01 00:00:01 1970 +0000
692 692 | summary: (1) collapse
693 693 |
694 694 o changeset: 0:e6eb3150255d
695 695 user: test
696 696 date: Thu Jan 01 00:00:00 1970 +0000
697 697 summary: (0) root
698 698
699 699
700 700 File glog per revset:
701 701
702 702 $ hg glog -r 'file("a")'
703 703 @ changeset: 34:fea3ac5810e0
704 704 | tag: tip
705 705 | parent: 32:d06dffa21a31
706 706 | user: test
707 707 | date: Thu Jan 01 00:00:34 1970 +0000
708 708 | summary: (34) head
709 709 |
710 710 | o changeset: 33:68608f5145f9
711 711 | | parent: 18:1aa84d96232a
712 712 | | user: test
713 713 | | date: Thu Jan 01 00:00:33 1970 +0000
714 714 | | summary: (33) head
715 715 | |
716 716 o | changeset: 32:d06dffa21a31
717 717 |\ \ parent: 27:886ed638191b
718 718 | | | parent: 31:621d83e11f67
719 719 | | | user: test
720 720 | | | date: Thu Jan 01 00:00:32 1970 +0000
721 721 | | | summary: (32) expand
722 722 | | |
723 723 | o | changeset: 31:621d83e11f67
724 724 | |\ \ parent: 21:d42a756af44d
725 725 | | | | parent: 30:6e11cd4b648f
726 726 | | | | user: test
727 727 | | | | date: Thu Jan 01 00:00:31 1970 +0000
728 728 | | | | summary: (31) expand
729 729 | | | |
730 730 | | o | changeset: 30:6e11cd4b648f
731 731 | | |\ \ parent: 28:44ecd0b9ae99
732 732 | | | | | parent: 29:cd9bb2be7593
733 733 | | | | | user: test
734 734 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
735 735 | | | | | summary: (30) expand
736 736 | | | | |
737 737 | | | o | changeset: 29:cd9bb2be7593
738 738 | | | | | parent: 0:e6eb3150255d
739 739 | | | | | user: test
740 740 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
741 741 | | | | | summary: (29) regular commit
742 742 | | | | |
743 743 | | o | | changeset: 28:44ecd0b9ae99
744 744 | | |\ \ \ parent: 1:6db2ef61d156
745 745 | | | | | | parent: 26:7f25b6c2f0b9
746 746 | | | | | | user: test
747 747 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
748 748 | | | | | | summary: (28) merge zero known
749 749 | | | | | |
750 750 o | | | | | changeset: 27:886ed638191b
751 751 |/ / / / / parent: 21:d42a756af44d
752 752 | | | | | user: test
753 753 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
754 754 | | | | | summary: (27) collapse
755 755 | | | | |
756 756 | | o---+ changeset: 26:7f25b6c2f0b9
757 757 | | | | | parent: 18:1aa84d96232a
758 758 | | | | | parent: 25:91da8ed57247
759 759 | | | | | user: test
760 760 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
761 761 | | | | | summary: (26) merge one known; far right
762 762 | | | | |
763 763 +---o | | changeset: 25:91da8ed57247
764 764 | | | | | parent: 21:d42a756af44d
765 765 | | | | | parent: 24:a9c19a3d96b7
766 766 | | | | | user: test
767 767 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
768 768 | | | | | summary: (25) merge one known; far left
769 769 | | | | |
770 770 | | o | | changeset: 24:a9c19a3d96b7
771 771 | | |\| | parent: 0:e6eb3150255d
772 772 | | | | | parent: 23:a01cddf0766d
773 773 | | | | | user: test
774 774 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
775 775 | | | | | summary: (24) merge one known; immediate right
776 776 | | | | |
777 777 | | o | | changeset: 23:a01cddf0766d
778 778 | |/| | | parent: 1:6db2ef61d156
779 779 | | | | | parent: 22:e0d9cccacb5d
780 780 | | | | | user: test
781 781 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
782 782 | | | | | summary: (23) merge one known; immediate left
783 783 | | | | |
784 784 +---o---+ changeset: 22:e0d9cccacb5d
785 785 | | | | parent: 18:1aa84d96232a
786 786 | | / / parent: 21:d42a756af44d
787 787 | | | | user: test
788 788 | | | | date: Thu Jan 01 00:00:22 1970 +0000
789 789 | | | | summary: (22) merge two known; one far left, one far right
790 790 | | | |
791 791 o | | | changeset: 21:d42a756af44d
792 792 |\ \ \ \ parent: 19:31ddc2c1573b
793 793 | | | | | parent: 20:d30ed6450e32
794 794 | | | | | user: test
795 795 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
796 796 | | | | | summary: (21) expand
797 797 | | | | |
798 798 | o---+-+ changeset: 20:d30ed6450e32
799 799 | | | | parent: 0:e6eb3150255d
800 800 | / / / parent: 18:1aa84d96232a
801 801 | | | | user: test
802 802 | | | | date: Thu Jan 01 00:00:20 1970 +0000
803 803 | | | | summary: (20) merge two known; two far right
804 804 | | | |
805 805 o | | | changeset: 19:31ddc2c1573b
806 806 |\ \ \ \ parent: 15:1dda3f72782d
807 807 | | | | | parent: 17:44765d7c06e0
808 808 | | | | | user: test
809 809 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
810 810 | | | | | summary: (19) expand
811 811 | | | | |
812 812 +---+---o changeset: 18:1aa84d96232a
813 813 | | | | parent: 1:6db2ef61d156
814 814 | | | | parent: 15:1dda3f72782d
815 815 | | | | user: test
816 816 | | | | date: Thu Jan 01 00:00:18 1970 +0000
817 817 | | | | summary: (18) merge two known; two far left
818 818 | | | |
819 819 | o | | changeset: 17:44765d7c06e0
820 820 | |\ \ \ parent: 12:86b91144a6e9
821 821 | | | | | parent: 16:3677d192927d
822 822 | | | | | user: test
823 823 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
824 824 | | | | | summary: (17) expand
825 825 | | | | |
826 826 | | o---+ changeset: 16:3677d192927d
827 827 | | | | | parent: 0:e6eb3150255d
828 828 | | |/ / parent: 1:6db2ef61d156
829 829 | | | | user: test
830 830 | | | | date: Thu Jan 01 00:00:16 1970 +0000
831 831 | | | | summary: (16) merge two known; one immediate right, one near right
832 832 | | | |
833 833 o | | | changeset: 15:1dda3f72782d
834 834 |\ \ \ \ parent: 13:22d8966a97e3
835 835 | | | | | parent: 14:8eac370358ef
836 836 | | | | | user: test
837 837 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
838 838 | | | | | summary: (15) expand
839 839 | | | | |
840 840 | o-----+ changeset: 14:8eac370358ef
841 841 | | | | | parent: 0:e6eb3150255d
842 842 | |/ / / parent: 12:86b91144a6e9
843 843 | | | | user: test
844 844 | | | | date: Thu Jan 01 00:00:14 1970 +0000
845 845 | | | | summary: (14) merge two known; one immediate right, one far right
846 846 | | | |
847 847 o | | | changeset: 13:22d8966a97e3
848 848 |\ \ \ \ parent: 9:7010c0af0a35
849 849 | | | | | parent: 11:832d76e6bdf2
850 850 | | | | | user: test
851 851 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
852 852 | | | | | summary: (13) expand
853 853 | | | | |
854 854 +---o | | changeset: 12:86b91144a6e9
855 855 | | |/ / parent: 1:6db2ef61d156
856 856 | | | | parent: 9:7010c0af0a35
857 857 | | | | user: test
858 858 | | | | date: Thu Jan 01 00:00:12 1970 +0000
859 859 | | | | summary: (12) merge two known; one immediate right, one far left
860 860 | | | |
861 861 | o | | changeset: 11:832d76e6bdf2
862 862 | |\ \ \ parent: 6:b105a072e251
863 863 | | | | | parent: 10:74c64d036d72
864 864 | | | | | user: test
865 865 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
866 866 | | | | | summary: (11) expand
867 867 | | | | |
868 868 | | o---+ changeset: 10:74c64d036d72
869 869 | | | | | parent: 0:e6eb3150255d
870 870 | |/ / / parent: 6:b105a072e251
871 871 | | | | user: test
872 872 | | | | date: Thu Jan 01 00:00:10 1970 +0000
873 873 | | | | summary: (10) merge two known; one immediate left, one near right
874 874 | | | |
875 875 o | | | changeset: 9:7010c0af0a35
876 876 |\ \ \ \ parent: 7:b632bb1b1224
877 877 | | | | | parent: 8:7a0b11f71937
878 878 | | | | | user: test
879 879 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
880 880 | | | | | summary: (9) expand
881 881 | | | | |
882 882 | o-----+ changeset: 8:7a0b11f71937
883 883 | | | | | parent: 0:e6eb3150255d
884 884 |/ / / / parent: 7:b632bb1b1224
885 885 | | | | user: test
886 886 | | | | date: Thu Jan 01 00:00:08 1970 +0000
887 887 | | | | summary: (8) merge two known; one immediate left, one far right
888 888 | | | |
889 889 o | | | changeset: 7:b632bb1b1224
890 890 |\ \ \ \ parent: 2:3d9a33b8d1e1
891 891 | | | | | parent: 5:4409d547b708
892 892 | | | | | user: test
893 893 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
894 894 | | | | | summary: (7) expand
895 895 | | | | |
896 896 +---o | | changeset: 6:b105a072e251
897 897 | |/ / / parent: 2:3d9a33b8d1e1
898 898 | | | | parent: 5:4409d547b708
899 899 | | | | user: test
900 900 | | | | date: Thu Jan 01 00:00:06 1970 +0000
901 901 | | | | summary: (6) merge two known; one immediate left, one far left
902 902 | | | |
903 903 | o | | changeset: 5:4409d547b708
904 904 | |\ \ \ parent: 3:27eef8ed80b4
905 905 | | | | | parent: 4:26a8bac39d9f
906 906 | | | | | user: test
907 907 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
908 908 | | | | | summary: (5) expand
909 909 | | | | |
910 910 | | o | | changeset: 4:26a8bac39d9f
911 911 | |/|/ / parent: 1:6db2ef61d156
912 912 | | | | parent: 3:27eef8ed80b4
913 913 | | | | user: test
914 914 | | | | date: Thu Jan 01 00:00:04 1970 +0000
915 915 | | | | summary: (4) merge two known; one immediate left, one immediate right
916 916 | | | |
917 917 | o | | changeset: 3:27eef8ed80b4
918 918 |/ / / user: test
919 919 | | | date: Thu Jan 01 00:00:03 1970 +0000
920 920 | | | summary: (3) collapse
921 921 | | |
922 922 o | | changeset: 2:3d9a33b8d1e1
923 923 |/ / user: test
924 924 | | date: Thu Jan 01 00:00:02 1970 +0000
925 925 | | summary: (2) collapse
926 926 | |
927 927 o | changeset: 1:6db2ef61d156
928 928 |/ user: test
929 929 | date: Thu Jan 01 00:00:01 1970 +0000
930 930 | summary: (1) collapse
931 931 |
932 932 o changeset: 0:e6eb3150255d
933 933 user: test
934 934 date: Thu Jan 01 00:00:00 1970 +0000
935 935 summary: (0) root
936 936
937 937
938 938
939 939 File glog per revset (only merges):
940 940
941 941 $ hg log -G -r 'file("a")' -m
942 942 o changeset: 32:d06dffa21a31
943 943 |\ parent: 27:886ed638191b
944 944 | | parent: 31:621d83e11f67
945 945 | | user: test
946 946 | | date: Thu Jan 01 00:00:32 1970 +0000
947 947 | | summary: (32) expand
948 948 | |
949 949 o | changeset: 31:621d83e11f67
950 950 |\| parent: 21:d42a756af44d
951 951 | | parent: 30:6e11cd4b648f
952 952 | | user: test
953 953 | | date: Thu Jan 01 00:00:31 1970 +0000
954 954 | | summary: (31) expand
955 955 | |
956 956 o | changeset: 30:6e11cd4b648f
957 957 |\ \ parent: 28:44ecd0b9ae99
958 958 | | | parent: 29:cd9bb2be7593
959 959 | | | user: test
960 960 | | | date: Thu Jan 01 00:00:30 1970 +0000
961 961 | | | summary: (30) expand
962 962 | | |
963 963 o | | changeset: 28:44ecd0b9ae99
964 964 |\ \ \ parent: 1:6db2ef61d156
965 965 | | | | parent: 26:7f25b6c2f0b9
966 966 | | | | user: test
967 967 | | | | date: Thu Jan 01 00:00:28 1970 +0000
968 968 | | | | summary: (28) merge zero known
969 969 | | | |
970 970 o | | | changeset: 26:7f25b6c2f0b9
971 971 |\ \ \ \ parent: 18:1aa84d96232a
972 972 | | | | | parent: 25:91da8ed57247
973 973 | | | | | user: test
974 974 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
975 975 | | | | | summary: (26) merge one known; far right
976 976 | | | | |
977 977 | o-----+ changeset: 25:91da8ed57247
978 978 | | | | | parent: 21:d42a756af44d
979 979 | | | | | parent: 24:a9c19a3d96b7
980 980 | | | | | user: test
981 981 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
982 982 | | | | | summary: (25) merge one known; far left
983 983 | | | | |
984 984 | o | | | changeset: 24:a9c19a3d96b7
985 985 | |\ \ \ \ parent: 0:e6eb3150255d
986 986 | | | | | | parent: 23:a01cddf0766d
987 987 | | | | | | user: test
988 988 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
989 989 | | | | | | summary: (24) merge one known; immediate right
990 990 | | | | | |
991 991 | o---+ | | changeset: 23:a01cddf0766d
992 992 | | | | | | parent: 1:6db2ef61d156
993 993 | | | | | | parent: 22:e0d9cccacb5d
994 994 | | | | | | user: test
995 995 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
996 996 | | | | | | summary: (23) merge one known; immediate left
997 997 | | | | | |
998 998 | o-------+ changeset: 22:e0d9cccacb5d
999 999 | | | | | | parent: 18:1aa84d96232a
1000 1000 |/ / / / / parent: 21:d42a756af44d
1001 1001 | | | | | user: test
1002 1002 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
1003 1003 | | | | | summary: (22) merge two known; one far left, one far right
1004 1004 | | | | |
1005 1005 | | | | o changeset: 21:d42a756af44d
1006 1006 | | | | |\ parent: 19:31ddc2c1573b
1007 1007 | | | | | | parent: 20:d30ed6450e32
1008 1008 | | | | | | user: test
1009 1009 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
1010 1010 | | | | | | summary: (21) expand
1011 1011 | | | | | |
1012 1012 +-+-------o changeset: 20:d30ed6450e32
1013 1013 | | | | | parent: 0:e6eb3150255d
1014 1014 | | | | | parent: 18:1aa84d96232a
1015 1015 | | | | | user: test
1016 1016 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
1017 1017 | | | | | summary: (20) merge two known; two far right
1018 1018 | | | | |
1019 1019 | | | | o changeset: 19:31ddc2c1573b
1020 1020 | | | | |\ parent: 15:1dda3f72782d
1021 1021 | | | | | | parent: 17:44765d7c06e0
1022 1022 | | | | | | user: test
1023 1023 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
1024 1024 | | | | | | summary: (19) expand
1025 1025 | | | | | |
1026 1026 o---+---+ | changeset: 18:1aa84d96232a
1027 1027 | | | | | parent: 1:6db2ef61d156
1028 1028 / / / / / parent: 15:1dda3f72782d
1029 1029 | | | | | user: test
1030 1030 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
1031 1031 | | | | | summary: (18) merge two known; two far left
1032 1032 | | | | |
1033 1033 | | | | o changeset: 17:44765d7c06e0
1034 1034 | | | | |\ parent: 12:86b91144a6e9
1035 1035 | | | | | | parent: 16:3677d192927d
1036 1036 | | | | | | user: test
1037 1037 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
1038 1038 | | | | | | summary: (17) expand
1039 1039 | | | | | |
1040 1040 +-+-------o changeset: 16:3677d192927d
1041 1041 | | | | | parent: 0:e6eb3150255d
1042 1042 | | | | | parent: 1:6db2ef61d156
1043 1043 | | | | | user: test
1044 1044 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
1045 1045 | | | | | summary: (16) merge two known; one immediate right, one near right
1046 1046 | | | | |
1047 1047 | | | o | changeset: 15:1dda3f72782d
1048 1048 | | | |\ \ parent: 13:22d8966a97e3
1049 1049 | | | | | | parent: 14:8eac370358ef
1050 1050 | | | | | | user: test
1051 1051 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
1052 1052 | | | | | | summary: (15) expand
1053 1053 | | | | | |
1054 1054 +-------o | changeset: 14:8eac370358ef
1055 1055 | | | | |/ parent: 0:e6eb3150255d
1056 1056 | | | | | parent: 12:86b91144a6e9
1057 1057 | | | | | user: test
1058 1058 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
1059 1059 | | | | | summary: (14) merge two known; one immediate right, one far right
1060 1060 | | | | |
1061 1061 | | | o | changeset: 13:22d8966a97e3
1062 1062 | | | |\ \ parent: 9:7010c0af0a35
1063 1063 | | | | | | parent: 11:832d76e6bdf2
1064 1064 | | | | | | user: test
1065 1065 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
1066 1066 | | | | | | summary: (13) expand
1067 1067 | | | | | |
1068 1068 | +---+---o changeset: 12:86b91144a6e9
1069 1069 | | | | | parent: 1:6db2ef61d156
1070 1070 | | | | | parent: 9:7010c0af0a35
1071 1071 | | | | | user: test
1072 1072 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
1073 1073 | | | | | summary: (12) merge two known; one immediate right, one far left
1074 1074 | | | | |
1075 1075 | | | | o changeset: 11:832d76e6bdf2
1076 1076 | | | | |\ parent: 6:b105a072e251
1077 1077 | | | | | | parent: 10:74c64d036d72
1078 1078 | | | | | | user: test
1079 1079 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
1080 1080 | | | | | | summary: (11) expand
1081 1081 | | | | | |
1082 1082 +---------o changeset: 10:74c64d036d72
1083 1083 | | | | |/ parent: 0:e6eb3150255d
1084 1084 | | | | | parent: 6:b105a072e251
1085 1085 | | | | | user: test
1086 1086 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
1087 1087 | | | | | summary: (10) merge two known; one immediate left, one near right
1088 1088 | | | | |
1089 1089 | | | o | changeset: 9:7010c0af0a35
1090 1090 | | | |\ \ parent: 7:b632bb1b1224
1091 1091 | | | | | | parent: 8:7a0b11f71937
1092 1092 | | | | | | user: test
1093 1093 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
1094 1094 | | | | | | summary: (9) expand
1095 1095 | | | | | |
1096 1096 +-------o | changeset: 8:7a0b11f71937
1097 1097 | | | |/ / parent: 0:e6eb3150255d
1098 1098 | | | | | parent: 7:b632bb1b1224
1099 1099 | | | | | user: test
1100 1100 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
1101 1101 | | | | | summary: (8) merge two known; one immediate left, one far right
1102 1102 | | | | |
1103 1103 | | | o | changeset: 7:b632bb1b1224
1104 1104 | | | |\ \ parent: 2:3d9a33b8d1e1
1105 1105 | | | | | | parent: 5:4409d547b708
1106 1106 | | | | | | user: test
1107 1107 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
1108 1108 | | | | | | summary: (7) expand
1109 1109 | | | | | |
1110 1110 | | | +---o changeset: 6:b105a072e251
1111 1111 | | | | |/ parent: 2:3d9a33b8d1e1
1112 1112 | | | | | parent: 5:4409d547b708
1113 1113 | | | | | user: test
1114 1114 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
1115 1115 | | | | | summary: (6) merge two known; one immediate left, one far left
1116 1116 | | | | |
1117 1117 | | | o | changeset: 5:4409d547b708
1118 1118 | | | |\ \ parent: 3:27eef8ed80b4
1119 1119 | | | | | | parent: 4:26a8bac39d9f
1120 1120 | | | | | | user: test
1121 1121 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
1122 1122 | | | | | | summary: (5) expand
1123 1123 | | | | | |
1124 1124 | +---o | | changeset: 4:26a8bac39d9f
1125 1125 | | | |/ / parent: 1:6db2ef61d156
1126 1126 | | | | | parent: 3:27eef8ed80b4
1127 1127 | | | | | user: test
1128 1128 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
1129 1129 | | | | | summary: (4) merge two known; one immediate left, one immediate right
1130 1130 | | | | |
1131 1131
1132 1132
1133 1133 Empty revision range - display nothing:
1134 1134 $ hg glog -r 1..0
1135 1135
1136 1136 $ cd ..
1137 1137
1138 1138 #if no-outer-repo
1139 1139
1140 1140 From outer space:
1141 1141 $ hg glog -l1 repo
1142 1142 @ changeset: 34:fea3ac5810e0
1143 1143 | tag: tip
1144 1144 | parent: 32:d06dffa21a31
1145 1145 | user: test
1146 1146 | date: Thu Jan 01 00:00:34 1970 +0000
1147 1147 | summary: (34) head
1148 1148 |
1149 1149 $ hg glog -l1 repo/a
1150 1150 @ changeset: 34:fea3ac5810e0
1151 1151 | tag: tip
1152 1152 | parent: 32:d06dffa21a31
1153 1153 | user: test
1154 1154 | date: Thu Jan 01 00:00:34 1970 +0000
1155 1155 | summary: (34) head
1156 1156 |
1157 1157 $ hg glog -l1 repo/missing
1158 1158
1159 1159 #endif
1160 1160
1161 1161 File log with revs != cset revs:
1162 1162 $ hg init flog
1163 1163 $ cd flog
1164 1164 $ echo one >one
1165 1165 $ hg add one
1166 1166 $ hg commit -mone
1167 1167 $ echo two >two
1168 1168 $ hg add two
1169 1169 $ hg commit -mtwo
1170 1170 $ echo more >two
1171 1171 $ hg commit -mmore
1172 1172 $ hg glog two
1173 1173 @ changeset: 2:12c28321755b
1174 1174 | tag: tip
1175 1175 | user: test
1176 1176 | date: Thu Jan 01 00:00:00 1970 +0000
1177 1177 | summary: more
1178 1178 |
1179 1179 o changeset: 1:5ac72c0599bf
1180 1180 | user: test
1181 1181 | date: Thu Jan 01 00:00:00 1970 +0000
1182 1182 | summary: two
1183 1183 |
1184 1184
1185 1185 Issue1896: File log with explicit style
1186 1186 $ hg glog --style=default one
1187 1187 o changeset: 0:3d578b4a1f53
1188 1188 user: test
1189 1189 date: Thu Jan 01 00:00:00 1970 +0000
1190 1190 summary: one
1191 1191
1192 1192 Issue2395: glog --style header and footer
1193 1193 $ hg glog --style=xml one
1194 1194 <?xml version="1.0"?>
1195 1195 <log>
1196 1196 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1197 1197 <author email="test">test</author>
1198 1198 <date>1970-01-01T00:00:00+00:00</date>
1199 1199 <msg xml:space="preserve">one</msg>
1200 1200 </logentry>
1201 1201 </log>
1202 1202
1203 1203 $ cd ..
1204 1204
1205 1205 Incoming and outgoing:
1206 1206
1207 1207 $ hg clone -U -r31 repo repo2
1208 1208 adding changesets
1209 1209 adding manifests
1210 1210 adding file changes
1211 1211 added 31 changesets with 31 changes to 1 files
1212 1212 $ cd repo2
1213 1213
1214 1214 $ hg incoming --graph ../repo
1215 1215 comparing with ../repo
1216 1216 searching for changes
1217 1217 o changeset: 34:fea3ac5810e0
1218 1218 | tag: tip
1219 1219 | parent: 32:d06dffa21a31
1220 1220 | user: test
1221 1221 | date: Thu Jan 01 00:00:34 1970 +0000
1222 1222 | summary: (34) head
1223 1223 |
1224 1224 | o changeset: 33:68608f5145f9
1225 1225 | parent: 18:1aa84d96232a
1226 1226 | user: test
1227 1227 | date: Thu Jan 01 00:00:33 1970 +0000
1228 1228 | summary: (33) head
1229 1229 |
1230 1230 o changeset: 32:d06dffa21a31
1231 1231 | parent: 27:886ed638191b
1232 1232 | parent: 31:621d83e11f67
1233 1233 | user: test
1234 1234 | date: Thu Jan 01 00:00:32 1970 +0000
1235 1235 | summary: (32) expand
1236 1236 |
1237 1237 o changeset: 27:886ed638191b
1238 1238 parent: 21:d42a756af44d
1239 1239 user: test
1240 1240 date: Thu Jan 01 00:00:27 1970 +0000
1241 1241 summary: (27) collapse
1242 1242
1243 1243 $ cd ..
1244 1244
1245 1245 $ hg -R repo outgoing --graph repo2
1246 1246 comparing with repo2
1247 1247 searching for changes
1248 1248 @ changeset: 34:fea3ac5810e0
1249 1249 | tag: tip
1250 1250 | parent: 32:d06dffa21a31
1251 1251 | user: test
1252 1252 | date: Thu Jan 01 00:00:34 1970 +0000
1253 1253 | summary: (34) head
1254 1254 |
1255 1255 | o changeset: 33:68608f5145f9
1256 1256 | parent: 18:1aa84d96232a
1257 1257 | user: test
1258 1258 | date: Thu Jan 01 00:00:33 1970 +0000
1259 1259 | summary: (33) head
1260 1260 |
1261 1261 o changeset: 32:d06dffa21a31
1262 1262 | parent: 27:886ed638191b
1263 1263 | parent: 31:621d83e11f67
1264 1264 | user: test
1265 1265 | date: Thu Jan 01 00:00:32 1970 +0000
1266 1266 | summary: (32) expand
1267 1267 |
1268 1268 o changeset: 27:886ed638191b
1269 1269 parent: 21:d42a756af44d
1270 1270 user: test
1271 1271 date: Thu Jan 01 00:00:27 1970 +0000
1272 1272 summary: (27) collapse
1273 1273
1274 1274
1275 1275 File + limit with revs != cset revs:
1276 1276 $ cd repo
1277 1277 $ touch b
1278 1278 $ hg ci -Aqm0
1279 1279 $ hg glog -l2 a
1280 1280 o changeset: 34:fea3ac5810e0
1281 1281 | parent: 32:d06dffa21a31
1282 1282 | user: test
1283 1283 | date: Thu Jan 01 00:00:34 1970 +0000
1284 1284 | summary: (34) head
1285 1285 |
1286 1286 | o changeset: 33:68608f5145f9
1287 1287 | | parent: 18:1aa84d96232a
1288 1288 | | user: test
1289 1289 | | date: Thu Jan 01 00:00:33 1970 +0000
1290 1290 | | summary: (33) head
1291 1291 | |
1292 1292
1293 1293 File + limit + -ra:b, (b - a) < limit:
1294 1294 $ hg glog -l3000 -r32:tip a
1295 1295 o changeset: 34:fea3ac5810e0
1296 1296 | parent: 32:d06dffa21a31
1297 1297 | user: test
1298 1298 | date: Thu Jan 01 00:00:34 1970 +0000
1299 1299 | summary: (34) head
1300 1300 |
1301 1301 | o changeset: 33:68608f5145f9
1302 1302 | | parent: 18:1aa84d96232a
1303 1303 | | user: test
1304 1304 | | date: Thu Jan 01 00:00:33 1970 +0000
1305 1305 | | summary: (33) head
1306 1306 | |
1307 1307 o | changeset: 32:d06dffa21a31
1308 1308 |\ \ parent: 27:886ed638191b
1309 1309 | | | parent: 31:621d83e11f67
1310 1310 | | | user: test
1311 1311 | | | date: Thu Jan 01 00:00:32 1970 +0000
1312 1312 | | | summary: (32) expand
1313 1313 | | |
1314 1314
1315 1315 Point out a common and an uncommon unshown parent
1316 1316
1317 1317 $ hg glog -r 'rev(8) or rev(9)'
1318 1318 o changeset: 9:7010c0af0a35
1319 1319 |\ parent: 7:b632bb1b1224
1320 1320 | | parent: 8:7a0b11f71937
1321 1321 | | user: test
1322 1322 | | date: Thu Jan 01 00:00:09 1970 +0000
1323 1323 | | summary: (9) expand
1324 1324 | |
1325 1325 o | changeset: 8:7a0b11f71937
1326 1326 |\| parent: 0:e6eb3150255d
1327 1327 | | parent: 7:b632bb1b1224
1328 1328 | | user: test
1329 1329 | | date: Thu Jan 01 00:00:08 1970 +0000
1330 1330 | | summary: (8) merge two known; one immediate left, one far right
1331 1331 | |
1332 1332
1333 1333 File + limit + -ra:b, b < tip:
1334 1334
1335 1335 $ hg glog -l1 -r32:34 a
1336 1336 o changeset: 34:fea3ac5810e0
1337 1337 | parent: 32:d06dffa21a31
1338 1338 | user: test
1339 1339 | date: Thu Jan 01 00:00:34 1970 +0000
1340 1340 | summary: (34) head
1341 1341 |
1342 1342
1343 1343 file(File) + limit + -ra:b, b < tip:
1344 1344
1345 1345 $ hg glog -l1 -r32:34 -r 'file("a")'
1346 1346 o changeset: 34:fea3ac5810e0
1347 1347 | parent: 32:d06dffa21a31
1348 1348 | user: test
1349 1349 | date: Thu Jan 01 00:00:34 1970 +0000
1350 1350 | summary: (34) head
1351 1351 |
1352 1352
1353 1353 limit(file(File) and a::b), b < tip:
1354 1354
1355 1355 $ hg glog -r 'limit(file("a") and 32::34, 1)'
1356 1356 o changeset: 32:d06dffa21a31
1357 1357 |\ parent: 27:886ed638191b
1358 1358 | | parent: 31:621d83e11f67
1359 1359 | | user: test
1360 1360 | | date: Thu Jan 01 00:00:32 1970 +0000
1361 1361 | | summary: (32) expand
1362 1362 | |
1363 1363
1364 1364 File + limit + -ra:b, b < tip:
1365 1365
1366 1366 $ hg glog -r 'limit(file("a") and 34::32, 1)'
1367 1367
1368 1368 File + limit + -ra:b, b < tip, (b - a) < limit:
1369 1369
1370 1370 $ hg glog -l10 -r33:34 a
1371 1371 o changeset: 34:fea3ac5810e0
1372 1372 | parent: 32:d06dffa21a31
1373 1373 | user: test
1374 1374 | date: Thu Jan 01 00:00:34 1970 +0000
1375 1375 | summary: (34) head
1376 1376 |
1377 1377 | o changeset: 33:68608f5145f9
1378 1378 | | parent: 18:1aa84d96232a
1379 1379 | | user: test
1380 1380 | | date: Thu Jan 01 00:00:33 1970 +0000
1381 1381 | | summary: (33) head
1382 1382 | |
1383 1383
1384 1384 Do not crash or produce strange graphs if history is buggy
1385 1385
1386 1386 $ hg branch branch
1387 1387 marked working directory as branch branch
1388 1388 (branches are permanent and global, did you want a bookmark?)
1389 1389 $ commit 36 "buggy merge: identical parents" 35 35
1390 1390 $ hg glog -l5
1391 1391 @ changeset: 36:08a19a744424
1392 1392 | branch: branch
1393 1393 | tag: tip
1394 1394 | parent: 35:9159c3644c5e
1395 1395 | parent: 35:9159c3644c5e
1396 1396 | user: test
1397 1397 | date: Thu Jan 01 00:00:36 1970 +0000
1398 1398 | summary: (36) buggy merge: identical parents
1399 1399 |
1400 1400 o changeset: 35:9159c3644c5e
1401 1401 | user: test
1402 1402 | date: Thu Jan 01 00:00:00 1970 +0000
1403 1403 | summary: 0
1404 1404 |
1405 1405 o changeset: 34:fea3ac5810e0
1406 1406 | parent: 32:d06dffa21a31
1407 1407 | user: test
1408 1408 | date: Thu Jan 01 00:00:34 1970 +0000
1409 1409 | summary: (34) head
1410 1410 |
1411 1411 | o changeset: 33:68608f5145f9
1412 1412 | | parent: 18:1aa84d96232a
1413 1413 | | user: test
1414 1414 | | date: Thu Jan 01 00:00:33 1970 +0000
1415 1415 | | summary: (33) head
1416 1416 | |
1417 1417 o | changeset: 32:d06dffa21a31
1418 1418 |\ \ parent: 27:886ed638191b
1419 1419 | | | parent: 31:621d83e11f67
1420 1420 | | | user: test
1421 1421 | | | date: Thu Jan 01 00:00:32 1970 +0000
1422 1422 | | | summary: (32) expand
1423 1423 | | |
1424 1424
1425 1425 Test log -G options
1426 1426
1427 1427 $ testlog() {
1428 1428 > hg log -G --print-revset "$@"
1429 1429 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1430 1430 > | sed 's/.*nodetag/nodetag/' > log.nodes
1431 1431 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1432 1432 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1433 1433 > diff -u log.nodes glog.nodes | grep '^[-+@ ]' || :
1434 1434 > }
1435 1435
1436 1436 glog always reorders nodes which explains the difference with log
1437 1437
1438 1438 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1439 1439 ['27', '25', '21', '34', '32', '31']
1440 1440 []
1441 1441 --- log.nodes * (glob)
1442 1442 +++ glog.nodes * (glob)
1443 1443 @@ -1,6 +1,6 @@
1444 1444 -nodetag 27
1445 1445 -nodetag 25
1446 1446 -nodetag 21
1447 1447 nodetag 34
1448 1448 nodetag 32
1449 1449 nodetag 31
1450 1450 +nodetag 27
1451 1451 +nodetag 25
1452 1452 +nodetag 21
1453 1453 $ testlog -u test -u not-a-user
1454 1454 []
1455 1455 (group
1456 1456 (group
1457 1457 (or
1458 1458 (func
1459 1459 ('symbol', 'user')
1460 1460 ('string', 'test'))
1461 1461 (func
1462 1462 ('symbol', 'user')
1463 1463 ('string', 'not-a-user')))))
1464 1464 $ testlog -b not-a-branch
1465 1465 abort: unknown revision 'not-a-branch'!
1466 1466 abort: unknown revision 'not-a-branch'!
1467 1467 abort: unknown revision 'not-a-branch'!
1468 1468 $ testlog -b 35 -b 36 --only-branch branch
1469 1469 []
1470 1470 (group
1471 1471 (group
1472 1472 (or
1473 1473 (or
1474 1474 (func
1475 1475 ('symbol', 'branch')
1476 1476 ('string', 'default'))
1477 1477 (func
1478 1478 ('symbol', 'branch')
1479 1479 ('string', 'branch')))
1480 1480 (func
1481 1481 ('symbol', 'branch')
1482 1482 ('string', 'branch')))))
1483 1483 $ testlog -k expand -k merge
1484 1484 []
1485 1485 (group
1486 1486 (group
1487 1487 (or
1488 1488 (func
1489 1489 ('symbol', 'keyword')
1490 1490 ('string', 'expand'))
1491 1491 (func
1492 1492 ('symbol', 'keyword')
1493 1493 ('string', 'merge')))))
1494 1494 $ testlog --only-merges
1495 1495 []
1496 1496 (group
1497 1497 (func
1498 1498 ('symbol', 'merge')
1499 1499 None))
1500 1500 $ testlog --no-merges
1501 1501 []
1502 1502 (group
1503 1503 (not
1504 1504 (func
1505 1505 ('symbol', 'merge')
1506 1506 None)))
1507 1507 $ testlog --date '2 0 to 4 0'
1508 1508 []
1509 1509 (group
1510 1510 (func
1511 1511 ('symbol', 'date')
1512 1512 ('string', '2 0 to 4 0')))
1513 1513 $ hg log -G -d 'brace ) in a date'
1514 1514 abort: invalid date: 'brace ) in a date'
1515 1515 [255]
1516 1516 $ testlog --prune 31 --prune 32
1517 1517 []
1518 1518 (group
1519 1519 (group
1520 1520 (and
1521 1521 (not
1522 1522 (group
1523 1523 (or
1524 1524 ('string', '31')
1525 1525 (func
1526 1526 ('symbol', 'ancestors')
1527 1527 ('string', '31')))))
1528 1528 (not
1529 1529 (group
1530 1530 (or
1531 1531 ('string', '32')
1532 1532 (func
1533 1533 ('symbol', 'ancestors')
1534 1534 ('string', '32'))))))))
1535 1535
1536 1536 Dedicated repo for --follow and paths filtering. The g is crafted to
1537 1537 have 2 filelog topological heads in a linear changeset graph.
1538 1538
1539 1539 $ cd ..
1540 1540 $ hg init follow
1541 1541 $ cd follow
1542 1542 $ testlog --follow
1543 1543 []
1544 1544 []
1545 1545 $ echo a > a
1546 1546 $ echo aa > aa
1547 1547 $ echo f > f
1548 1548 $ hg ci -Am "add a" a aa f
1549 1549 $ hg cp a b
1550 1550 $ hg cp f g
1551 1551 $ hg ci -m "copy a b"
1552 1552 $ mkdir dir
1553 1553 $ hg mv b dir
1554 1554 $ echo g >> g
1555 1555 $ echo f >> f
1556 1556 $ hg ci -m "mv b dir/b"
1557 1557 $ hg mv a b
1558 1558 $ hg cp -f f g
1559 1559 $ echo a > d
1560 1560 $ hg add d
1561 1561 $ hg ci -m "mv a b; add d"
1562 1562 $ hg mv dir/b e
1563 1563 $ hg ci -m "mv dir/b e"
1564 1564 $ hg glog --template '({rev}) {desc|firstline}\n'
1565 1565 @ (4) mv dir/b e
1566 1566 |
1567 1567 o (3) mv a b; add d
1568 1568 |
1569 1569 o (2) mv b dir/b
1570 1570 |
1571 1571 o (1) copy a b
1572 1572 |
1573 1573 o (0) add a
1574 1574
1575 1575
1576 1576 $ testlog a
1577 1577 []
1578 1578 (group
1579 1579 (group
1580 1580 (func
1581 1581 ('symbol', 'filelog')
1582 1582 ('string', 'a'))))
1583 1583 $ testlog a b
1584 1584 []
1585 1585 (group
1586 1586 (group
1587 1587 (or
1588 1588 (func
1589 1589 ('symbol', 'filelog')
1590 1590 ('string', 'a'))
1591 1591 (func
1592 1592 ('symbol', 'filelog')
1593 1593 ('string', 'b')))))
1594 1594
1595 1595 Test falling back to slow path for non-existing files
1596 1596
1597 1597 $ testlog a c
1598 1598 []
1599 1599 (group
1600 1600 (func
1601 1601 ('symbol', '_matchfiles')
1602 1602 (list
1603 1603 (list
1604 1604 (list
1605 1605 ('string', 'r:')
1606 1606 ('string', 'd:relpath'))
1607 1607 ('string', 'p:a'))
1608 1608 ('string', 'p:c'))))
1609 1609
1610 1610 Test multiple --include/--exclude/paths
1611 1611
1612 1612 $ testlog --include a --include e --exclude b --exclude e a e
1613 1613 []
1614 1614 (group
1615 1615 (func
1616 1616 ('symbol', '_matchfiles')
1617 1617 (list
1618 1618 (list
1619 1619 (list
1620 1620 (list
1621 1621 (list
1622 1622 (list
1623 1623 (list
1624 1624 ('string', 'r:')
1625 1625 ('string', 'd:relpath'))
1626 1626 ('string', 'p:a'))
1627 1627 ('string', 'p:e'))
1628 1628 ('string', 'i:a'))
1629 1629 ('string', 'i:e'))
1630 1630 ('string', 'x:b'))
1631 1631 ('string', 'x:e'))))
1632 1632
1633 1633 Test glob expansion of pats
1634 1634
1635 1635 $ expandglobs=`python -c "import mercurial.util; \
1636 1636 > print mercurial.util.expandglobs and 'true' or 'false'"`
1637 1637 $ if [ $expandglobs = "true" ]; then
1638 1638 > testlog 'a*';
1639 1639 > else
1640 1640 > testlog a*;
1641 1641 > fi;
1642 1642 []
1643 1643 (group
1644 1644 (group
1645 1645 (func
1646 1646 ('symbol', 'filelog')
1647 1647 ('string', 'aa'))))
1648 1648
1649 1649 Test --follow on a directory
1650 1650
1651 1651 $ testlog -f dir
1652 1652 abort: cannot follow file not in parent revision: "dir"
1653 1653 abort: cannot follow file not in parent revision: "dir"
1654 1654 abort: cannot follow file not in parent revision: "dir"
1655 1655
1656 1656 Test --follow on file not in parent revision
1657 1657
1658 1658 $ testlog -f a
1659 1659 abort: cannot follow file not in parent revision: "a"
1660 1660 abort: cannot follow file not in parent revision: "a"
1661 1661 abort: cannot follow file not in parent revision: "a"
1662 1662
1663 1663 Test --follow and patterns
1664 1664
1665 1665 $ testlog -f 'glob:*'
1666 1666 abort: can only follow copies/renames for explicit filenames
1667 1667 abort: can only follow copies/renames for explicit filenames
1668 1668 abort: can only follow copies/renames for explicit filenames
1669 1669
1670 1670 Test --follow on a single rename
1671 1671
1672 1672 $ hg up -q 2
1673 1673 $ testlog -f a
1674 1674 []
1675 1675 (group
1676 1676 (group
1677 1677 (func
1678 1678 ('symbol', 'follow')
1679 1679 ('string', 'a'))))
1680 1680
1681 1681 Test --follow and multiple renames
1682 1682
1683 1683 $ hg up -q tip
1684 1684 $ testlog -f e
1685 1685 []
1686 1686 (group
1687 1687 (group
1688 1688 (func
1689 1689 ('symbol', 'follow')
1690 1690 ('string', 'e'))))
1691 1691
1692 1692 Test --follow and multiple filelog heads
1693 1693
1694 1694 $ hg up -q 2
1695 1695 $ testlog -f g
1696 1696 []
1697 1697 (group
1698 1698 (group
1699 1699 (func
1700 1700 ('symbol', 'follow')
1701 1701 ('string', 'g'))))
1702 1702 $ cat log.nodes
1703 1703 nodetag 2
1704 1704 nodetag 1
1705 1705 nodetag 0
1706 1706 $ hg up -q tip
1707 1707 $ testlog -f g
1708 1708 []
1709 1709 (group
1710 1710 (group
1711 1711 (func
1712 1712 ('symbol', 'follow')
1713 1713 ('string', 'g'))))
1714 1714 $ cat log.nodes
1715 1715 nodetag 3
1716 1716 nodetag 2
1717 1717 nodetag 0
1718 1718
1719 1719 Test --follow and multiple files
1720 1720
1721 1721 $ testlog -f g e
1722 1722 []
1723 1723 (group
1724 1724 (group
1725 1725 (or
1726 1726 (func
1727 1727 ('symbol', 'follow')
1728 1728 ('string', 'g'))
1729 1729 (func
1730 1730 ('symbol', 'follow')
1731 1731 ('string', 'e')))))
1732 1732 $ cat log.nodes
1733 1733 nodetag 4
1734 1734 nodetag 3
1735 1735 nodetag 2
1736 1736 nodetag 1
1737 1737 nodetag 0
1738 1738
1739 1739 Test --follow-first
1740 1740
1741 1741 $ hg up -q 3
1742 1742 $ echo ee > e
1743 1743 $ hg ci -Am "add another e" e
1744 1744 created new head
1745 1745 $ hg merge --tool internal:other 4
1746 1746 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1747 1747 (branch merge, don't forget to commit)
1748 1748 $ echo merge > e
1749 1749 $ hg ci -m "merge 5 and 4"
1750 1750 $ testlog --follow-first
1751 1751 []
1752 1752 (group
1753 1753 (func
1754 1754 ('symbol', '_firstancestors')
1755 1755 ('symbol', '6')))
1756 1756
1757 1757 Cannot compare with log --follow-first FILE as it never worked
1758 1758
1759 1759 $ hg log -G --print-revset --follow-first e
1760 1760 []
1761 1761 (group
1762 1762 (group
1763 1763 (func
1764 1764 ('symbol', '_followfirst')
1765 1765 ('string', 'e'))))
1766 1766 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1767 1767 @ 6 merge 5 and 4
1768 1768 |\
1769 1769 o | 5 add another e
1770 1770 | |
1771 1771
1772 1772 Test --copies
1773 1773
1774 1774 $ hg log -G --copies --template "{rev} {desc|firstline} \
1775 1775 > copies: {file_copies_switch}\n"
1776 1776 @ 6 merge 5 and 4 copies:
1777 1777 |\
1778 1778 | o 5 add another e copies:
1779 1779 | |
1780 1780 o | 4 mv dir/b e copies: e (dir/b)
1781 1781 |/
1782 1782 o 3 mv a b; add d copies: b (a)g (f)
1783 1783 |
1784 1784 o 2 mv b dir/b copies: dir/b (b)
1785 1785 |
1786 1786 o 1 copy a b copies: b (a)g (f)
1787 1787 |
1788 1788 o 0 add a copies:
1789 1789
1790 1790 Test "set:..." and parent revision
1791 1791
1792 1792 $ hg up -q 4
1793 1793 $ testlog "set:copied()"
1794 1794 []
1795 1795 (group
1796 1796 (func
1797 1797 ('symbol', '_matchfiles')
1798 1798 (list
1799 1799 (list
1800 1800 ('string', 'r:')
1801 1801 ('string', 'd:relpath'))
1802 1802 ('string', 'p:set:copied()'))))
1803 1803 $ testlog --include "set:copied()"
1804 1804 []
1805 1805 (group
1806 1806 (func
1807 1807 ('symbol', '_matchfiles')
1808 1808 (list
1809 1809 (list
1810 1810 ('string', 'r:')
1811 1811 ('string', 'd:relpath'))
1812 1812 ('string', 'i:set:copied()'))))
1813 1813 $ testlog -r "sort(file('set:copied()'), -rev)"
1814 1814 ["sort(file('set:copied()'), -rev)"]
1815 1815 []
1816 1816
1817 1817 Test --removed
1818 1818
1819 1819 $ testlog --removed
1820 1820 []
1821 1821 []
1822 1822 $ testlog --removed a
1823 1823 []
1824 1824 (group
1825 1825 (func
1826 1826 ('symbol', '_matchfiles')
1827 1827 (list
1828 1828 (list
1829 1829 ('string', 'r:')
1830 1830 ('string', 'd:relpath'))
1831 1831 ('string', 'p:a'))))
1832 1832 $ testlog --removed --follow a
1833 1833 abort: can only follow copies/renames for explicit filenames
1834 1834 abort: can only follow copies/renames for explicit filenames
1835 1835 abort: can only follow copies/renames for explicit filenames
1836 1836
1837 1837 Test --patch and --stat with --follow and --follow-first
1838 1838
1839 1839 $ hg up -q 3
1840 1840 $ hg log -G --git --patch b
1841 1841 o changeset: 1:216d4c92cf98
1842 1842 | user: test
1843 1843 | date: Thu Jan 01 00:00:00 1970 +0000
1844 1844 | summary: copy a b
1845 1845 |
1846 1846 | diff --git a/a b/b
1847 1847 | copy from a
1848 1848 | copy to b
1849 1849 |
1850 1850
1851 1851 $ hg log -G --git --stat b
1852 1852 o changeset: 1:216d4c92cf98
1853 1853 | user: test
1854 1854 | date: Thu Jan 01 00:00:00 1970 +0000
1855 1855 | summary: copy a b
1856 1856 |
1857 1857 | a | 0
1858 1858 | 1 files changed, 0 insertions(+), 0 deletions(-)
1859 1859 |
1860 1860
1861 1861 $ hg log -G --git --patch --follow b
1862 1862 o changeset: 1:216d4c92cf98
1863 1863 | user: test
1864 1864 | date: Thu Jan 01 00:00:00 1970 +0000
1865 1865 | summary: copy a b
1866 1866 |
1867 1867 | diff --git a/a b/b
1868 1868 | copy from a
1869 1869 | copy to b
1870 1870 |
1871 1871 o changeset: 0:f8035bb17114
1872 1872 user: test
1873 1873 date: Thu Jan 01 00:00:00 1970 +0000
1874 1874 summary: add a
1875 1875
1876 1876 diff --git a/a b/a
1877 1877 new file mode 100644
1878 1878 --- /dev/null
1879 1879 +++ b/a
1880 1880 @@ -0,0 +1,1 @@
1881 1881 +a
1882 1882
1883 1883
1884 1884 $ hg log -G --git --stat --follow b
1885 1885 o changeset: 1:216d4c92cf98
1886 1886 | user: test
1887 1887 | date: Thu Jan 01 00:00:00 1970 +0000
1888 1888 | summary: copy a b
1889 1889 |
1890 1890 | a | 0
1891 1891 | 1 files changed, 0 insertions(+), 0 deletions(-)
1892 1892 |
1893 1893 o changeset: 0:f8035bb17114
1894 1894 user: test
1895 1895 date: Thu Jan 01 00:00:00 1970 +0000
1896 1896 summary: add a
1897 1897
1898 1898 a | 1 +
1899 1899 1 files changed, 1 insertions(+), 0 deletions(-)
1900 1900
1901 1901
1902 1902 $ hg up -q 6
1903 1903 $ hg log -G --git --patch --follow-first e
1904 1904 @ changeset: 6:fc281d8ff18d
1905 1905 |\ tag: tip
1906 1906 | | parent: 5:99b31f1c2782
1907 1907 | | parent: 4:17d952250a9d
1908 1908 | | user: test
1909 1909 | | date: Thu Jan 01 00:00:00 1970 +0000
1910 1910 | | summary: merge 5 and 4
1911 1911 | |
1912 1912 | | diff --git a/e b/e
1913 1913 | | --- a/e
1914 1914 | | +++ b/e
1915 1915 | | @@ -1,1 +1,1 @@
1916 1916 | | -ee
1917 1917 | | +merge
1918 1918 | |
1919 1919 o | changeset: 5:99b31f1c2782
1920 1920 | | parent: 3:5918b8d165d1
1921 1921 | | user: test
1922 1922 | | date: Thu Jan 01 00:00:00 1970 +0000
1923 1923 | | summary: add another e
1924 1924 | |
1925 1925 | | diff --git a/e b/e
1926 1926 | | new file mode 100644
1927 1927 | | --- /dev/null
1928 1928 | | +++ b/e
1929 1929 | | @@ -0,0 +1,1 @@
1930 1930 | | +ee
1931 1931 | |
1932 1932
1933 1933 Test old-style --rev
1934 1934
1935 1935 $ hg tag 'foo-bar'
1936 1936 $ testlog -r 'foo-bar'
1937 1937 ['foo-bar']
1938 1938 []
1939 1939
1940 1940 Test --follow and forward --rev
1941 1941
1942 1942 $ hg up -q 6
1943 1943 $ echo g > g
1944 1944 $ hg ci -Am 'add g' g
1945 1945 created new head
1946 1946 $ hg up -q 2
1947 1947 $ hg log -G --template "{rev} {desc|firstline}\n"
1948 1948 o 8 add g
1949 1949 |
1950 1950 | o 7 Added tag foo-bar for changeset fc281d8ff18d
1951 1951 |/
1952 1952 o 6 merge 5 and 4
1953 1953 |\
1954 1954 | o 5 add another e
1955 1955 | |
1956 1956 o | 4 mv dir/b e
1957 1957 |/
1958 1958 o 3 mv a b; add d
1959 1959 |
1960 1960 @ 2 mv b dir/b
1961 1961 |
1962 1962 o 1 copy a b
1963 1963 |
1964 1964 o 0 add a
1965 1965
1966 1966 $ testlog --follow -r6 -r8 -r5 -r7 -r4
1967 1967 ['6', '8', '5', '7', '4']
1968 1968 (group
1969 1969 (func
1970 1970 ('symbol', 'descendants')
1971 1971 ('symbol', '6')))
1972 1972 --- log.nodes * (glob)
1973 1973 +++ glog.nodes * (glob)
1974 1974 @@ -1,3 +1,3 @@
1975 1975 -nodetag 6
1976 1976 nodetag 8
1977 1977 nodetag 7
1978 1978 +nodetag 6
1979 1979
1980 1980 Test --follow-first and forward --rev
1981 1981
1982 1982 $ testlog --follow-first -r6 -r8 -r5 -r7 -r4
1983 1983 ['6', '8', '5', '7', '4']
1984 1984 (group
1985 1985 (func
1986 1986 ('symbol', '_firstdescendants')
1987 1987 ('symbol', '6')))
1988 1988 --- log.nodes * (glob)
1989 1989 +++ glog.nodes * (glob)
1990 1990 @@ -1,3 +1,3 @@
1991 1991 -nodetag 6
1992 1992 nodetag 8
1993 1993 nodetag 7
1994 1994 +nodetag 6
1995 1995
1996 1996 Test --follow and backward --rev
1997 1997
1998 1998 $ testlog --follow -r6 -r5 -r7 -r8 -r4
1999 1999 ['6', '5', '7', '8', '4']
2000 2000 (group
2001 2001 (func
2002 2002 ('symbol', 'ancestors')
2003 2003 ('symbol', '6')))
2004 2004
2005 2005 Test --follow-first and backward --rev
2006 2006
2007 2007 $ testlog --follow-first -r6 -r5 -r7 -r8 -r4
2008 2008 ['6', '5', '7', '8', '4']
2009 2009 (group
2010 2010 (func
2011 2011 ('symbol', '_firstancestors')
2012 2012 ('symbol', '6')))
2013 2013
2014 2014 Test subdir
2015 2015
2016 2016 $ hg up -q 3
2017 2017 $ cd dir
2018 2018 $ testlog .
2019 2019 []
2020 2020 (group
2021 2021 (func
2022 2022 ('symbol', '_matchfiles')
2023 2023 (list
2024 2024 (list
2025 2025 ('string', 'r:')
2026 2026 ('string', 'd:relpath'))
2027 2027 ('string', 'p:.'))))
2028 2028 $ testlog ../b
2029 2029 []
2030 2030 (group
2031 2031 (group
2032 2032 (func
2033 2033 ('symbol', 'filelog')
2034 2034 ('string', '../b'))))
2035 2035 $ testlog -f ../b
2036 2036 []
2037 2037 (group
2038 2038 (group
2039 2039 (func
2040 2040 ('symbol', 'follow')
2041 2041 ('string', 'b'))))
2042 2042 $ cd ..
2043 2043
2044 2044 Test --hidden
2045 2045 (enable obsolete)
2046 2046
2047 2047 $ cat > ${TESTTMP}/obs.py << EOF
2048 2048 > import mercurial.obsolete
2049 2049 > mercurial.obsolete._enabled = True
2050 2050 > EOF
2051 2051 $ echo '[extensions]' >> $HGRCPATH
2052 2052 $ echo "obs=${TESTTMP}/obs.py" >> $HGRCPATH
2053 2053
2054 2054 $ hg debugobsolete `hg id --debug -i -r 8`
2055 2055 $ testlog
2056 2056 []
2057 2057 []
2058 2058 $ testlog --hidden
2059 2059 []
2060 2060 []
2061 2061 $ hg glog --template '{rev} {desc}\n'
2062 2062 o 7 Added tag foo-bar for changeset fc281d8ff18d
2063 2063 |
2064 2064 o 6 merge 5 and 4
2065 2065 |\
2066 2066 | o 5 add another e
2067 2067 | |
2068 2068 o | 4 mv dir/b e
2069 2069 |/
2070 2070 @ 3 mv a b; add d
2071 2071 |
2072 2072 o 2 mv b dir/b
2073 2073 |
2074 2074 o 1 copy a b
2075 2075 |
2076 2076 o 0 add a
2077 2077
2078 2078
2079 2079 A template without trailing newline should do something sane
2080 2080
2081 2081 $ hg glog -r ::2 --template '{rev} {desc}'
2082 2082 o 2 mv b dir/b
2083 2083 |
2084 2084 o 1 copy a b
2085 2085 |
2086 2086 o 0 add a
2087 2087
2088 2088
2089 2089 Extra newlines must be preserved
2090 2090
2091 2091 $ hg glog -r ::2 --template '\n{rev} {desc}\n\n'
2092 2092 o
2093 2093 | 2 mv b dir/b
2094 2094 |
2095 2095 o
2096 2096 | 1 copy a b
2097 2097 |
2098 2098 o
2099 2099 0 add a
2100 2100
2101 2101
2102 2102 The almost-empty template should do something sane too ...
2103 2103
2104 2104 $ hg glog -r ::2 --template '\n'
2105 2105 o
2106 2106 |
2107 2107 o
2108 2108 |
2109 2109 o
2110 2110
2111 2111
2112 issue3772
2113
2114 $ hg glog -r :null
2115 o changeset: -1:000000000000
2116 user:
2117 date: Thu Jan 01 00:00:00 1970 +0000
2118
2119
2112 2120 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now