##// END OF EJS Templates
match: consider filesets as "anypats"...
Patrick Mezard -
r16182:bd12ef34 default
parent child Browse files
Show More
@@ -1,337 +1,337 b''
1 # match.py - filename matching
1 # match.py - filename matching
2 #
2 #
3 # Copyright 2008, 2009 Matt Mackall <mpm@selenic.com> and others
3 # Copyright 2008, 2009 Matt Mackall <mpm@selenic.com> and others
4 #
4 #
5 # This software may be used and distributed according to the terms of the
5 # This software may be used and distributed according to the terms of the
6 # GNU General Public License version 2 or any later version.
6 # GNU General Public License version 2 or any later version.
7
7
8 import re
8 import re
9 import scmutil, util, fileset
9 import scmutil, util, fileset
10 from i18n import _
10 from i18n import _
11
11
12 def _expandsets(pats, ctx):
12 def _expandsets(pats, ctx):
13 '''convert set: patterns into a list of files in the given context'''
13 '''convert set: patterns into a list of files in the given context'''
14 fset = set()
14 fset = set()
15 other = []
15 other = []
16
16
17 for kind, expr in pats:
17 for kind, expr in pats:
18 if kind == 'set':
18 if kind == 'set':
19 if not ctx:
19 if not ctx:
20 raise util.Abort("fileset expression with no context")
20 raise util.Abort("fileset expression with no context")
21 s = fileset.getfileset(ctx, expr)
21 s = fileset.getfileset(ctx, expr)
22 fset.update(s)
22 fset.update(s)
23 continue
23 continue
24 other.append((kind, expr))
24 other.append((kind, expr))
25 return fset, other
25 return fset, other
26
26
27 class match(object):
27 class match(object):
28 def __init__(self, root, cwd, patterns, include=[], exclude=[],
28 def __init__(self, root, cwd, patterns, include=[], exclude=[],
29 default='glob', exact=False, auditor=None, ctx=None):
29 default='glob', exact=False, auditor=None, ctx=None):
30 """build an object to match a set of file patterns
30 """build an object to match a set of file patterns
31
31
32 arguments:
32 arguments:
33 root - the canonical root of the tree you're matching against
33 root - the canonical root of the tree you're matching against
34 cwd - the current working directory, if relevant
34 cwd - the current working directory, if relevant
35 patterns - patterns to find
35 patterns - patterns to find
36 include - patterns to include
36 include - patterns to include
37 exclude - patterns to exclude
37 exclude - patterns to exclude
38 default - if a pattern in names has no explicit type, assume this one
38 default - if a pattern in names has no explicit type, assume this one
39 exact - patterns are actually literals
39 exact - patterns are actually literals
40
40
41 a pattern is one of:
41 a pattern is one of:
42 'glob:<glob>' - a glob relative to cwd
42 'glob:<glob>' - a glob relative to cwd
43 're:<regexp>' - a regular expression
43 're:<regexp>' - a regular expression
44 'path:<path>' - a path relative to canonroot
44 'path:<path>' - a path relative to canonroot
45 'relglob:<glob>' - an unrooted glob (*.c matches C files in all dirs)
45 'relglob:<glob>' - an unrooted glob (*.c matches C files in all dirs)
46 'relpath:<path>' - a path relative to cwd
46 'relpath:<path>' - a path relative to cwd
47 'relre:<regexp>' - a regexp that needn't match the start of a name
47 'relre:<regexp>' - a regexp that needn't match the start of a name
48 'set:<fileset>' - a fileset expression
48 'set:<fileset>' - a fileset expression
49 '<something>' - a pattern of the specified default type
49 '<something>' - a pattern of the specified default type
50 """
50 """
51
51
52 self._root = root
52 self._root = root
53 self._cwd = cwd
53 self._cwd = cwd
54 self._files = []
54 self._files = []
55 self._anypats = bool(include or exclude)
55 self._anypats = bool(include or exclude)
56 self._ctx = ctx
56 self._ctx = ctx
57
57
58 if include:
58 if include:
59 pats = _normalize(include, 'glob', root, cwd, auditor)
59 pats = _normalize(include, 'glob', root, cwd, auditor)
60 self.includepat, im = _buildmatch(ctx, pats, '(?:/|$)')
60 self.includepat, im = _buildmatch(ctx, pats, '(?:/|$)')
61 if exclude:
61 if exclude:
62 pats = _normalize(exclude, 'glob', root, cwd, auditor)
62 pats = _normalize(exclude, 'glob', root, cwd, auditor)
63 self.excludepat, em = _buildmatch(ctx, pats, '(?:/|$)')
63 self.excludepat, em = _buildmatch(ctx, pats, '(?:/|$)')
64 if exact:
64 if exact:
65 self._files = patterns
65 self._files = patterns
66 pm = self.exact
66 pm = self.exact
67 elif patterns:
67 elif patterns:
68 pats = _normalize(patterns, default, root, cwd, auditor)
68 pats = _normalize(patterns, default, root, cwd, auditor)
69 self._files = _roots(pats)
69 self._files = _roots(pats)
70 self._anypats = self._anypats or _anypats(pats)
70 self._anypats = self._anypats or _anypats(pats)
71 self.patternspat, pm = _buildmatch(ctx, pats, '$')
71 self.patternspat, pm = _buildmatch(ctx, pats, '$')
72
72
73 if patterns or exact:
73 if patterns or exact:
74 if include:
74 if include:
75 if exclude:
75 if exclude:
76 m = lambda f: im(f) and not em(f) and pm(f)
76 m = lambda f: im(f) and not em(f) and pm(f)
77 else:
77 else:
78 m = lambda f: im(f) and pm(f)
78 m = lambda f: im(f) and pm(f)
79 else:
79 else:
80 if exclude:
80 if exclude:
81 m = lambda f: not em(f) and pm(f)
81 m = lambda f: not em(f) and pm(f)
82 else:
82 else:
83 m = pm
83 m = pm
84 else:
84 else:
85 if include:
85 if include:
86 if exclude:
86 if exclude:
87 m = lambda f: im(f) and not em(f)
87 m = lambda f: im(f) and not em(f)
88 else:
88 else:
89 m = im
89 m = im
90 else:
90 else:
91 if exclude:
91 if exclude:
92 m = lambda f: not em(f)
92 m = lambda f: not em(f)
93 else:
93 else:
94 m = lambda f: True
94 m = lambda f: True
95
95
96 self.matchfn = m
96 self.matchfn = m
97 self._fmap = set(self._files)
97 self._fmap = set(self._files)
98
98
99 def __call__(self, fn):
99 def __call__(self, fn):
100 return self.matchfn(fn)
100 return self.matchfn(fn)
101 def __iter__(self):
101 def __iter__(self):
102 for f in self._files:
102 for f in self._files:
103 yield f
103 yield f
104 def bad(self, f, msg):
104 def bad(self, f, msg):
105 '''callback for each explicit file that can't be
105 '''callback for each explicit file that can't be
106 found/accessed, with an error message
106 found/accessed, with an error message
107 '''
107 '''
108 pass
108 pass
109 def dir(self, f):
109 def dir(self, f):
110 pass
110 pass
111 def missing(self, f):
111 def missing(self, f):
112 pass
112 pass
113 def exact(self, f):
113 def exact(self, f):
114 return f in self._fmap
114 return f in self._fmap
115 def rel(self, f):
115 def rel(self, f):
116 return util.pathto(self._root, self._cwd, f)
116 return util.pathto(self._root, self._cwd, f)
117 def files(self):
117 def files(self):
118 return self._files
118 return self._files
119 def anypats(self):
119 def anypats(self):
120 return self._anypats
120 return self._anypats
121
121
122 class exact(match):
122 class exact(match):
123 def __init__(self, root, cwd, files):
123 def __init__(self, root, cwd, files):
124 match.__init__(self, root, cwd, files, exact = True)
124 match.__init__(self, root, cwd, files, exact = True)
125
125
126 class always(match):
126 class always(match):
127 def __init__(self, root, cwd):
127 def __init__(self, root, cwd):
128 match.__init__(self, root, cwd, [])
128 match.__init__(self, root, cwd, [])
129
129
130 class narrowmatcher(match):
130 class narrowmatcher(match):
131 """Adapt a matcher to work on a subdirectory only.
131 """Adapt a matcher to work on a subdirectory only.
132
132
133 The paths are remapped to remove/insert the path as needed:
133 The paths are remapped to remove/insert the path as needed:
134
134
135 >>> m1 = match('root', '', ['a.txt', 'sub/b.txt'])
135 >>> m1 = match('root', '', ['a.txt', 'sub/b.txt'])
136 >>> m2 = narrowmatcher('sub', m1)
136 >>> m2 = narrowmatcher('sub', m1)
137 >>> bool(m2('a.txt'))
137 >>> bool(m2('a.txt'))
138 False
138 False
139 >>> bool(m2('b.txt'))
139 >>> bool(m2('b.txt'))
140 True
140 True
141 >>> bool(m2.matchfn('a.txt'))
141 >>> bool(m2.matchfn('a.txt'))
142 False
142 False
143 >>> bool(m2.matchfn('b.txt'))
143 >>> bool(m2.matchfn('b.txt'))
144 True
144 True
145 >>> m2.files()
145 >>> m2.files()
146 ['b.txt']
146 ['b.txt']
147 >>> m2.exact('b.txt')
147 >>> m2.exact('b.txt')
148 True
148 True
149 >>> m2.rel('b.txt')
149 >>> m2.rel('b.txt')
150 'b.txt'
150 'b.txt'
151 >>> def bad(f, msg):
151 >>> def bad(f, msg):
152 ... print "%s: %s" % (f, msg)
152 ... print "%s: %s" % (f, msg)
153 >>> m1.bad = bad
153 >>> m1.bad = bad
154 >>> m2.bad('x.txt', 'No such file')
154 >>> m2.bad('x.txt', 'No such file')
155 sub/x.txt: No such file
155 sub/x.txt: No such file
156 """
156 """
157
157
158 def __init__(self, path, matcher):
158 def __init__(self, path, matcher):
159 self._root = matcher._root
159 self._root = matcher._root
160 self._cwd = matcher._cwd
160 self._cwd = matcher._cwd
161 self._path = path
161 self._path = path
162 self._matcher = matcher
162 self._matcher = matcher
163
163
164 self._files = [f[len(path) + 1:] for f in matcher._files
164 self._files = [f[len(path) + 1:] for f in matcher._files
165 if f.startswith(path + "/")]
165 if f.startswith(path + "/")]
166 self._anypats = matcher._anypats
166 self._anypats = matcher._anypats
167 self.matchfn = lambda fn: matcher.matchfn(self._path + "/" + fn)
167 self.matchfn = lambda fn: matcher.matchfn(self._path + "/" + fn)
168 self._fmap = set(self._files)
168 self._fmap = set(self._files)
169
169
170 def bad(self, f, msg):
170 def bad(self, f, msg):
171 self._matcher.bad(self._path + "/" + f, msg)
171 self._matcher.bad(self._path + "/" + f, msg)
172
172
173 def patkind(pat):
173 def patkind(pat):
174 return _patsplit(pat, None)[0]
174 return _patsplit(pat, None)[0]
175
175
176 def _patsplit(pat, default):
176 def _patsplit(pat, default):
177 """Split a string into an optional pattern kind prefix and the
177 """Split a string into an optional pattern kind prefix and the
178 actual pattern."""
178 actual pattern."""
179 if ':' in pat:
179 if ':' in pat:
180 kind, val = pat.split(':', 1)
180 kind, val = pat.split(':', 1)
181 if kind in ('re', 'glob', 'path', 'relglob', 'relpath', 'relre',
181 if kind in ('re', 'glob', 'path', 'relglob', 'relpath', 'relre',
182 'listfile', 'listfile0', 'set'):
182 'listfile', 'listfile0', 'set'):
183 return kind, val
183 return kind, val
184 return default, pat
184 return default, pat
185
185
186 def _globre(pat):
186 def _globre(pat):
187 "convert a glob pattern into a regexp"
187 "convert a glob pattern into a regexp"
188 i, n = 0, len(pat)
188 i, n = 0, len(pat)
189 res = ''
189 res = ''
190 group = 0
190 group = 0
191 escape = re.escape
191 escape = re.escape
192 def peek():
192 def peek():
193 return i < n and pat[i]
193 return i < n and pat[i]
194 while i < n:
194 while i < n:
195 c = pat[i]
195 c = pat[i]
196 i += 1
196 i += 1
197 if c not in '*?[{},\\':
197 if c not in '*?[{},\\':
198 res += escape(c)
198 res += escape(c)
199 elif c == '*':
199 elif c == '*':
200 if peek() == '*':
200 if peek() == '*':
201 i += 1
201 i += 1
202 res += '.*'
202 res += '.*'
203 else:
203 else:
204 res += '[^/]*'
204 res += '[^/]*'
205 elif c == '?':
205 elif c == '?':
206 res += '.'
206 res += '.'
207 elif c == '[':
207 elif c == '[':
208 j = i
208 j = i
209 if j < n and pat[j] in '!]':
209 if j < n and pat[j] in '!]':
210 j += 1
210 j += 1
211 while j < n and pat[j] != ']':
211 while j < n and pat[j] != ']':
212 j += 1
212 j += 1
213 if j >= n:
213 if j >= n:
214 res += '\\['
214 res += '\\['
215 else:
215 else:
216 stuff = pat[i:j].replace('\\','\\\\')
216 stuff = pat[i:j].replace('\\','\\\\')
217 i = j + 1
217 i = j + 1
218 if stuff[0] == '!':
218 if stuff[0] == '!':
219 stuff = '^' + stuff[1:]
219 stuff = '^' + stuff[1:]
220 elif stuff[0] == '^':
220 elif stuff[0] == '^':
221 stuff = '\\' + stuff
221 stuff = '\\' + stuff
222 res = '%s[%s]' % (res, stuff)
222 res = '%s[%s]' % (res, stuff)
223 elif c == '{':
223 elif c == '{':
224 group += 1
224 group += 1
225 res += '(?:'
225 res += '(?:'
226 elif c == '}' and group:
226 elif c == '}' and group:
227 res += ')'
227 res += ')'
228 group -= 1
228 group -= 1
229 elif c == ',' and group:
229 elif c == ',' and group:
230 res += '|'
230 res += '|'
231 elif c == '\\':
231 elif c == '\\':
232 p = peek()
232 p = peek()
233 if p:
233 if p:
234 i += 1
234 i += 1
235 res += escape(p)
235 res += escape(p)
236 else:
236 else:
237 res += escape(c)
237 res += escape(c)
238 else:
238 else:
239 res += escape(c)
239 res += escape(c)
240 return res
240 return res
241
241
242 def _regex(kind, name, tail):
242 def _regex(kind, name, tail):
243 '''convert a pattern into a regular expression'''
243 '''convert a pattern into a regular expression'''
244 if not name:
244 if not name:
245 return ''
245 return ''
246 if kind == 're':
246 if kind == 're':
247 return name
247 return name
248 elif kind == 'path':
248 elif kind == 'path':
249 return '^' + re.escape(name) + '(?:/|$)'
249 return '^' + re.escape(name) + '(?:/|$)'
250 elif kind == 'relglob':
250 elif kind == 'relglob':
251 return '(?:|.*/)' + _globre(name) + tail
251 return '(?:|.*/)' + _globre(name) + tail
252 elif kind == 'relpath':
252 elif kind == 'relpath':
253 return re.escape(name) + '(?:/|$)'
253 return re.escape(name) + '(?:/|$)'
254 elif kind == 'relre':
254 elif kind == 'relre':
255 if name.startswith('^'):
255 if name.startswith('^'):
256 return name
256 return name
257 return '.*' + name
257 return '.*' + name
258 return _globre(name) + tail
258 return _globre(name) + tail
259
259
260 def _buildmatch(ctx, pats, tail):
260 def _buildmatch(ctx, pats, tail):
261 fset, pats = _expandsets(pats, ctx)
261 fset, pats = _expandsets(pats, ctx)
262 if not pats:
262 if not pats:
263 return "", fset.__contains__
263 return "", fset.__contains__
264
264
265 pat, mf = _buildregexmatch(pats, tail)
265 pat, mf = _buildregexmatch(pats, tail)
266 if fset:
266 if fset:
267 return pat, lambda f: f in fset or mf(f)
267 return pat, lambda f: f in fset or mf(f)
268 return pat, mf
268 return pat, mf
269
269
270 def _buildregexmatch(pats, tail):
270 def _buildregexmatch(pats, tail):
271 """build a matching function from a set of patterns"""
271 """build a matching function from a set of patterns"""
272 try:
272 try:
273 pat = '(?:%s)' % '|'.join([_regex(k, p, tail) for (k, p) in pats])
273 pat = '(?:%s)' % '|'.join([_regex(k, p, tail) for (k, p) in pats])
274 if len(pat) > 20000:
274 if len(pat) > 20000:
275 raise OverflowError()
275 raise OverflowError()
276 return pat, re.compile(pat).match
276 return pat, re.compile(pat).match
277 except OverflowError:
277 except OverflowError:
278 # We're using a Python with a tiny regex engine and we
278 # We're using a Python with a tiny regex engine and we
279 # made it explode, so we'll divide the pattern list in two
279 # made it explode, so we'll divide the pattern list in two
280 # until it works
280 # until it works
281 l = len(pats)
281 l = len(pats)
282 if l < 2:
282 if l < 2:
283 raise
283 raise
284 pata, a = _buildregexmatch(pats[:l//2], tail)
284 pata, a = _buildregexmatch(pats[:l//2], tail)
285 patb, b = _buildregexmatch(pats[l//2:], tail)
285 patb, b = _buildregexmatch(pats[l//2:], tail)
286 return pat, lambda s: a(s) or b(s)
286 return pat, lambda s: a(s) or b(s)
287 except re.error:
287 except re.error:
288 for k, p in pats:
288 for k, p in pats:
289 try:
289 try:
290 re.compile('(?:%s)' % _regex(k, p, tail))
290 re.compile('(?:%s)' % _regex(k, p, tail))
291 except re.error:
291 except re.error:
292 raise util.Abort(_("invalid pattern (%s): %s") % (k, p))
292 raise util.Abort(_("invalid pattern (%s): %s") % (k, p))
293 raise util.Abort(_("invalid pattern"))
293 raise util.Abort(_("invalid pattern"))
294
294
295 def _normalize(names, default, root, cwd, auditor):
295 def _normalize(names, default, root, cwd, auditor):
296 pats = []
296 pats = []
297 for kind, name in [_patsplit(p, default) for p in names]:
297 for kind, name in [_patsplit(p, default) for p in names]:
298 if kind in ('glob', 'relpath'):
298 if kind in ('glob', 'relpath'):
299 name = scmutil.canonpath(root, cwd, name, auditor)
299 name = scmutil.canonpath(root, cwd, name, auditor)
300 elif kind in ('relglob', 'path'):
300 elif kind in ('relglob', 'path'):
301 name = util.normpath(name)
301 name = util.normpath(name)
302 elif kind in ('listfile', 'listfile0'):
302 elif kind in ('listfile', 'listfile0'):
303 try:
303 try:
304 files = util.readfile(name)
304 files = util.readfile(name)
305 if kind == 'listfile0':
305 if kind == 'listfile0':
306 files = files.split('\0')
306 files = files.split('\0')
307 else:
307 else:
308 files = files.splitlines()
308 files = files.splitlines()
309 files = [f for f in files if f]
309 files = [f for f in files if f]
310 except EnvironmentError:
310 except EnvironmentError:
311 raise util.Abort(_("unable to read file list (%s)") % name)
311 raise util.Abort(_("unable to read file list (%s)") % name)
312 pats += _normalize(files, default, root, cwd, auditor)
312 pats += _normalize(files, default, root, cwd, auditor)
313 continue
313 continue
314
314
315 pats.append((kind, name))
315 pats.append((kind, name))
316 return pats
316 return pats
317
317
318 def _roots(patterns):
318 def _roots(patterns):
319 r = []
319 r = []
320 for kind, name in patterns:
320 for kind, name in patterns:
321 if kind == 'glob': # find the non-glob prefix
321 if kind == 'glob': # find the non-glob prefix
322 root = []
322 root = []
323 for p in name.split('/'):
323 for p in name.split('/'):
324 if '[' in p or '{' in p or '*' in p or '?' in p:
324 if '[' in p or '{' in p or '*' in p or '?' in p:
325 break
325 break
326 root.append(p)
326 root.append(p)
327 r.append('/'.join(root) or '.')
327 r.append('/'.join(root) or '.')
328 elif kind in ('relpath', 'path'):
328 elif kind in ('relpath', 'path'):
329 r.append(name or '.')
329 r.append(name or '.')
330 elif kind == 'relglob':
330 elif kind == 'relglob':
331 r.append('.')
331 r.append('.')
332 return r
332 return r
333
333
334 def _anypats(patterns):
334 def _anypats(patterns):
335 for kind, name in patterns:
335 for kind, name in patterns:
336 if kind in ('glob', 're', 'relglob', 'relre'):
336 if kind in ('glob', 're', 'relglob', 'relre', 'set'):
337 return True
337 return True
@@ -1,1669 +1,1671 b''
1 @ (34) head
1 @ (34) head
2 |
2 |
3 | o (33) head
3 | o (33) head
4 | |
4 | |
5 o | (32) expand
5 o | (32) expand
6 |\ \
6 |\ \
7 | o \ (31) expand
7 | o \ (31) expand
8 | |\ \
8 | |\ \
9 | | o \ (30) expand
9 | | o \ (30) expand
10 | | |\ \
10 | | |\ \
11 | | | o | (29) regular commit
11 | | | o | (29) regular commit
12 | | | | |
12 | | | | |
13 | | o | | (28) merge zero known
13 | | o | | (28) merge zero known
14 | | |\ \ \
14 | | |\ \ \
15 o | | | | | (27) collapse
15 o | | | | | (27) collapse
16 |/ / / / /
16 |/ / / / /
17 | | o---+ (26) merge one known; far right
17 | | o---+ (26) merge one known; far right
18 | | | | |
18 | | | | |
19 +---o | | (25) merge one known; far left
19 +---o | | (25) merge one known; far left
20 | | | | |
20 | | | | |
21 | | o | | (24) merge one known; immediate right
21 | | o | | (24) merge one known; immediate right
22 | | |\| |
22 | | |\| |
23 | | o | | (23) merge one known; immediate left
23 | | o | | (23) merge one known; immediate left
24 | |/| | |
24 | |/| | |
25 +---o---+ (22) merge two known; one far left, one far right
25 +---o---+ (22) merge two known; one far left, one far right
26 | | / /
26 | | / /
27 o | | | (21) expand
27 o | | | (21) expand
28 |\ \ \ \
28 |\ \ \ \
29 | o---+-+ (20) merge two known; two far right
29 | o---+-+ (20) merge two known; two far right
30 | / / /
30 | / / /
31 o | | | (19) expand
31 o | | | (19) expand
32 |\ \ \ \
32 |\ \ \ \
33 +---+---o (18) merge two known; two far left
33 +---+---o (18) merge two known; two far left
34 | | | |
34 | | | |
35 | o | | (17) expand
35 | o | | (17) expand
36 | |\ \ \
36 | |\ \ \
37 | | o---+ (16) merge two known; one immediate right, one near right
37 | | o---+ (16) merge two known; one immediate right, one near right
38 | | |/ /
38 | | |/ /
39 o | | | (15) expand
39 o | | | (15) expand
40 |\ \ \ \
40 |\ \ \ \
41 | o-----+ (14) merge two known; one immediate right, one far right
41 | o-----+ (14) merge two known; one immediate right, one far right
42 | |/ / /
42 | |/ / /
43 o | | | (13) expand
43 o | | | (13) expand
44 |\ \ \ \
44 |\ \ \ \
45 +---o | | (12) merge two known; one immediate right, one far left
45 +---o | | (12) merge two known; one immediate right, one far left
46 | | |/ /
46 | | |/ /
47 | o | | (11) expand
47 | o | | (11) expand
48 | |\ \ \
48 | |\ \ \
49 | | o---+ (10) merge two known; one immediate left, one near right
49 | | o---+ (10) merge two known; one immediate left, one near right
50 | |/ / /
50 | |/ / /
51 o | | | (9) expand
51 o | | | (9) expand
52 |\ \ \ \
52 |\ \ \ \
53 | o-----+ (8) merge two known; one immediate left, one far right
53 | o-----+ (8) merge two known; one immediate left, one far right
54 |/ / / /
54 |/ / / /
55 o | | | (7) expand
55 o | | | (7) expand
56 |\ \ \ \
56 |\ \ \ \
57 +---o | | (6) merge two known; one immediate left, one far left
57 +---o | | (6) merge two known; one immediate left, one far left
58 | |/ / /
58 | |/ / /
59 | o | | (5) expand
59 | o | | (5) expand
60 | |\ \ \
60 | |\ \ \
61 | | o | | (4) merge two known; one immediate left, one immediate right
61 | | o | | (4) merge two known; one immediate left, one immediate right
62 | |/|/ /
62 | |/|/ /
63 | o / / (3) collapse
63 | o / / (3) collapse
64 |/ / /
64 |/ / /
65 o / / (2) collapse
65 o / / (2) collapse
66 |/ /
66 |/ /
67 o / (1) collapse
67 o / (1) collapse
68 |/
68 |/
69 o (0) root
69 o (0) root
70
70
71
71
72 $ "$TESTDIR/hghave" no-outer-repo || exit 80
72 $ "$TESTDIR/hghave" no-outer-repo || exit 80
73
73
74 $ commit()
74 $ commit()
75 > {
75 > {
76 > rev=$1
76 > rev=$1
77 > msg=$2
77 > msg=$2
78 > shift 2
78 > shift 2
79 > if [ "$#" -gt 0 ]; then
79 > if [ "$#" -gt 0 ]; then
80 > hg debugsetparents "$@"
80 > hg debugsetparents "$@"
81 > fi
81 > fi
82 > echo $rev > a
82 > echo $rev > a
83 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
83 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
84 > }
84 > }
85
85
86 $ cat > printrevset.py <<EOF
86 $ cat > printrevset.py <<EOF
87 > from mercurial import extensions, revset, commands
87 > from mercurial import extensions, revset, commands
88 > from hgext import graphlog
88 > from hgext import graphlog
89 >
89 >
90 > def uisetup(ui):
90 > def uisetup(ui):
91 > def printrevset(orig, ui, repo, *pats, **opts):
91 > def printrevset(orig, ui, repo, *pats, **opts):
92 > if opts.get('print_revset'):
92 > if opts.get('print_revset'):
93 > expr = graphlog.revset(repo, pats, opts)
93 > expr = graphlog.revset(repo, pats, opts)
94 > tree = revset.parse(expr)[0]
94 > tree = revset.parse(expr)[0]
95 > ui.write(tree, "\n")
95 > ui.write(tree, "\n")
96 > return 0
96 > return 0
97 > return orig(ui, repo, *pats, **opts)
97 > return orig(ui, repo, *pats, **opts)
98 > entry = extensions.wrapcommand(commands.table, 'log', printrevset)
98 > entry = extensions.wrapcommand(commands.table, 'log', printrevset)
99 > entry[1].append(('', 'print-revset', False,
99 > entry[1].append(('', 'print-revset', False,
100 > 'print generated revset and exit (DEPRECATED)'))
100 > 'print generated revset and exit (DEPRECATED)'))
101 > EOF
101 > EOF
102
102
103 $ echo "[extensions]" >> $HGRCPATH
103 $ echo "[extensions]" >> $HGRCPATH
104 $ echo "graphlog=" >> $HGRCPATH
104 $ echo "graphlog=" >> $HGRCPATH
105 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
105 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
106
106
107 $ hg init repo
107 $ hg init repo
108 $ cd repo
108 $ cd repo
109
109
110 Empty repo:
110 Empty repo:
111
111
112 $ hg glog
112 $ hg glog
113
113
114
114
115 Building DAG:
115 Building DAG:
116
116
117 $ commit 0 "root"
117 $ commit 0 "root"
118 $ commit 1 "collapse" 0
118 $ commit 1 "collapse" 0
119 $ commit 2 "collapse" 1
119 $ commit 2 "collapse" 1
120 $ commit 3 "collapse" 2
120 $ commit 3 "collapse" 2
121 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
121 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
122 $ commit 5 "expand" 3 4
122 $ commit 5 "expand" 3 4
123 $ commit 6 "merge two known; one immediate left, one far left" 2 5
123 $ commit 6 "merge two known; one immediate left, one far left" 2 5
124 $ commit 7 "expand" 2 5
124 $ commit 7 "expand" 2 5
125 $ commit 8 "merge two known; one immediate left, one far right" 0 7
125 $ commit 8 "merge two known; one immediate left, one far right" 0 7
126 $ commit 9 "expand" 7 8
126 $ commit 9 "expand" 7 8
127 $ commit 10 "merge two known; one immediate left, one near right" 0 6
127 $ commit 10 "merge two known; one immediate left, one near right" 0 6
128 $ commit 11 "expand" 6 10
128 $ commit 11 "expand" 6 10
129 $ commit 12 "merge two known; one immediate right, one far left" 1 9
129 $ commit 12 "merge two known; one immediate right, one far left" 1 9
130 $ commit 13 "expand" 9 11
130 $ commit 13 "expand" 9 11
131 $ commit 14 "merge two known; one immediate right, one far right" 0 12
131 $ commit 14 "merge two known; one immediate right, one far right" 0 12
132 $ commit 15 "expand" 13 14
132 $ commit 15 "expand" 13 14
133 $ commit 16 "merge two known; one immediate right, one near right" 0 1
133 $ commit 16 "merge two known; one immediate right, one near right" 0 1
134 $ commit 17 "expand" 12 16
134 $ commit 17 "expand" 12 16
135 $ commit 18 "merge two known; two far left" 1 15
135 $ commit 18 "merge two known; two far left" 1 15
136 $ commit 19 "expand" 15 17
136 $ commit 19 "expand" 15 17
137 $ commit 20 "merge two known; two far right" 0 18
137 $ commit 20 "merge two known; two far right" 0 18
138 $ commit 21 "expand" 19 20
138 $ commit 21 "expand" 19 20
139 $ commit 22 "merge two known; one far left, one far right" 18 21
139 $ commit 22 "merge two known; one far left, one far right" 18 21
140 $ commit 23 "merge one known; immediate left" 1 22
140 $ commit 23 "merge one known; immediate left" 1 22
141 $ commit 24 "merge one known; immediate right" 0 23
141 $ commit 24 "merge one known; immediate right" 0 23
142 $ commit 25 "merge one known; far left" 21 24
142 $ commit 25 "merge one known; far left" 21 24
143 $ commit 26 "merge one known; far right" 18 25
143 $ commit 26 "merge one known; far right" 18 25
144 $ commit 27 "collapse" 21
144 $ commit 27 "collapse" 21
145 $ commit 28 "merge zero known" 1 26
145 $ commit 28 "merge zero known" 1 26
146 $ commit 29 "regular commit" 0
146 $ commit 29 "regular commit" 0
147 $ commit 30 "expand" 28 29
147 $ commit 30 "expand" 28 29
148 $ commit 31 "expand" 21 30
148 $ commit 31 "expand" 21 30
149 $ commit 32 "expand" 27 31
149 $ commit 32 "expand" 27 31
150 $ commit 33 "head" 18
150 $ commit 33 "head" 18
151 $ commit 34 "head" 32
151 $ commit 34 "head" 32
152
152
153
153
154 $ hg glog -q
154 $ hg glog -q
155 @ 34:fea3ac5810e0
155 @ 34:fea3ac5810e0
156 |
156 |
157 | o 33:68608f5145f9
157 | o 33:68608f5145f9
158 | |
158 | |
159 o | 32:d06dffa21a31
159 o | 32:d06dffa21a31
160 |\ \
160 |\ \
161 | o \ 31:621d83e11f67
161 | o \ 31:621d83e11f67
162 | |\ \
162 | |\ \
163 | | o \ 30:6e11cd4b648f
163 | | o \ 30:6e11cd4b648f
164 | | |\ \
164 | | |\ \
165 | | | o | 29:cd9bb2be7593
165 | | | o | 29:cd9bb2be7593
166 | | | | |
166 | | | | |
167 | | o | | 28:44ecd0b9ae99
167 | | o | | 28:44ecd0b9ae99
168 | | |\ \ \
168 | | |\ \ \
169 o | | | | | 27:886ed638191b
169 o | | | | | 27:886ed638191b
170 |/ / / / /
170 |/ / / / /
171 | | o---+ 26:7f25b6c2f0b9
171 | | o---+ 26:7f25b6c2f0b9
172 | | | | |
172 | | | | |
173 +---o | | 25:91da8ed57247
173 +---o | | 25:91da8ed57247
174 | | | | |
174 | | | | |
175 | | o | | 24:a9c19a3d96b7
175 | | o | | 24:a9c19a3d96b7
176 | | |\| |
176 | | |\| |
177 | | o | | 23:a01cddf0766d
177 | | o | | 23:a01cddf0766d
178 | |/| | |
178 | |/| | |
179 +---o---+ 22:e0d9cccacb5d
179 +---o---+ 22:e0d9cccacb5d
180 | | / /
180 | | / /
181 o | | | 21:d42a756af44d
181 o | | | 21:d42a756af44d
182 |\ \ \ \
182 |\ \ \ \
183 | o---+-+ 20:d30ed6450e32
183 | o---+-+ 20:d30ed6450e32
184 | / / /
184 | / / /
185 o | | | 19:31ddc2c1573b
185 o | | | 19:31ddc2c1573b
186 |\ \ \ \
186 |\ \ \ \
187 +---+---o 18:1aa84d96232a
187 +---+---o 18:1aa84d96232a
188 | | | |
188 | | | |
189 | o | | 17:44765d7c06e0
189 | o | | 17:44765d7c06e0
190 | |\ \ \
190 | |\ \ \
191 | | o---+ 16:3677d192927d
191 | | o---+ 16:3677d192927d
192 | | |/ /
192 | | |/ /
193 o | | | 15:1dda3f72782d
193 o | | | 15:1dda3f72782d
194 |\ \ \ \
194 |\ \ \ \
195 | o-----+ 14:8eac370358ef
195 | o-----+ 14:8eac370358ef
196 | |/ / /
196 | |/ / /
197 o | | | 13:22d8966a97e3
197 o | | | 13:22d8966a97e3
198 |\ \ \ \
198 |\ \ \ \
199 +---o | | 12:86b91144a6e9
199 +---o | | 12:86b91144a6e9
200 | | |/ /
200 | | |/ /
201 | o | | 11:832d76e6bdf2
201 | o | | 11:832d76e6bdf2
202 | |\ \ \
202 | |\ \ \
203 | | o---+ 10:74c64d036d72
203 | | o---+ 10:74c64d036d72
204 | |/ / /
204 | |/ / /
205 o | | | 9:7010c0af0a35
205 o | | | 9:7010c0af0a35
206 |\ \ \ \
206 |\ \ \ \
207 | o-----+ 8:7a0b11f71937
207 | o-----+ 8:7a0b11f71937
208 |/ / / /
208 |/ / / /
209 o | | | 7:b632bb1b1224
209 o | | | 7:b632bb1b1224
210 |\ \ \ \
210 |\ \ \ \
211 +---o | | 6:b105a072e251
211 +---o | | 6:b105a072e251
212 | |/ / /
212 | |/ / /
213 | o | | 5:4409d547b708
213 | o | | 5:4409d547b708
214 | |\ \ \
214 | |\ \ \
215 | | o | | 4:26a8bac39d9f
215 | | o | | 4:26a8bac39d9f
216 | |/|/ /
216 | |/|/ /
217 | o / / 3:27eef8ed80b4
217 | o / / 3:27eef8ed80b4
218 |/ / /
218 |/ / /
219 o / / 2:3d9a33b8d1e1
219 o / / 2:3d9a33b8d1e1
220 |/ /
220 |/ /
221 o / 1:6db2ef61d156
221 o / 1:6db2ef61d156
222 |/
222 |/
223 o 0:e6eb3150255d
223 o 0:e6eb3150255d
224
224
225
225
226 $ hg glog
226 $ hg glog
227 @ changeset: 34:fea3ac5810e0
227 @ changeset: 34:fea3ac5810e0
228 | tag: tip
228 | tag: tip
229 | parent: 32:d06dffa21a31
229 | parent: 32:d06dffa21a31
230 | user: test
230 | user: test
231 | date: Thu Jan 01 00:00:34 1970 +0000
231 | date: Thu Jan 01 00:00:34 1970 +0000
232 | summary: (34) head
232 | summary: (34) head
233 |
233 |
234 | o changeset: 33:68608f5145f9
234 | o changeset: 33:68608f5145f9
235 | | parent: 18:1aa84d96232a
235 | | parent: 18:1aa84d96232a
236 | | user: test
236 | | user: test
237 | | date: Thu Jan 01 00:00:33 1970 +0000
237 | | date: Thu Jan 01 00:00:33 1970 +0000
238 | | summary: (33) head
238 | | summary: (33) head
239 | |
239 | |
240 o | changeset: 32:d06dffa21a31
240 o | changeset: 32:d06dffa21a31
241 |\ \ parent: 27:886ed638191b
241 |\ \ parent: 27:886ed638191b
242 | | | parent: 31:621d83e11f67
242 | | | parent: 31:621d83e11f67
243 | | | user: test
243 | | | user: test
244 | | | date: Thu Jan 01 00:00:32 1970 +0000
244 | | | date: Thu Jan 01 00:00:32 1970 +0000
245 | | | summary: (32) expand
245 | | | summary: (32) expand
246 | | |
246 | | |
247 | o | changeset: 31:621d83e11f67
247 | o | changeset: 31:621d83e11f67
248 | |\ \ parent: 21:d42a756af44d
248 | |\ \ parent: 21:d42a756af44d
249 | | | | parent: 30:6e11cd4b648f
249 | | | | parent: 30:6e11cd4b648f
250 | | | | user: test
250 | | | | user: test
251 | | | | date: Thu Jan 01 00:00:31 1970 +0000
251 | | | | date: Thu Jan 01 00:00:31 1970 +0000
252 | | | | summary: (31) expand
252 | | | | summary: (31) expand
253 | | | |
253 | | | |
254 | | o | changeset: 30:6e11cd4b648f
254 | | o | changeset: 30:6e11cd4b648f
255 | | |\ \ parent: 28:44ecd0b9ae99
255 | | |\ \ parent: 28:44ecd0b9ae99
256 | | | | | parent: 29:cd9bb2be7593
256 | | | | | parent: 29:cd9bb2be7593
257 | | | | | user: test
257 | | | | | user: test
258 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
258 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
259 | | | | | summary: (30) expand
259 | | | | | summary: (30) expand
260 | | | | |
260 | | | | |
261 | | | o | changeset: 29:cd9bb2be7593
261 | | | o | changeset: 29:cd9bb2be7593
262 | | | | | parent: 0:e6eb3150255d
262 | | | | | parent: 0:e6eb3150255d
263 | | | | | user: test
263 | | | | | user: test
264 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
264 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
265 | | | | | summary: (29) regular commit
265 | | | | | summary: (29) regular commit
266 | | | | |
266 | | | | |
267 | | o | | changeset: 28:44ecd0b9ae99
267 | | o | | changeset: 28:44ecd0b9ae99
268 | | |\ \ \ parent: 1:6db2ef61d156
268 | | |\ \ \ parent: 1:6db2ef61d156
269 | | | | | | parent: 26:7f25b6c2f0b9
269 | | | | | | parent: 26:7f25b6c2f0b9
270 | | | | | | user: test
270 | | | | | | user: test
271 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
271 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
272 | | | | | | summary: (28) merge zero known
272 | | | | | | summary: (28) merge zero known
273 | | | | | |
273 | | | | | |
274 o | | | | | changeset: 27:886ed638191b
274 o | | | | | changeset: 27:886ed638191b
275 |/ / / / / parent: 21:d42a756af44d
275 |/ / / / / parent: 21:d42a756af44d
276 | | | | | user: test
276 | | | | | user: test
277 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
277 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
278 | | | | | summary: (27) collapse
278 | | | | | summary: (27) collapse
279 | | | | |
279 | | | | |
280 | | o---+ changeset: 26:7f25b6c2f0b9
280 | | o---+ changeset: 26:7f25b6c2f0b9
281 | | | | | parent: 18:1aa84d96232a
281 | | | | | parent: 18:1aa84d96232a
282 | | | | | parent: 25:91da8ed57247
282 | | | | | parent: 25:91da8ed57247
283 | | | | | user: test
283 | | | | | user: test
284 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
284 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
285 | | | | | summary: (26) merge one known; far right
285 | | | | | summary: (26) merge one known; far right
286 | | | | |
286 | | | | |
287 +---o | | changeset: 25:91da8ed57247
287 +---o | | changeset: 25:91da8ed57247
288 | | | | | parent: 21:d42a756af44d
288 | | | | | parent: 21:d42a756af44d
289 | | | | | parent: 24:a9c19a3d96b7
289 | | | | | parent: 24:a9c19a3d96b7
290 | | | | | user: test
290 | | | | | user: test
291 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
291 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
292 | | | | | summary: (25) merge one known; far left
292 | | | | | summary: (25) merge one known; far left
293 | | | | |
293 | | | | |
294 | | o | | changeset: 24:a9c19a3d96b7
294 | | o | | changeset: 24:a9c19a3d96b7
295 | | |\| | parent: 0:e6eb3150255d
295 | | |\| | parent: 0:e6eb3150255d
296 | | | | | parent: 23:a01cddf0766d
296 | | | | | parent: 23:a01cddf0766d
297 | | | | | user: test
297 | | | | | user: test
298 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
298 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
299 | | | | | summary: (24) merge one known; immediate right
299 | | | | | summary: (24) merge one known; immediate right
300 | | | | |
300 | | | | |
301 | | o | | changeset: 23:a01cddf0766d
301 | | o | | changeset: 23:a01cddf0766d
302 | |/| | | parent: 1:6db2ef61d156
302 | |/| | | parent: 1:6db2ef61d156
303 | | | | | parent: 22:e0d9cccacb5d
303 | | | | | parent: 22:e0d9cccacb5d
304 | | | | | user: test
304 | | | | | user: test
305 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
305 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
306 | | | | | summary: (23) merge one known; immediate left
306 | | | | | summary: (23) merge one known; immediate left
307 | | | | |
307 | | | | |
308 +---o---+ changeset: 22:e0d9cccacb5d
308 +---o---+ changeset: 22:e0d9cccacb5d
309 | | | | parent: 18:1aa84d96232a
309 | | | | parent: 18:1aa84d96232a
310 | | / / parent: 21:d42a756af44d
310 | | / / parent: 21:d42a756af44d
311 | | | | user: test
311 | | | | user: test
312 | | | | date: Thu Jan 01 00:00:22 1970 +0000
312 | | | | date: Thu Jan 01 00:00:22 1970 +0000
313 | | | | summary: (22) merge two known; one far left, one far right
313 | | | | summary: (22) merge two known; one far left, one far right
314 | | | |
314 | | | |
315 o | | | changeset: 21:d42a756af44d
315 o | | | changeset: 21:d42a756af44d
316 |\ \ \ \ parent: 19:31ddc2c1573b
316 |\ \ \ \ parent: 19:31ddc2c1573b
317 | | | | | parent: 20:d30ed6450e32
317 | | | | | parent: 20:d30ed6450e32
318 | | | | | user: test
318 | | | | | user: test
319 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
319 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
320 | | | | | summary: (21) expand
320 | | | | | summary: (21) expand
321 | | | | |
321 | | | | |
322 | o---+-+ changeset: 20:d30ed6450e32
322 | o---+-+ changeset: 20:d30ed6450e32
323 | | | | parent: 0:e6eb3150255d
323 | | | | parent: 0:e6eb3150255d
324 | / / / parent: 18:1aa84d96232a
324 | / / / parent: 18:1aa84d96232a
325 | | | | user: test
325 | | | | user: test
326 | | | | date: Thu Jan 01 00:00:20 1970 +0000
326 | | | | date: Thu Jan 01 00:00:20 1970 +0000
327 | | | | summary: (20) merge two known; two far right
327 | | | | summary: (20) merge two known; two far right
328 | | | |
328 | | | |
329 o | | | changeset: 19:31ddc2c1573b
329 o | | | changeset: 19:31ddc2c1573b
330 |\ \ \ \ parent: 15:1dda3f72782d
330 |\ \ \ \ parent: 15:1dda3f72782d
331 | | | | | parent: 17:44765d7c06e0
331 | | | | | parent: 17:44765d7c06e0
332 | | | | | user: test
332 | | | | | user: test
333 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
333 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
334 | | | | | summary: (19) expand
334 | | | | | summary: (19) expand
335 | | | | |
335 | | | | |
336 +---+---o changeset: 18:1aa84d96232a
336 +---+---o changeset: 18:1aa84d96232a
337 | | | | parent: 1:6db2ef61d156
337 | | | | parent: 1:6db2ef61d156
338 | | | | parent: 15:1dda3f72782d
338 | | | | parent: 15:1dda3f72782d
339 | | | | user: test
339 | | | | user: test
340 | | | | date: Thu Jan 01 00:00:18 1970 +0000
340 | | | | date: Thu Jan 01 00:00:18 1970 +0000
341 | | | | summary: (18) merge two known; two far left
341 | | | | summary: (18) merge two known; two far left
342 | | | |
342 | | | |
343 | o | | changeset: 17:44765d7c06e0
343 | o | | changeset: 17:44765d7c06e0
344 | |\ \ \ parent: 12:86b91144a6e9
344 | |\ \ \ parent: 12:86b91144a6e9
345 | | | | | parent: 16:3677d192927d
345 | | | | | parent: 16:3677d192927d
346 | | | | | user: test
346 | | | | | user: test
347 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
347 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
348 | | | | | summary: (17) expand
348 | | | | | summary: (17) expand
349 | | | | |
349 | | | | |
350 | | o---+ changeset: 16:3677d192927d
350 | | o---+ changeset: 16:3677d192927d
351 | | | | | parent: 0:e6eb3150255d
351 | | | | | parent: 0:e6eb3150255d
352 | | |/ / parent: 1:6db2ef61d156
352 | | |/ / parent: 1:6db2ef61d156
353 | | | | user: test
353 | | | | user: test
354 | | | | date: Thu Jan 01 00:00:16 1970 +0000
354 | | | | date: Thu Jan 01 00:00:16 1970 +0000
355 | | | | summary: (16) merge two known; one immediate right, one near right
355 | | | | summary: (16) merge two known; one immediate right, one near right
356 | | | |
356 | | | |
357 o | | | changeset: 15:1dda3f72782d
357 o | | | changeset: 15:1dda3f72782d
358 |\ \ \ \ parent: 13:22d8966a97e3
358 |\ \ \ \ parent: 13:22d8966a97e3
359 | | | | | parent: 14:8eac370358ef
359 | | | | | parent: 14:8eac370358ef
360 | | | | | user: test
360 | | | | | user: test
361 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
361 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
362 | | | | | summary: (15) expand
362 | | | | | summary: (15) expand
363 | | | | |
363 | | | | |
364 | o-----+ changeset: 14:8eac370358ef
364 | o-----+ changeset: 14:8eac370358ef
365 | | | | | parent: 0:e6eb3150255d
365 | | | | | parent: 0:e6eb3150255d
366 | |/ / / parent: 12:86b91144a6e9
366 | |/ / / parent: 12:86b91144a6e9
367 | | | | user: test
367 | | | | user: test
368 | | | | date: Thu Jan 01 00:00:14 1970 +0000
368 | | | | date: Thu Jan 01 00:00:14 1970 +0000
369 | | | | summary: (14) merge two known; one immediate right, one far right
369 | | | | summary: (14) merge two known; one immediate right, one far right
370 | | | |
370 | | | |
371 o | | | changeset: 13:22d8966a97e3
371 o | | | changeset: 13:22d8966a97e3
372 |\ \ \ \ parent: 9:7010c0af0a35
372 |\ \ \ \ parent: 9:7010c0af0a35
373 | | | | | parent: 11:832d76e6bdf2
373 | | | | | parent: 11:832d76e6bdf2
374 | | | | | user: test
374 | | | | | user: test
375 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
375 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
376 | | | | | summary: (13) expand
376 | | | | | summary: (13) expand
377 | | | | |
377 | | | | |
378 +---o | | changeset: 12:86b91144a6e9
378 +---o | | changeset: 12:86b91144a6e9
379 | | |/ / parent: 1:6db2ef61d156
379 | | |/ / parent: 1:6db2ef61d156
380 | | | | parent: 9:7010c0af0a35
380 | | | | parent: 9:7010c0af0a35
381 | | | | user: test
381 | | | | user: test
382 | | | | date: Thu Jan 01 00:00:12 1970 +0000
382 | | | | date: Thu Jan 01 00:00:12 1970 +0000
383 | | | | summary: (12) merge two known; one immediate right, one far left
383 | | | | summary: (12) merge two known; one immediate right, one far left
384 | | | |
384 | | | |
385 | o | | changeset: 11:832d76e6bdf2
385 | o | | changeset: 11:832d76e6bdf2
386 | |\ \ \ parent: 6:b105a072e251
386 | |\ \ \ parent: 6:b105a072e251
387 | | | | | parent: 10:74c64d036d72
387 | | | | | parent: 10:74c64d036d72
388 | | | | | user: test
388 | | | | | user: test
389 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
389 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
390 | | | | | summary: (11) expand
390 | | | | | summary: (11) expand
391 | | | | |
391 | | | | |
392 | | o---+ changeset: 10:74c64d036d72
392 | | o---+ changeset: 10:74c64d036d72
393 | | | | | parent: 0:e6eb3150255d
393 | | | | | parent: 0:e6eb3150255d
394 | |/ / / parent: 6:b105a072e251
394 | |/ / / parent: 6:b105a072e251
395 | | | | user: test
395 | | | | user: test
396 | | | | date: Thu Jan 01 00:00:10 1970 +0000
396 | | | | date: Thu Jan 01 00:00:10 1970 +0000
397 | | | | summary: (10) merge two known; one immediate left, one near right
397 | | | | summary: (10) merge two known; one immediate left, one near right
398 | | | |
398 | | | |
399 o | | | changeset: 9:7010c0af0a35
399 o | | | changeset: 9:7010c0af0a35
400 |\ \ \ \ parent: 7:b632bb1b1224
400 |\ \ \ \ parent: 7:b632bb1b1224
401 | | | | | parent: 8:7a0b11f71937
401 | | | | | parent: 8:7a0b11f71937
402 | | | | | user: test
402 | | | | | user: test
403 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
403 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
404 | | | | | summary: (9) expand
404 | | | | | summary: (9) expand
405 | | | | |
405 | | | | |
406 | o-----+ changeset: 8:7a0b11f71937
406 | o-----+ changeset: 8:7a0b11f71937
407 | | | | | parent: 0:e6eb3150255d
407 | | | | | parent: 0:e6eb3150255d
408 |/ / / / parent: 7:b632bb1b1224
408 |/ / / / parent: 7:b632bb1b1224
409 | | | | user: test
409 | | | | user: test
410 | | | | date: Thu Jan 01 00:00:08 1970 +0000
410 | | | | date: Thu Jan 01 00:00:08 1970 +0000
411 | | | | summary: (8) merge two known; one immediate left, one far right
411 | | | | summary: (8) merge two known; one immediate left, one far right
412 | | | |
412 | | | |
413 o | | | changeset: 7:b632bb1b1224
413 o | | | changeset: 7:b632bb1b1224
414 |\ \ \ \ parent: 2:3d9a33b8d1e1
414 |\ \ \ \ parent: 2:3d9a33b8d1e1
415 | | | | | parent: 5:4409d547b708
415 | | | | | parent: 5:4409d547b708
416 | | | | | user: test
416 | | | | | user: test
417 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
417 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
418 | | | | | summary: (7) expand
418 | | | | | summary: (7) expand
419 | | | | |
419 | | | | |
420 +---o | | changeset: 6:b105a072e251
420 +---o | | changeset: 6:b105a072e251
421 | |/ / / parent: 2:3d9a33b8d1e1
421 | |/ / / parent: 2:3d9a33b8d1e1
422 | | | | parent: 5:4409d547b708
422 | | | | parent: 5:4409d547b708
423 | | | | user: test
423 | | | | user: test
424 | | | | date: Thu Jan 01 00:00:06 1970 +0000
424 | | | | date: Thu Jan 01 00:00:06 1970 +0000
425 | | | | summary: (6) merge two known; one immediate left, one far left
425 | | | | summary: (6) merge two known; one immediate left, one far left
426 | | | |
426 | | | |
427 | o | | changeset: 5:4409d547b708
427 | o | | changeset: 5:4409d547b708
428 | |\ \ \ parent: 3:27eef8ed80b4
428 | |\ \ \ parent: 3:27eef8ed80b4
429 | | | | | parent: 4:26a8bac39d9f
429 | | | | | parent: 4:26a8bac39d9f
430 | | | | | user: test
430 | | | | | user: test
431 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
431 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
432 | | | | | summary: (5) expand
432 | | | | | summary: (5) expand
433 | | | | |
433 | | | | |
434 | | o | | changeset: 4:26a8bac39d9f
434 | | o | | changeset: 4:26a8bac39d9f
435 | |/|/ / parent: 1:6db2ef61d156
435 | |/|/ / parent: 1:6db2ef61d156
436 | | | | parent: 3:27eef8ed80b4
436 | | | | parent: 3:27eef8ed80b4
437 | | | | user: test
437 | | | | user: test
438 | | | | date: Thu Jan 01 00:00:04 1970 +0000
438 | | | | date: Thu Jan 01 00:00:04 1970 +0000
439 | | | | summary: (4) merge two known; one immediate left, one immediate right
439 | | | | summary: (4) merge two known; one immediate left, one immediate right
440 | | | |
440 | | | |
441 | o | | changeset: 3:27eef8ed80b4
441 | o | | changeset: 3:27eef8ed80b4
442 |/ / / user: test
442 |/ / / user: test
443 | | | date: Thu Jan 01 00:00:03 1970 +0000
443 | | | date: Thu Jan 01 00:00:03 1970 +0000
444 | | | summary: (3) collapse
444 | | | summary: (3) collapse
445 | | |
445 | | |
446 o | | changeset: 2:3d9a33b8d1e1
446 o | | changeset: 2:3d9a33b8d1e1
447 |/ / user: test
447 |/ / user: test
448 | | date: Thu Jan 01 00:00:02 1970 +0000
448 | | date: Thu Jan 01 00:00:02 1970 +0000
449 | | summary: (2) collapse
449 | | summary: (2) collapse
450 | |
450 | |
451 o | changeset: 1:6db2ef61d156
451 o | changeset: 1:6db2ef61d156
452 |/ user: test
452 |/ user: test
453 | date: Thu Jan 01 00:00:01 1970 +0000
453 | date: Thu Jan 01 00:00:01 1970 +0000
454 | summary: (1) collapse
454 | summary: (1) collapse
455 |
455 |
456 o changeset: 0:e6eb3150255d
456 o changeset: 0:e6eb3150255d
457 user: test
457 user: test
458 date: Thu Jan 01 00:00:00 1970 +0000
458 date: Thu Jan 01 00:00:00 1970 +0000
459 summary: (0) root
459 summary: (0) root
460
460
461
461
462 File glog:
462 File glog:
463 $ hg glog a
463 $ hg glog a
464 @ changeset: 34:fea3ac5810e0
464 @ changeset: 34:fea3ac5810e0
465 | tag: tip
465 | tag: tip
466 | parent: 32:d06dffa21a31
466 | parent: 32:d06dffa21a31
467 | user: test
467 | user: test
468 | date: Thu Jan 01 00:00:34 1970 +0000
468 | date: Thu Jan 01 00:00:34 1970 +0000
469 | summary: (34) head
469 | summary: (34) head
470 |
470 |
471 | o changeset: 33:68608f5145f9
471 | o changeset: 33:68608f5145f9
472 | | parent: 18:1aa84d96232a
472 | | parent: 18:1aa84d96232a
473 | | user: test
473 | | user: test
474 | | date: Thu Jan 01 00:00:33 1970 +0000
474 | | date: Thu Jan 01 00:00:33 1970 +0000
475 | | summary: (33) head
475 | | summary: (33) head
476 | |
476 | |
477 o | changeset: 32:d06dffa21a31
477 o | changeset: 32:d06dffa21a31
478 |\ \ parent: 27:886ed638191b
478 |\ \ parent: 27:886ed638191b
479 | | | parent: 31:621d83e11f67
479 | | | parent: 31:621d83e11f67
480 | | | user: test
480 | | | user: test
481 | | | date: Thu Jan 01 00:00:32 1970 +0000
481 | | | date: Thu Jan 01 00:00:32 1970 +0000
482 | | | summary: (32) expand
482 | | | summary: (32) expand
483 | | |
483 | | |
484 | o | changeset: 31:621d83e11f67
484 | o | changeset: 31:621d83e11f67
485 | |\ \ parent: 21:d42a756af44d
485 | |\ \ parent: 21:d42a756af44d
486 | | | | parent: 30:6e11cd4b648f
486 | | | | parent: 30:6e11cd4b648f
487 | | | | user: test
487 | | | | user: test
488 | | | | date: Thu Jan 01 00:00:31 1970 +0000
488 | | | | date: Thu Jan 01 00:00:31 1970 +0000
489 | | | | summary: (31) expand
489 | | | | summary: (31) expand
490 | | | |
490 | | | |
491 | | o | changeset: 30:6e11cd4b648f
491 | | o | changeset: 30:6e11cd4b648f
492 | | |\ \ parent: 28:44ecd0b9ae99
492 | | |\ \ parent: 28:44ecd0b9ae99
493 | | | | | parent: 29:cd9bb2be7593
493 | | | | | parent: 29:cd9bb2be7593
494 | | | | | user: test
494 | | | | | user: test
495 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
495 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
496 | | | | | summary: (30) expand
496 | | | | | summary: (30) expand
497 | | | | |
497 | | | | |
498 | | | o | changeset: 29:cd9bb2be7593
498 | | | o | changeset: 29:cd9bb2be7593
499 | | | | | parent: 0:e6eb3150255d
499 | | | | | parent: 0:e6eb3150255d
500 | | | | | user: test
500 | | | | | user: test
501 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
501 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
502 | | | | | summary: (29) regular commit
502 | | | | | summary: (29) regular commit
503 | | | | |
503 | | | | |
504 | | o | | changeset: 28:44ecd0b9ae99
504 | | o | | changeset: 28:44ecd0b9ae99
505 | | |\ \ \ parent: 1:6db2ef61d156
505 | | |\ \ \ parent: 1:6db2ef61d156
506 | | | | | | parent: 26:7f25b6c2f0b9
506 | | | | | | parent: 26:7f25b6c2f0b9
507 | | | | | | user: test
507 | | | | | | user: test
508 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
508 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
509 | | | | | | summary: (28) merge zero known
509 | | | | | | summary: (28) merge zero known
510 | | | | | |
510 | | | | | |
511 o | | | | | changeset: 27:886ed638191b
511 o | | | | | changeset: 27:886ed638191b
512 |/ / / / / parent: 21:d42a756af44d
512 |/ / / / / parent: 21:d42a756af44d
513 | | | | | user: test
513 | | | | | user: test
514 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
514 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
515 | | | | | summary: (27) collapse
515 | | | | | summary: (27) collapse
516 | | | | |
516 | | | | |
517 | | o---+ changeset: 26:7f25b6c2f0b9
517 | | o---+ changeset: 26:7f25b6c2f0b9
518 | | | | | parent: 18:1aa84d96232a
518 | | | | | parent: 18:1aa84d96232a
519 | | | | | parent: 25:91da8ed57247
519 | | | | | parent: 25:91da8ed57247
520 | | | | | user: test
520 | | | | | user: test
521 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
521 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
522 | | | | | summary: (26) merge one known; far right
522 | | | | | summary: (26) merge one known; far right
523 | | | | |
523 | | | | |
524 +---o | | changeset: 25:91da8ed57247
524 +---o | | changeset: 25:91da8ed57247
525 | | | | | parent: 21:d42a756af44d
525 | | | | | parent: 21:d42a756af44d
526 | | | | | parent: 24:a9c19a3d96b7
526 | | | | | parent: 24:a9c19a3d96b7
527 | | | | | user: test
527 | | | | | user: test
528 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
528 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
529 | | | | | summary: (25) merge one known; far left
529 | | | | | summary: (25) merge one known; far left
530 | | | | |
530 | | | | |
531 | | o | | changeset: 24:a9c19a3d96b7
531 | | o | | changeset: 24:a9c19a3d96b7
532 | | |\| | parent: 0:e6eb3150255d
532 | | |\| | parent: 0:e6eb3150255d
533 | | | | | parent: 23:a01cddf0766d
533 | | | | | parent: 23:a01cddf0766d
534 | | | | | user: test
534 | | | | | user: test
535 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
535 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
536 | | | | | summary: (24) merge one known; immediate right
536 | | | | | summary: (24) merge one known; immediate right
537 | | | | |
537 | | | | |
538 | | o | | changeset: 23:a01cddf0766d
538 | | o | | changeset: 23:a01cddf0766d
539 | |/| | | parent: 1:6db2ef61d156
539 | |/| | | parent: 1:6db2ef61d156
540 | | | | | parent: 22:e0d9cccacb5d
540 | | | | | parent: 22:e0d9cccacb5d
541 | | | | | user: test
541 | | | | | user: test
542 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
542 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
543 | | | | | summary: (23) merge one known; immediate left
543 | | | | | summary: (23) merge one known; immediate left
544 | | | | |
544 | | | | |
545 +---o---+ changeset: 22:e0d9cccacb5d
545 +---o---+ changeset: 22:e0d9cccacb5d
546 | | | | parent: 18:1aa84d96232a
546 | | | | parent: 18:1aa84d96232a
547 | | / / parent: 21:d42a756af44d
547 | | / / parent: 21:d42a756af44d
548 | | | | user: test
548 | | | | user: test
549 | | | | date: Thu Jan 01 00:00:22 1970 +0000
549 | | | | date: Thu Jan 01 00:00:22 1970 +0000
550 | | | | summary: (22) merge two known; one far left, one far right
550 | | | | summary: (22) merge two known; one far left, one far right
551 | | | |
551 | | | |
552 o | | | changeset: 21:d42a756af44d
552 o | | | changeset: 21:d42a756af44d
553 |\ \ \ \ parent: 19:31ddc2c1573b
553 |\ \ \ \ parent: 19:31ddc2c1573b
554 | | | | | parent: 20:d30ed6450e32
554 | | | | | parent: 20:d30ed6450e32
555 | | | | | user: test
555 | | | | | user: test
556 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
556 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
557 | | | | | summary: (21) expand
557 | | | | | summary: (21) expand
558 | | | | |
558 | | | | |
559 | o---+-+ changeset: 20:d30ed6450e32
559 | o---+-+ changeset: 20:d30ed6450e32
560 | | | | parent: 0:e6eb3150255d
560 | | | | parent: 0:e6eb3150255d
561 | / / / parent: 18:1aa84d96232a
561 | / / / parent: 18:1aa84d96232a
562 | | | | user: test
562 | | | | user: test
563 | | | | date: Thu Jan 01 00:00:20 1970 +0000
563 | | | | date: Thu Jan 01 00:00:20 1970 +0000
564 | | | | summary: (20) merge two known; two far right
564 | | | | summary: (20) merge two known; two far right
565 | | | |
565 | | | |
566 o | | | changeset: 19:31ddc2c1573b
566 o | | | changeset: 19:31ddc2c1573b
567 |\ \ \ \ parent: 15:1dda3f72782d
567 |\ \ \ \ parent: 15:1dda3f72782d
568 | | | | | parent: 17:44765d7c06e0
568 | | | | | parent: 17:44765d7c06e0
569 | | | | | user: test
569 | | | | | user: test
570 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
570 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
571 | | | | | summary: (19) expand
571 | | | | | summary: (19) expand
572 | | | | |
572 | | | | |
573 +---+---o changeset: 18:1aa84d96232a
573 +---+---o changeset: 18:1aa84d96232a
574 | | | | parent: 1:6db2ef61d156
574 | | | | parent: 1:6db2ef61d156
575 | | | | parent: 15:1dda3f72782d
575 | | | | parent: 15:1dda3f72782d
576 | | | | user: test
576 | | | | user: test
577 | | | | date: Thu Jan 01 00:00:18 1970 +0000
577 | | | | date: Thu Jan 01 00:00:18 1970 +0000
578 | | | | summary: (18) merge two known; two far left
578 | | | | summary: (18) merge two known; two far left
579 | | | |
579 | | | |
580 | o | | changeset: 17:44765d7c06e0
580 | o | | changeset: 17:44765d7c06e0
581 | |\ \ \ parent: 12:86b91144a6e9
581 | |\ \ \ parent: 12:86b91144a6e9
582 | | | | | parent: 16:3677d192927d
582 | | | | | parent: 16:3677d192927d
583 | | | | | user: test
583 | | | | | user: test
584 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
584 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
585 | | | | | summary: (17) expand
585 | | | | | summary: (17) expand
586 | | | | |
586 | | | | |
587 | | o---+ changeset: 16:3677d192927d
587 | | o---+ changeset: 16:3677d192927d
588 | | | | | parent: 0:e6eb3150255d
588 | | | | | parent: 0:e6eb3150255d
589 | | |/ / parent: 1:6db2ef61d156
589 | | |/ / parent: 1:6db2ef61d156
590 | | | | user: test
590 | | | | user: test
591 | | | | date: Thu Jan 01 00:00:16 1970 +0000
591 | | | | date: Thu Jan 01 00:00:16 1970 +0000
592 | | | | summary: (16) merge two known; one immediate right, one near right
592 | | | | summary: (16) merge two known; one immediate right, one near right
593 | | | |
593 | | | |
594 o | | | changeset: 15:1dda3f72782d
594 o | | | changeset: 15:1dda3f72782d
595 |\ \ \ \ parent: 13:22d8966a97e3
595 |\ \ \ \ parent: 13:22d8966a97e3
596 | | | | | parent: 14:8eac370358ef
596 | | | | | parent: 14:8eac370358ef
597 | | | | | user: test
597 | | | | | user: test
598 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
598 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
599 | | | | | summary: (15) expand
599 | | | | | summary: (15) expand
600 | | | | |
600 | | | | |
601 | o-----+ changeset: 14:8eac370358ef
601 | o-----+ changeset: 14:8eac370358ef
602 | | | | | parent: 0:e6eb3150255d
602 | | | | | parent: 0:e6eb3150255d
603 | |/ / / parent: 12:86b91144a6e9
603 | |/ / / parent: 12:86b91144a6e9
604 | | | | user: test
604 | | | | user: test
605 | | | | date: Thu Jan 01 00:00:14 1970 +0000
605 | | | | date: Thu Jan 01 00:00:14 1970 +0000
606 | | | | summary: (14) merge two known; one immediate right, one far right
606 | | | | summary: (14) merge two known; one immediate right, one far right
607 | | | |
607 | | | |
608 o | | | changeset: 13:22d8966a97e3
608 o | | | changeset: 13:22d8966a97e3
609 |\ \ \ \ parent: 9:7010c0af0a35
609 |\ \ \ \ parent: 9:7010c0af0a35
610 | | | | | parent: 11:832d76e6bdf2
610 | | | | | parent: 11:832d76e6bdf2
611 | | | | | user: test
611 | | | | | user: test
612 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
612 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
613 | | | | | summary: (13) expand
613 | | | | | summary: (13) expand
614 | | | | |
614 | | | | |
615 +---o | | changeset: 12:86b91144a6e9
615 +---o | | changeset: 12:86b91144a6e9
616 | | |/ / parent: 1:6db2ef61d156
616 | | |/ / parent: 1:6db2ef61d156
617 | | | | parent: 9:7010c0af0a35
617 | | | | parent: 9:7010c0af0a35
618 | | | | user: test
618 | | | | user: test
619 | | | | date: Thu Jan 01 00:00:12 1970 +0000
619 | | | | date: Thu Jan 01 00:00:12 1970 +0000
620 | | | | summary: (12) merge two known; one immediate right, one far left
620 | | | | summary: (12) merge two known; one immediate right, one far left
621 | | | |
621 | | | |
622 | o | | changeset: 11:832d76e6bdf2
622 | o | | changeset: 11:832d76e6bdf2
623 | |\ \ \ parent: 6:b105a072e251
623 | |\ \ \ parent: 6:b105a072e251
624 | | | | | parent: 10:74c64d036d72
624 | | | | | parent: 10:74c64d036d72
625 | | | | | user: test
625 | | | | | user: test
626 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
626 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
627 | | | | | summary: (11) expand
627 | | | | | summary: (11) expand
628 | | | | |
628 | | | | |
629 | | o---+ changeset: 10:74c64d036d72
629 | | o---+ changeset: 10:74c64d036d72
630 | | | | | parent: 0:e6eb3150255d
630 | | | | | parent: 0:e6eb3150255d
631 | |/ / / parent: 6:b105a072e251
631 | |/ / / parent: 6:b105a072e251
632 | | | | user: test
632 | | | | user: test
633 | | | | date: Thu Jan 01 00:00:10 1970 +0000
633 | | | | date: Thu Jan 01 00:00:10 1970 +0000
634 | | | | summary: (10) merge two known; one immediate left, one near right
634 | | | | summary: (10) merge two known; one immediate left, one near right
635 | | | |
635 | | | |
636 o | | | changeset: 9:7010c0af0a35
636 o | | | changeset: 9:7010c0af0a35
637 |\ \ \ \ parent: 7:b632bb1b1224
637 |\ \ \ \ parent: 7:b632bb1b1224
638 | | | | | parent: 8:7a0b11f71937
638 | | | | | parent: 8:7a0b11f71937
639 | | | | | user: test
639 | | | | | user: test
640 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
640 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
641 | | | | | summary: (9) expand
641 | | | | | summary: (9) expand
642 | | | | |
642 | | | | |
643 | o-----+ changeset: 8:7a0b11f71937
643 | o-----+ changeset: 8:7a0b11f71937
644 | | | | | parent: 0:e6eb3150255d
644 | | | | | parent: 0:e6eb3150255d
645 |/ / / / parent: 7:b632bb1b1224
645 |/ / / / parent: 7:b632bb1b1224
646 | | | | user: test
646 | | | | user: test
647 | | | | date: Thu Jan 01 00:00:08 1970 +0000
647 | | | | date: Thu Jan 01 00:00:08 1970 +0000
648 | | | | summary: (8) merge two known; one immediate left, one far right
648 | | | | summary: (8) merge two known; one immediate left, one far right
649 | | | |
649 | | | |
650 o | | | changeset: 7:b632bb1b1224
650 o | | | changeset: 7:b632bb1b1224
651 |\ \ \ \ parent: 2:3d9a33b8d1e1
651 |\ \ \ \ parent: 2:3d9a33b8d1e1
652 | | | | | parent: 5:4409d547b708
652 | | | | | parent: 5:4409d547b708
653 | | | | | user: test
653 | | | | | user: test
654 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
654 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
655 | | | | | summary: (7) expand
655 | | | | | summary: (7) expand
656 | | | | |
656 | | | | |
657 +---o | | changeset: 6:b105a072e251
657 +---o | | changeset: 6:b105a072e251
658 | |/ / / parent: 2:3d9a33b8d1e1
658 | |/ / / parent: 2:3d9a33b8d1e1
659 | | | | parent: 5:4409d547b708
659 | | | | parent: 5:4409d547b708
660 | | | | user: test
660 | | | | user: test
661 | | | | date: Thu Jan 01 00:00:06 1970 +0000
661 | | | | date: Thu Jan 01 00:00:06 1970 +0000
662 | | | | summary: (6) merge two known; one immediate left, one far left
662 | | | | summary: (6) merge two known; one immediate left, one far left
663 | | | |
663 | | | |
664 | o | | changeset: 5:4409d547b708
664 | o | | changeset: 5:4409d547b708
665 | |\ \ \ parent: 3:27eef8ed80b4
665 | |\ \ \ parent: 3:27eef8ed80b4
666 | | | | | parent: 4:26a8bac39d9f
666 | | | | | parent: 4:26a8bac39d9f
667 | | | | | user: test
667 | | | | | user: test
668 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
668 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
669 | | | | | summary: (5) expand
669 | | | | | summary: (5) expand
670 | | | | |
670 | | | | |
671 | | o | | changeset: 4:26a8bac39d9f
671 | | o | | changeset: 4:26a8bac39d9f
672 | |/|/ / parent: 1:6db2ef61d156
672 | |/|/ / parent: 1:6db2ef61d156
673 | | | | parent: 3:27eef8ed80b4
673 | | | | parent: 3:27eef8ed80b4
674 | | | | user: test
674 | | | | user: test
675 | | | | date: Thu Jan 01 00:00:04 1970 +0000
675 | | | | date: Thu Jan 01 00:00:04 1970 +0000
676 | | | | summary: (4) merge two known; one immediate left, one immediate right
676 | | | | summary: (4) merge two known; one immediate left, one immediate right
677 | | | |
677 | | | |
678 | o | | changeset: 3:27eef8ed80b4
678 | o | | changeset: 3:27eef8ed80b4
679 |/ / / user: test
679 |/ / / user: test
680 | | | date: Thu Jan 01 00:00:03 1970 +0000
680 | | | date: Thu Jan 01 00:00:03 1970 +0000
681 | | | summary: (3) collapse
681 | | | summary: (3) collapse
682 | | |
682 | | |
683 o | | changeset: 2:3d9a33b8d1e1
683 o | | changeset: 2:3d9a33b8d1e1
684 |/ / user: test
684 |/ / user: test
685 | | date: Thu Jan 01 00:00:02 1970 +0000
685 | | date: Thu Jan 01 00:00:02 1970 +0000
686 | | summary: (2) collapse
686 | | summary: (2) collapse
687 | |
687 | |
688 o | changeset: 1:6db2ef61d156
688 o | changeset: 1:6db2ef61d156
689 |/ user: test
689 |/ user: test
690 | date: Thu Jan 01 00:00:01 1970 +0000
690 | date: Thu Jan 01 00:00:01 1970 +0000
691 | summary: (1) collapse
691 | summary: (1) collapse
692 |
692 |
693 o changeset: 0:e6eb3150255d
693 o changeset: 0:e6eb3150255d
694 user: test
694 user: test
695 date: Thu Jan 01 00:00:00 1970 +0000
695 date: Thu Jan 01 00:00:00 1970 +0000
696 summary: (0) root
696 summary: (0) root
697
697
698
698
699 File glog per revset:
699 File glog per revset:
700
700
701 $ hg glog -r 'file("a")'
701 $ hg glog -r 'file("a")'
702 @ changeset: 34:fea3ac5810e0
702 @ changeset: 34:fea3ac5810e0
703 | tag: tip
703 | tag: tip
704 | parent: 32:d06dffa21a31
704 | parent: 32:d06dffa21a31
705 | user: test
705 | user: test
706 | date: Thu Jan 01 00:00:34 1970 +0000
706 | date: Thu Jan 01 00:00:34 1970 +0000
707 | summary: (34) head
707 | summary: (34) head
708 |
708 |
709 | o changeset: 33:68608f5145f9
709 | o changeset: 33:68608f5145f9
710 | | parent: 18:1aa84d96232a
710 | | parent: 18:1aa84d96232a
711 | | user: test
711 | | user: test
712 | | date: Thu Jan 01 00:00:33 1970 +0000
712 | | date: Thu Jan 01 00:00:33 1970 +0000
713 | | summary: (33) head
713 | | summary: (33) head
714 | |
714 | |
715 o | changeset: 32:d06dffa21a31
715 o | changeset: 32:d06dffa21a31
716 |\ \ parent: 27:886ed638191b
716 |\ \ parent: 27:886ed638191b
717 | | | parent: 31:621d83e11f67
717 | | | parent: 31:621d83e11f67
718 | | | user: test
718 | | | user: test
719 | | | date: Thu Jan 01 00:00:32 1970 +0000
719 | | | date: Thu Jan 01 00:00:32 1970 +0000
720 | | | summary: (32) expand
720 | | | summary: (32) expand
721 | | |
721 | | |
722 | o | changeset: 31:621d83e11f67
722 | o | changeset: 31:621d83e11f67
723 | |\ \ parent: 21:d42a756af44d
723 | |\ \ parent: 21:d42a756af44d
724 | | | | parent: 30:6e11cd4b648f
724 | | | | parent: 30:6e11cd4b648f
725 | | | | user: test
725 | | | | user: test
726 | | | | date: Thu Jan 01 00:00:31 1970 +0000
726 | | | | date: Thu Jan 01 00:00:31 1970 +0000
727 | | | | summary: (31) expand
727 | | | | summary: (31) expand
728 | | | |
728 | | | |
729 | | o | changeset: 30:6e11cd4b648f
729 | | o | changeset: 30:6e11cd4b648f
730 | | |\ \ parent: 28:44ecd0b9ae99
730 | | |\ \ parent: 28:44ecd0b9ae99
731 | | | | | parent: 29:cd9bb2be7593
731 | | | | | parent: 29:cd9bb2be7593
732 | | | | | user: test
732 | | | | | user: test
733 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
733 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
734 | | | | | summary: (30) expand
734 | | | | | summary: (30) expand
735 | | | | |
735 | | | | |
736 | | | o | changeset: 29:cd9bb2be7593
736 | | | o | changeset: 29:cd9bb2be7593
737 | | | | | parent: 0:e6eb3150255d
737 | | | | | parent: 0:e6eb3150255d
738 | | | | | user: test
738 | | | | | user: test
739 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
739 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
740 | | | | | summary: (29) regular commit
740 | | | | | summary: (29) regular commit
741 | | | | |
741 | | | | |
742 | | o | | changeset: 28:44ecd0b9ae99
742 | | o | | changeset: 28:44ecd0b9ae99
743 | | |\ \ \ parent: 1:6db2ef61d156
743 | | |\ \ \ parent: 1:6db2ef61d156
744 | | | | | | parent: 26:7f25b6c2f0b9
744 | | | | | | parent: 26:7f25b6c2f0b9
745 | | | | | | user: test
745 | | | | | | user: test
746 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
746 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
747 | | | | | | summary: (28) merge zero known
747 | | | | | | summary: (28) merge zero known
748 | | | | | |
748 | | | | | |
749 o | | | | | changeset: 27:886ed638191b
749 o | | | | | changeset: 27:886ed638191b
750 |/ / / / / parent: 21:d42a756af44d
750 |/ / / / / parent: 21:d42a756af44d
751 | | | | | user: test
751 | | | | | user: test
752 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
752 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
753 | | | | | summary: (27) collapse
753 | | | | | summary: (27) collapse
754 | | | | |
754 | | | | |
755 | | o---+ changeset: 26:7f25b6c2f0b9
755 | | o---+ changeset: 26:7f25b6c2f0b9
756 | | | | | parent: 18:1aa84d96232a
756 | | | | | parent: 18:1aa84d96232a
757 | | | | | parent: 25:91da8ed57247
757 | | | | | parent: 25:91da8ed57247
758 | | | | | user: test
758 | | | | | user: test
759 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
759 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
760 | | | | | summary: (26) merge one known; far right
760 | | | | | summary: (26) merge one known; far right
761 | | | | |
761 | | | | |
762 +---o | | changeset: 25:91da8ed57247
762 +---o | | changeset: 25:91da8ed57247
763 | | | | | parent: 21:d42a756af44d
763 | | | | | parent: 21:d42a756af44d
764 | | | | | parent: 24:a9c19a3d96b7
764 | | | | | parent: 24:a9c19a3d96b7
765 | | | | | user: test
765 | | | | | user: test
766 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
766 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
767 | | | | | summary: (25) merge one known; far left
767 | | | | | summary: (25) merge one known; far left
768 | | | | |
768 | | | | |
769 | | o | | changeset: 24:a9c19a3d96b7
769 | | o | | changeset: 24:a9c19a3d96b7
770 | | |\| | parent: 0:e6eb3150255d
770 | | |\| | parent: 0:e6eb3150255d
771 | | | | | parent: 23:a01cddf0766d
771 | | | | | parent: 23:a01cddf0766d
772 | | | | | user: test
772 | | | | | user: test
773 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
773 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
774 | | | | | summary: (24) merge one known; immediate right
774 | | | | | summary: (24) merge one known; immediate right
775 | | | | |
775 | | | | |
776 | | o | | changeset: 23:a01cddf0766d
776 | | o | | changeset: 23:a01cddf0766d
777 | |/| | | parent: 1:6db2ef61d156
777 | |/| | | parent: 1:6db2ef61d156
778 | | | | | parent: 22:e0d9cccacb5d
778 | | | | | parent: 22:e0d9cccacb5d
779 | | | | | user: test
779 | | | | | user: test
780 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
780 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
781 | | | | | summary: (23) merge one known; immediate left
781 | | | | | summary: (23) merge one known; immediate left
782 | | | | |
782 | | | | |
783 +---o---+ changeset: 22:e0d9cccacb5d
783 +---o---+ changeset: 22:e0d9cccacb5d
784 | | | | parent: 18:1aa84d96232a
784 | | | | parent: 18:1aa84d96232a
785 | | / / parent: 21:d42a756af44d
785 | | / / parent: 21:d42a756af44d
786 | | | | user: test
786 | | | | user: test
787 | | | | date: Thu Jan 01 00:00:22 1970 +0000
787 | | | | date: Thu Jan 01 00:00:22 1970 +0000
788 | | | | summary: (22) merge two known; one far left, one far right
788 | | | | summary: (22) merge two known; one far left, one far right
789 | | | |
789 | | | |
790 o | | | changeset: 21:d42a756af44d
790 o | | | changeset: 21:d42a756af44d
791 |\ \ \ \ parent: 19:31ddc2c1573b
791 |\ \ \ \ parent: 19:31ddc2c1573b
792 | | | | | parent: 20:d30ed6450e32
792 | | | | | parent: 20:d30ed6450e32
793 | | | | | user: test
793 | | | | | user: test
794 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
794 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
795 | | | | | summary: (21) expand
795 | | | | | summary: (21) expand
796 | | | | |
796 | | | | |
797 | o---+-+ changeset: 20:d30ed6450e32
797 | o---+-+ changeset: 20:d30ed6450e32
798 | | | | parent: 0:e6eb3150255d
798 | | | | parent: 0:e6eb3150255d
799 | / / / parent: 18:1aa84d96232a
799 | / / / parent: 18:1aa84d96232a
800 | | | | user: test
800 | | | | user: test
801 | | | | date: Thu Jan 01 00:00:20 1970 +0000
801 | | | | date: Thu Jan 01 00:00:20 1970 +0000
802 | | | | summary: (20) merge two known; two far right
802 | | | | summary: (20) merge two known; two far right
803 | | | |
803 | | | |
804 o | | | changeset: 19:31ddc2c1573b
804 o | | | changeset: 19:31ddc2c1573b
805 |\ \ \ \ parent: 15:1dda3f72782d
805 |\ \ \ \ parent: 15:1dda3f72782d
806 | | | | | parent: 17:44765d7c06e0
806 | | | | | parent: 17:44765d7c06e0
807 | | | | | user: test
807 | | | | | user: test
808 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
808 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
809 | | | | | summary: (19) expand
809 | | | | | summary: (19) expand
810 | | | | |
810 | | | | |
811 +---+---o changeset: 18:1aa84d96232a
811 +---+---o changeset: 18:1aa84d96232a
812 | | | | parent: 1:6db2ef61d156
812 | | | | parent: 1:6db2ef61d156
813 | | | | parent: 15:1dda3f72782d
813 | | | | parent: 15:1dda3f72782d
814 | | | | user: test
814 | | | | user: test
815 | | | | date: Thu Jan 01 00:00:18 1970 +0000
815 | | | | date: Thu Jan 01 00:00:18 1970 +0000
816 | | | | summary: (18) merge two known; two far left
816 | | | | summary: (18) merge two known; two far left
817 | | | |
817 | | | |
818 | o | | changeset: 17:44765d7c06e0
818 | o | | changeset: 17:44765d7c06e0
819 | |\ \ \ parent: 12:86b91144a6e9
819 | |\ \ \ parent: 12:86b91144a6e9
820 | | | | | parent: 16:3677d192927d
820 | | | | | parent: 16:3677d192927d
821 | | | | | user: test
821 | | | | | user: test
822 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
822 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
823 | | | | | summary: (17) expand
823 | | | | | summary: (17) expand
824 | | | | |
824 | | | | |
825 | | o---+ changeset: 16:3677d192927d
825 | | o---+ changeset: 16:3677d192927d
826 | | | | | parent: 0:e6eb3150255d
826 | | | | | parent: 0:e6eb3150255d
827 | | |/ / parent: 1:6db2ef61d156
827 | | |/ / parent: 1:6db2ef61d156
828 | | | | user: test
828 | | | | user: test
829 | | | | date: Thu Jan 01 00:00:16 1970 +0000
829 | | | | date: Thu Jan 01 00:00:16 1970 +0000
830 | | | | summary: (16) merge two known; one immediate right, one near right
830 | | | | summary: (16) merge two known; one immediate right, one near right
831 | | | |
831 | | | |
832 o | | | changeset: 15:1dda3f72782d
832 o | | | changeset: 15:1dda3f72782d
833 |\ \ \ \ parent: 13:22d8966a97e3
833 |\ \ \ \ parent: 13:22d8966a97e3
834 | | | | | parent: 14:8eac370358ef
834 | | | | | parent: 14:8eac370358ef
835 | | | | | user: test
835 | | | | | user: test
836 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
836 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
837 | | | | | summary: (15) expand
837 | | | | | summary: (15) expand
838 | | | | |
838 | | | | |
839 | o-----+ changeset: 14:8eac370358ef
839 | o-----+ changeset: 14:8eac370358ef
840 | | | | | parent: 0:e6eb3150255d
840 | | | | | parent: 0:e6eb3150255d
841 | |/ / / parent: 12:86b91144a6e9
841 | |/ / / parent: 12:86b91144a6e9
842 | | | | user: test
842 | | | | user: test
843 | | | | date: Thu Jan 01 00:00:14 1970 +0000
843 | | | | date: Thu Jan 01 00:00:14 1970 +0000
844 | | | | summary: (14) merge two known; one immediate right, one far right
844 | | | | summary: (14) merge two known; one immediate right, one far right
845 | | | |
845 | | | |
846 o | | | changeset: 13:22d8966a97e3
846 o | | | changeset: 13:22d8966a97e3
847 |\ \ \ \ parent: 9:7010c0af0a35
847 |\ \ \ \ parent: 9:7010c0af0a35
848 | | | | | parent: 11:832d76e6bdf2
848 | | | | | parent: 11:832d76e6bdf2
849 | | | | | user: test
849 | | | | | user: test
850 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
850 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
851 | | | | | summary: (13) expand
851 | | | | | summary: (13) expand
852 | | | | |
852 | | | | |
853 +---o | | changeset: 12:86b91144a6e9
853 +---o | | changeset: 12:86b91144a6e9
854 | | |/ / parent: 1:6db2ef61d156
854 | | |/ / parent: 1:6db2ef61d156
855 | | | | parent: 9:7010c0af0a35
855 | | | | parent: 9:7010c0af0a35
856 | | | | user: test
856 | | | | user: test
857 | | | | date: Thu Jan 01 00:00:12 1970 +0000
857 | | | | date: Thu Jan 01 00:00:12 1970 +0000
858 | | | | summary: (12) merge two known; one immediate right, one far left
858 | | | | summary: (12) merge two known; one immediate right, one far left
859 | | | |
859 | | | |
860 | o | | changeset: 11:832d76e6bdf2
860 | o | | changeset: 11:832d76e6bdf2
861 | |\ \ \ parent: 6:b105a072e251
861 | |\ \ \ parent: 6:b105a072e251
862 | | | | | parent: 10:74c64d036d72
862 | | | | | parent: 10:74c64d036d72
863 | | | | | user: test
863 | | | | | user: test
864 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
864 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
865 | | | | | summary: (11) expand
865 | | | | | summary: (11) expand
866 | | | | |
866 | | | | |
867 | | o---+ changeset: 10:74c64d036d72
867 | | o---+ changeset: 10:74c64d036d72
868 | | | | | parent: 0:e6eb3150255d
868 | | | | | parent: 0:e6eb3150255d
869 | |/ / / parent: 6:b105a072e251
869 | |/ / / parent: 6:b105a072e251
870 | | | | user: test
870 | | | | user: test
871 | | | | date: Thu Jan 01 00:00:10 1970 +0000
871 | | | | date: Thu Jan 01 00:00:10 1970 +0000
872 | | | | summary: (10) merge two known; one immediate left, one near right
872 | | | | summary: (10) merge two known; one immediate left, one near right
873 | | | |
873 | | | |
874 o | | | changeset: 9:7010c0af0a35
874 o | | | changeset: 9:7010c0af0a35
875 |\ \ \ \ parent: 7:b632bb1b1224
875 |\ \ \ \ parent: 7:b632bb1b1224
876 | | | | | parent: 8:7a0b11f71937
876 | | | | | parent: 8:7a0b11f71937
877 | | | | | user: test
877 | | | | | user: test
878 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
878 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
879 | | | | | summary: (9) expand
879 | | | | | summary: (9) expand
880 | | | | |
880 | | | | |
881 | o-----+ changeset: 8:7a0b11f71937
881 | o-----+ changeset: 8:7a0b11f71937
882 | | | | | parent: 0:e6eb3150255d
882 | | | | | parent: 0:e6eb3150255d
883 |/ / / / parent: 7:b632bb1b1224
883 |/ / / / parent: 7:b632bb1b1224
884 | | | | user: test
884 | | | | user: test
885 | | | | date: Thu Jan 01 00:00:08 1970 +0000
885 | | | | date: Thu Jan 01 00:00:08 1970 +0000
886 | | | | summary: (8) merge two known; one immediate left, one far right
886 | | | | summary: (8) merge two known; one immediate left, one far right
887 | | | |
887 | | | |
888 o | | | changeset: 7:b632bb1b1224
888 o | | | changeset: 7:b632bb1b1224
889 |\ \ \ \ parent: 2:3d9a33b8d1e1
889 |\ \ \ \ parent: 2:3d9a33b8d1e1
890 | | | | | parent: 5:4409d547b708
890 | | | | | parent: 5:4409d547b708
891 | | | | | user: test
891 | | | | | user: test
892 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
892 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
893 | | | | | summary: (7) expand
893 | | | | | summary: (7) expand
894 | | | | |
894 | | | | |
895 +---o | | changeset: 6:b105a072e251
895 +---o | | changeset: 6:b105a072e251
896 | |/ / / parent: 2:3d9a33b8d1e1
896 | |/ / / parent: 2:3d9a33b8d1e1
897 | | | | parent: 5:4409d547b708
897 | | | | parent: 5:4409d547b708
898 | | | | user: test
898 | | | | user: test
899 | | | | date: Thu Jan 01 00:00:06 1970 +0000
899 | | | | date: Thu Jan 01 00:00:06 1970 +0000
900 | | | | summary: (6) merge two known; one immediate left, one far left
900 | | | | summary: (6) merge two known; one immediate left, one far left
901 | | | |
901 | | | |
902 | o | | changeset: 5:4409d547b708
902 | o | | changeset: 5:4409d547b708
903 | |\ \ \ parent: 3:27eef8ed80b4
903 | |\ \ \ parent: 3:27eef8ed80b4
904 | | | | | parent: 4:26a8bac39d9f
904 | | | | | parent: 4:26a8bac39d9f
905 | | | | | user: test
905 | | | | | user: test
906 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
906 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
907 | | | | | summary: (5) expand
907 | | | | | summary: (5) expand
908 | | | | |
908 | | | | |
909 | | o | | changeset: 4:26a8bac39d9f
909 | | o | | changeset: 4:26a8bac39d9f
910 | |/|/ / parent: 1:6db2ef61d156
910 | |/|/ / parent: 1:6db2ef61d156
911 | | | | parent: 3:27eef8ed80b4
911 | | | | parent: 3:27eef8ed80b4
912 | | | | user: test
912 | | | | user: test
913 | | | | date: Thu Jan 01 00:00:04 1970 +0000
913 | | | | date: Thu Jan 01 00:00:04 1970 +0000
914 | | | | summary: (4) merge two known; one immediate left, one immediate right
914 | | | | summary: (4) merge two known; one immediate left, one immediate right
915 | | | |
915 | | | |
916 | o | | changeset: 3:27eef8ed80b4
916 | o | | changeset: 3:27eef8ed80b4
917 |/ / / user: test
917 |/ / / user: test
918 | | | date: Thu Jan 01 00:00:03 1970 +0000
918 | | | date: Thu Jan 01 00:00:03 1970 +0000
919 | | | summary: (3) collapse
919 | | | summary: (3) collapse
920 | | |
920 | | |
921 o | | changeset: 2:3d9a33b8d1e1
921 o | | changeset: 2:3d9a33b8d1e1
922 |/ / user: test
922 |/ / user: test
923 | | date: Thu Jan 01 00:00:02 1970 +0000
923 | | date: Thu Jan 01 00:00:02 1970 +0000
924 | | summary: (2) collapse
924 | | summary: (2) collapse
925 | |
925 | |
926 o | changeset: 1:6db2ef61d156
926 o | changeset: 1:6db2ef61d156
927 |/ user: test
927 |/ user: test
928 | date: Thu Jan 01 00:00:01 1970 +0000
928 | date: Thu Jan 01 00:00:01 1970 +0000
929 | summary: (1) collapse
929 | summary: (1) collapse
930 |
930 |
931 o changeset: 0:e6eb3150255d
931 o changeset: 0:e6eb3150255d
932 user: test
932 user: test
933 date: Thu Jan 01 00:00:00 1970 +0000
933 date: Thu Jan 01 00:00:00 1970 +0000
934 summary: (0) root
934 summary: (0) root
935
935
936
936
937
937
938 File glog per revset (only merges):
938 File glog per revset (only merges):
939
939
940 $ hg log -G -r 'file("a")' -m
940 $ hg log -G -r 'file("a")' -m
941 o changeset: 32:d06dffa21a31
941 o changeset: 32:d06dffa21a31
942 |\ parent: 27:886ed638191b
942 |\ parent: 27:886ed638191b
943 | | parent: 31:621d83e11f67
943 | | parent: 31:621d83e11f67
944 | | user: test
944 | | user: test
945 | | date: Thu Jan 01 00:00:32 1970 +0000
945 | | date: Thu Jan 01 00:00:32 1970 +0000
946 | | summary: (32) expand
946 | | summary: (32) expand
947 | |
947 | |
948 o | changeset: 31:621d83e11f67
948 o | changeset: 31:621d83e11f67
949 |\| parent: 21:d42a756af44d
949 |\| parent: 21:d42a756af44d
950 | | parent: 30:6e11cd4b648f
950 | | parent: 30:6e11cd4b648f
951 | | user: test
951 | | user: test
952 | | date: Thu Jan 01 00:00:31 1970 +0000
952 | | date: Thu Jan 01 00:00:31 1970 +0000
953 | | summary: (31) expand
953 | | summary: (31) expand
954 | |
954 | |
955 o | changeset: 30:6e11cd4b648f
955 o | changeset: 30:6e11cd4b648f
956 |\ \ parent: 28:44ecd0b9ae99
956 |\ \ parent: 28:44ecd0b9ae99
957 | | | parent: 29:cd9bb2be7593
957 | | | parent: 29:cd9bb2be7593
958 | | | user: test
958 | | | user: test
959 | | | date: Thu Jan 01 00:00:30 1970 +0000
959 | | | date: Thu Jan 01 00:00:30 1970 +0000
960 | | | summary: (30) expand
960 | | | summary: (30) expand
961 | | |
961 | | |
962 o | | changeset: 28:44ecd0b9ae99
962 o | | changeset: 28:44ecd0b9ae99
963 |\ \ \ parent: 1:6db2ef61d156
963 |\ \ \ parent: 1:6db2ef61d156
964 | | | | parent: 26:7f25b6c2f0b9
964 | | | | parent: 26:7f25b6c2f0b9
965 | | | | user: test
965 | | | | user: test
966 | | | | date: Thu Jan 01 00:00:28 1970 +0000
966 | | | | date: Thu Jan 01 00:00:28 1970 +0000
967 | | | | summary: (28) merge zero known
967 | | | | summary: (28) merge zero known
968 | | | |
968 | | | |
969 o | | | changeset: 26:7f25b6c2f0b9
969 o | | | changeset: 26:7f25b6c2f0b9
970 |\ \ \ \ parent: 18:1aa84d96232a
970 |\ \ \ \ parent: 18:1aa84d96232a
971 | | | | | parent: 25:91da8ed57247
971 | | | | | parent: 25:91da8ed57247
972 | | | | | user: test
972 | | | | | user: test
973 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
973 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
974 | | | | | summary: (26) merge one known; far right
974 | | | | | summary: (26) merge one known; far right
975 | | | | |
975 | | | | |
976 | o-----+ changeset: 25:91da8ed57247
976 | o-----+ changeset: 25:91da8ed57247
977 | | | | | parent: 21:d42a756af44d
977 | | | | | parent: 21:d42a756af44d
978 | | | | | parent: 24:a9c19a3d96b7
978 | | | | | parent: 24:a9c19a3d96b7
979 | | | | | user: test
979 | | | | | user: test
980 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
980 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
981 | | | | | summary: (25) merge one known; far left
981 | | | | | summary: (25) merge one known; far left
982 | | | | |
982 | | | | |
983 | o | | | changeset: 24:a9c19a3d96b7
983 | o | | | changeset: 24:a9c19a3d96b7
984 | |\ \ \ \ parent: 0:e6eb3150255d
984 | |\ \ \ \ parent: 0:e6eb3150255d
985 | | | | | | parent: 23:a01cddf0766d
985 | | | | | | parent: 23:a01cddf0766d
986 | | | | | | user: test
986 | | | | | | user: test
987 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
987 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
988 | | | | | | summary: (24) merge one known; immediate right
988 | | | | | | summary: (24) merge one known; immediate right
989 | | | | | |
989 | | | | | |
990 | o---+ | | changeset: 23:a01cddf0766d
990 | o---+ | | changeset: 23:a01cddf0766d
991 | | | | | | parent: 1:6db2ef61d156
991 | | | | | | parent: 1:6db2ef61d156
992 | | | | | | parent: 22:e0d9cccacb5d
992 | | | | | | parent: 22:e0d9cccacb5d
993 | | | | | | user: test
993 | | | | | | user: test
994 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
994 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
995 | | | | | | summary: (23) merge one known; immediate left
995 | | | | | | summary: (23) merge one known; immediate left
996 | | | | | |
996 | | | | | |
997 | o-------+ changeset: 22:e0d9cccacb5d
997 | o-------+ changeset: 22:e0d9cccacb5d
998 | | | | | | parent: 18:1aa84d96232a
998 | | | | | | parent: 18:1aa84d96232a
999 |/ / / / / parent: 21:d42a756af44d
999 |/ / / / / parent: 21:d42a756af44d
1000 | | | | | user: test
1000 | | | | | user: test
1001 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
1001 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
1002 | | | | | summary: (22) merge two known; one far left, one far right
1002 | | | | | summary: (22) merge two known; one far left, one far right
1003 | | | | |
1003 | | | | |
1004 | | | | o changeset: 21:d42a756af44d
1004 | | | | o changeset: 21:d42a756af44d
1005 | | | | |\ parent: 19:31ddc2c1573b
1005 | | | | |\ parent: 19:31ddc2c1573b
1006 | | | | | | parent: 20:d30ed6450e32
1006 | | | | | | parent: 20:d30ed6450e32
1007 | | | | | | user: test
1007 | | | | | | user: test
1008 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
1008 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
1009 | | | | | | summary: (21) expand
1009 | | | | | | summary: (21) expand
1010 | | | | | |
1010 | | | | | |
1011 +-+-------o changeset: 20:d30ed6450e32
1011 +-+-------o changeset: 20:d30ed6450e32
1012 | | | | | parent: 0:e6eb3150255d
1012 | | | | | parent: 0:e6eb3150255d
1013 | | | | | parent: 18:1aa84d96232a
1013 | | | | | parent: 18:1aa84d96232a
1014 | | | | | user: test
1014 | | | | | user: test
1015 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
1015 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
1016 | | | | | summary: (20) merge two known; two far right
1016 | | | | | summary: (20) merge two known; two far right
1017 | | | | |
1017 | | | | |
1018 | | | | o changeset: 19:31ddc2c1573b
1018 | | | | o changeset: 19:31ddc2c1573b
1019 | | | | |\ parent: 15:1dda3f72782d
1019 | | | | |\ parent: 15:1dda3f72782d
1020 | | | | | | parent: 17:44765d7c06e0
1020 | | | | | | parent: 17:44765d7c06e0
1021 | | | | | | user: test
1021 | | | | | | user: test
1022 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
1022 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
1023 | | | | | | summary: (19) expand
1023 | | | | | | summary: (19) expand
1024 | | | | | |
1024 | | | | | |
1025 o---+---+ | changeset: 18:1aa84d96232a
1025 o---+---+ | changeset: 18:1aa84d96232a
1026 | | | | | parent: 1:6db2ef61d156
1026 | | | | | parent: 1:6db2ef61d156
1027 / / / / / parent: 15:1dda3f72782d
1027 / / / / / parent: 15:1dda3f72782d
1028 | | | | | user: test
1028 | | | | | user: test
1029 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
1029 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
1030 | | | | | summary: (18) merge two known; two far left
1030 | | | | | summary: (18) merge two known; two far left
1031 | | | | |
1031 | | | | |
1032 | | | | o changeset: 17:44765d7c06e0
1032 | | | | o changeset: 17:44765d7c06e0
1033 | | | | |\ parent: 12:86b91144a6e9
1033 | | | | |\ parent: 12:86b91144a6e9
1034 | | | | | | parent: 16:3677d192927d
1034 | | | | | | parent: 16:3677d192927d
1035 | | | | | | user: test
1035 | | | | | | user: test
1036 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
1036 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
1037 | | | | | | summary: (17) expand
1037 | | | | | | summary: (17) expand
1038 | | | | | |
1038 | | | | | |
1039 +-+-------o changeset: 16:3677d192927d
1039 +-+-------o changeset: 16:3677d192927d
1040 | | | | | parent: 0:e6eb3150255d
1040 | | | | | parent: 0:e6eb3150255d
1041 | | | | | parent: 1:6db2ef61d156
1041 | | | | | parent: 1:6db2ef61d156
1042 | | | | | user: test
1042 | | | | | user: test
1043 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
1043 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
1044 | | | | | summary: (16) merge two known; one immediate right, one near right
1044 | | | | | summary: (16) merge two known; one immediate right, one near right
1045 | | | | |
1045 | | | | |
1046 | | | o | changeset: 15:1dda3f72782d
1046 | | | o | changeset: 15:1dda3f72782d
1047 | | | |\ \ parent: 13:22d8966a97e3
1047 | | | |\ \ parent: 13:22d8966a97e3
1048 | | | | | | parent: 14:8eac370358ef
1048 | | | | | | parent: 14:8eac370358ef
1049 | | | | | | user: test
1049 | | | | | | user: test
1050 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
1050 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
1051 | | | | | | summary: (15) expand
1051 | | | | | | summary: (15) expand
1052 | | | | | |
1052 | | | | | |
1053 +-------o | changeset: 14:8eac370358ef
1053 +-------o | changeset: 14:8eac370358ef
1054 | | | | |/ parent: 0:e6eb3150255d
1054 | | | | |/ parent: 0:e6eb3150255d
1055 | | | | | parent: 12:86b91144a6e9
1055 | | | | | parent: 12:86b91144a6e9
1056 | | | | | user: test
1056 | | | | | user: test
1057 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
1057 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
1058 | | | | | summary: (14) merge two known; one immediate right, one far right
1058 | | | | | summary: (14) merge two known; one immediate right, one far right
1059 | | | | |
1059 | | | | |
1060 | | | o | changeset: 13:22d8966a97e3
1060 | | | o | changeset: 13:22d8966a97e3
1061 | | | |\ \ parent: 9:7010c0af0a35
1061 | | | |\ \ parent: 9:7010c0af0a35
1062 | | | | | | parent: 11:832d76e6bdf2
1062 | | | | | | parent: 11:832d76e6bdf2
1063 | | | | | | user: test
1063 | | | | | | user: test
1064 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
1064 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
1065 | | | | | | summary: (13) expand
1065 | | | | | | summary: (13) expand
1066 | | | | | |
1066 | | | | | |
1067 | +---+---o changeset: 12:86b91144a6e9
1067 | +---+---o changeset: 12:86b91144a6e9
1068 | | | | | parent: 1:6db2ef61d156
1068 | | | | | parent: 1:6db2ef61d156
1069 | | | | | parent: 9:7010c0af0a35
1069 | | | | | parent: 9:7010c0af0a35
1070 | | | | | user: test
1070 | | | | | user: test
1071 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
1071 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
1072 | | | | | summary: (12) merge two known; one immediate right, one far left
1072 | | | | | summary: (12) merge two known; one immediate right, one far left
1073 | | | | |
1073 | | | | |
1074 | | | | o changeset: 11:832d76e6bdf2
1074 | | | | o changeset: 11:832d76e6bdf2
1075 | | | | |\ parent: 6:b105a072e251
1075 | | | | |\ parent: 6:b105a072e251
1076 | | | | | | parent: 10:74c64d036d72
1076 | | | | | | parent: 10:74c64d036d72
1077 | | | | | | user: test
1077 | | | | | | user: test
1078 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
1078 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
1079 | | | | | | summary: (11) expand
1079 | | | | | | summary: (11) expand
1080 | | | | | |
1080 | | | | | |
1081 +---------o changeset: 10:74c64d036d72
1081 +---------o changeset: 10:74c64d036d72
1082 | | | | |/ parent: 0:e6eb3150255d
1082 | | | | |/ parent: 0:e6eb3150255d
1083 | | | | | parent: 6:b105a072e251
1083 | | | | | parent: 6:b105a072e251
1084 | | | | | user: test
1084 | | | | | user: test
1085 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
1085 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
1086 | | | | | summary: (10) merge two known; one immediate left, one near right
1086 | | | | | summary: (10) merge two known; one immediate left, one near right
1087 | | | | |
1087 | | | | |
1088 | | | o | changeset: 9:7010c0af0a35
1088 | | | o | changeset: 9:7010c0af0a35
1089 | | | |\ \ parent: 7:b632bb1b1224
1089 | | | |\ \ parent: 7:b632bb1b1224
1090 | | | | | | parent: 8:7a0b11f71937
1090 | | | | | | parent: 8:7a0b11f71937
1091 | | | | | | user: test
1091 | | | | | | user: test
1092 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
1092 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
1093 | | | | | | summary: (9) expand
1093 | | | | | | summary: (9) expand
1094 | | | | | |
1094 | | | | | |
1095 +-------o | changeset: 8:7a0b11f71937
1095 +-------o | changeset: 8:7a0b11f71937
1096 | | | |/ / parent: 0:e6eb3150255d
1096 | | | |/ / parent: 0:e6eb3150255d
1097 | | | | | parent: 7:b632bb1b1224
1097 | | | | | parent: 7:b632bb1b1224
1098 | | | | | user: test
1098 | | | | | user: test
1099 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
1099 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
1100 | | | | | summary: (8) merge two known; one immediate left, one far right
1100 | | | | | summary: (8) merge two known; one immediate left, one far right
1101 | | | | |
1101 | | | | |
1102 | | | o | changeset: 7:b632bb1b1224
1102 | | | o | changeset: 7:b632bb1b1224
1103 | | | |\ \ parent: 2:3d9a33b8d1e1
1103 | | | |\ \ parent: 2:3d9a33b8d1e1
1104 | | | | | | parent: 5:4409d547b708
1104 | | | | | | parent: 5:4409d547b708
1105 | | | | | | user: test
1105 | | | | | | user: test
1106 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
1106 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
1107 | | | | | | summary: (7) expand
1107 | | | | | | summary: (7) expand
1108 | | | | | |
1108 | | | | | |
1109 | | | +---o changeset: 6:b105a072e251
1109 | | | +---o changeset: 6:b105a072e251
1110 | | | | |/ parent: 2:3d9a33b8d1e1
1110 | | | | |/ parent: 2:3d9a33b8d1e1
1111 | | | | | parent: 5:4409d547b708
1111 | | | | | parent: 5:4409d547b708
1112 | | | | | user: test
1112 | | | | | user: test
1113 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
1113 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
1114 | | | | | summary: (6) merge two known; one immediate left, one far left
1114 | | | | | summary: (6) merge two known; one immediate left, one far left
1115 | | | | |
1115 | | | | |
1116 | | | o | changeset: 5:4409d547b708
1116 | | | o | changeset: 5:4409d547b708
1117 | | | |\ \ parent: 3:27eef8ed80b4
1117 | | | |\ \ parent: 3:27eef8ed80b4
1118 | | | | | | parent: 4:26a8bac39d9f
1118 | | | | | | parent: 4:26a8bac39d9f
1119 | | | | | | user: test
1119 | | | | | | user: test
1120 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
1120 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
1121 | | | | | | summary: (5) expand
1121 | | | | | | summary: (5) expand
1122 | | | | | |
1122 | | | | | |
1123 | +---o | | changeset: 4:26a8bac39d9f
1123 | +---o | | changeset: 4:26a8bac39d9f
1124 | | | |/ / parent: 1:6db2ef61d156
1124 | | | |/ / parent: 1:6db2ef61d156
1125 | | | | | parent: 3:27eef8ed80b4
1125 | | | | | parent: 3:27eef8ed80b4
1126 | | | | | user: test
1126 | | | | | user: test
1127 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
1127 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
1128 | | | | | summary: (4) merge two known; one immediate left, one immediate right
1128 | | | | | summary: (4) merge two known; one immediate left, one immediate right
1129 | | | | |
1129 | | | | |
1130
1130
1131
1131
1132 Empty revision range - display nothing:
1132 Empty revision range - display nothing:
1133 $ hg glog -r 1..0
1133 $ hg glog -r 1..0
1134
1134
1135 From outer space:
1135 From outer space:
1136 $ cd ..
1136 $ cd ..
1137 $ hg glog -l1 repo
1137 $ hg glog -l1 repo
1138 @ changeset: 34:fea3ac5810e0
1138 @ changeset: 34:fea3ac5810e0
1139 | tag: tip
1139 | tag: tip
1140 | parent: 32:d06dffa21a31
1140 | parent: 32:d06dffa21a31
1141 | user: test
1141 | user: test
1142 | date: Thu Jan 01 00:00:34 1970 +0000
1142 | date: Thu Jan 01 00:00:34 1970 +0000
1143 | summary: (34) head
1143 | summary: (34) head
1144 |
1144 |
1145 $ hg glog -l1 repo/a
1145 $ hg glog -l1 repo/a
1146 @ changeset: 34:fea3ac5810e0
1146 @ changeset: 34:fea3ac5810e0
1147 | tag: tip
1147 | tag: tip
1148 | parent: 32:d06dffa21a31
1148 | parent: 32:d06dffa21a31
1149 | user: test
1149 | user: test
1150 | date: Thu Jan 01 00:00:34 1970 +0000
1150 | date: Thu Jan 01 00:00:34 1970 +0000
1151 | summary: (34) head
1151 | summary: (34) head
1152 |
1152 |
1153 $ hg glog -l1 repo/missing
1153 $ hg glog -l1 repo/missing
1154
1154
1155 File log with revs != cset revs:
1155 File log with revs != cset revs:
1156 $ hg init flog
1156 $ hg init flog
1157 $ cd flog
1157 $ cd flog
1158 $ echo one >one
1158 $ echo one >one
1159 $ hg add one
1159 $ hg add one
1160 $ hg commit -mone
1160 $ hg commit -mone
1161 $ echo two >two
1161 $ echo two >two
1162 $ hg add two
1162 $ hg add two
1163 $ hg commit -mtwo
1163 $ hg commit -mtwo
1164 $ echo more >two
1164 $ echo more >two
1165 $ hg commit -mmore
1165 $ hg commit -mmore
1166 $ hg glog two
1166 $ hg glog two
1167 @ changeset: 2:12c28321755b
1167 @ changeset: 2:12c28321755b
1168 | tag: tip
1168 | tag: tip
1169 | user: test
1169 | user: test
1170 | date: Thu Jan 01 00:00:00 1970 +0000
1170 | date: Thu Jan 01 00:00:00 1970 +0000
1171 | summary: more
1171 | summary: more
1172 |
1172 |
1173 o changeset: 1:5ac72c0599bf
1173 o changeset: 1:5ac72c0599bf
1174 | user: test
1174 | user: test
1175 | date: Thu Jan 01 00:00:00 1970 +0000
1175 | date: Thu Jan 01 00:00:00 1970 +0000
1176 | summary: two
1176 | summary: two
1177 |
1177 |
1178
1178
1179 Issue1896: File log with explicit style
1179 Issue1896: File log with explicit style
1180 $ hg glog --style=default one
1180 $ hg glog --style=default one
1181 o changeset: 0:3d578b4a1f53
1181 o changeset: 0:3d578b4a1f53
1182 user: test
1182 user: test
1183 date: Thu Jan 01 00:00:00 1970 +0000
1183 date: Thu Jan 01 00:00:00 1970 +0000
1184 summary: one
1184 summary: one
1185
1185
1186 Issue2395: glog --style header and footer
1186 Issue2395: glog --style header and footer
1187 $ hg glog --style=xml one
1187 $ hg glog --style=xml one
1188 <?xml version="1.0"?>
1188 <?xml version="1.0"?>
1189 <log>
1189 <log>
1190 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1190 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1191 <author email="test">test</author>
1191 <author email="test">test</author>
1192 <date>1970-01-01T00:00:00+00:00</date>
1192 <date>1970-01-01T00:00:00+00:00</date>
1193 <msg xml:space="preserve">one</msg>
1193 <msg xml:space="preserve">one</msg>
1194 </logentry>
1194 </logentry>
1195 </log>
1195 </log>
1196
1196
1197 $ cd ..
1197 $ cd ..
1198
1198
1199 Incoming and outgoing:
1199 Incoming and outgoing:
1200
1200
1201 $ hg clone -U -r31 repo repo2
1201 $ hg clone -U -r31 repo repo2
1202 adding changesets
1202 adding changesets
1203 adding manifests
1203 adding manifests
1204 adding file changes
1204 adding file changes
1205 added 31 changesets with 31 changes to 1 files
1205 added 31 changesets with 31 changes to 1 files
1206 $ cd repo2
1206 $ cd repo2
1207
1207
1208 $ hg incoming --graph ../repo
1208 $ hg incoming --graph ../repo
1209 comparing with ../repo
1209 comparing with ../repo
1210 searching for changes
1210 searching for changes
1211 o changeset: 34:fea3ac5810e0
1211 o changeset: 34:fea3ac5810e0
1212 | tag: tip
1212 | tag: tip
1213 | parent: 32:d06dffa21a31
1213 | parent: 32:d06dffa21a31
1214 | user: test
1214 | user: test
1215 | date: Thu Jan 01 00:00:34 1970 +0000
1215 | date: Thu Jan 01 00:00:34 1970 +0000
1216 | summary: (34) head
1216 | summary: (34) head
1217 |
1217 |
1218 | o changeset: 33:68608f5145f9
1218 | o changeset: 33:68608f5145f9
1219 | parent: 18:1aa84d96232a
1219 | parent: 18:1aa84d96232a
1220 | user: test
1220 | user: test
1221 | date: Thu Jan 01 00:00:33 1970 +0000
1221 | date: Thu Jan 01 00:00:33 1970 +0000
1222 | summary: (33) head
1222 | summary: (33) head
1223 |
1223 |
1224 o changeset: 32:d06dffa21a31
1224 o changeset: 32:d06dffa21a31
1225 | parent: 27:886ed638191b
1225 | parent: 27:886ed638191b
1226 | parent: 31:621d83e11f67
1226 | parent: 31:621d83e11f67
1227 | user: test
1227 | user: test
1228 | date: Thu Jan 01 00:00:32 1970 +0000
1228 | date: Thu Jan 01 00:00:32 1970 +0000
1229 | summary: (32) expand
1229 | summary: (32) expand
1230 |
1230 |
1231 o changeset: 27:886ed638191b
1231 o changeset: 27:886ed638191b
1232 parent: 21:d42a756af44d
1232 parent: 21:d42a756af44d
1233 user: test
1233 user: test
1234 date: Thu Jan 01 00:00:27 1970 +0000
1234 date: Thu Jan 01 00:00:27 1970 +0000
1235 summary: (27) collapse
1235 summary: (27) collapse
1236
1236
1237 $ cd ..
1237 $ cd ..
1238
1238
1239 $ hg -R repo outgoing --graph repo2
1239 $ hg -R repo outgoing --graph repo2
1240 comparing with repo2
1240 comparing with repo2
1241 searching for changes
1241 searching for changes
1242 @ changeset: 34:fea3ac5810e0
1242 @ changeset: 34:fea3ac5810e0
1243 | tag: tip
1243 | tag: tip
1244 | parent: 32:d06dffa21a31
1244 | parent: 32:d06dffa21a31
1245 | user: test
1245 | user: test
1246 | date: Thu Jan 01 00:00:34 1970 +0000
1246 | date: Thu Jan 01 00:00:34 1970 +0000
1247 | summary: (34) head
1247 | summary: (34) head
1248 |
1248 |
1249 | o changeset: 33:68608f5145f9
1249 | o changeset: 33:68608f5145f9
1250 | parent: 18:1aa84d96232a
1250 | parent: 18:1aa84d96232a
1251 | user: test
1251 | user: test
1252 | date: Thu Jan 01 00:00:33 1970 +0000
1252 | date: Thu Jan 01 00:00:33 1970 +0000
1253 | summary: (33) head
1253 | summary: (33) head
1254 |
1254 |
1255 o changeset: 32:d06dffa21a31
1255 o changeset: 32:d06dffa21a31
1256 | parent: 27:886ed638191b
1256 | parent: 27:886ed638191b
1257 | parent: 31:621d83e11f67
1257 | parent: 31:621d83e11f67
1258 | user: test
1258 | user: test
1259 | date: Thu Jan 01 00:00:32 1970 +0000
1259 | date: Thu Jan 01 00:00:32 1970 +0000
1260 | summary: (32) expand
1260 | summary: (32) expand
1261 |
1261 |
1262 o changeset: 27:886ed638191b
1262 o changeset: 27:886ed638191b
1263 parent: 21:d42a756af44d
1263 parent: 21:d42a756af44d
1264 user: test
1264 user: test
1265 date: Thu Jan 01 00:00:27 1970 +0000
1265 date: Thu Jan 01 00:00:27 1970 +0000
1266 summary: (27) collapse
1266 summary: (27) collapse
1267
1267
1268
1268
1269 File + limit with revs != cset revs:
1269 File + limit with revs != cset revs:
1270 $ cd repo
1270 $ cd repo
1271 $ touch b
1271 $ touch b
1272 $ hg ci -Aqm0
1272 $ hg ci -Aqm0
1273 $ hg glog -l2 a
1273 $ hg glog -l2 a
1274 o changeset: 34:fea3ac5810e0
1274 o changeset: 34:fea3ac5810e0
1275 | parent: 32:d06dffa21a31
1275 | parent: 32:d06dffa21a31
1276 | user: test
1276 | user: test
1277 | date: Thu Jan 01 00:00:34 1970 +0000
1277 | date: Thu Jan 01 00:00:34 1970 +0000
1278 | summary: (34) head
1278 | summary: (34) head
1279 |
1279 |
1280 | o changeset: 33:68608f5145f9
1280 | o changeset: 33:68608f5145f9
1281 | | parent: 18:1aa84d96232a
1281 | | parent: 18:1aa84d96232a
1282 | | user: test
1282 | | user: test
1283 | | date: Thu Jan 01 00:00:33 1970 +0000
1283 | | date: Thu Jan 01 00:00:33 1970 +0000
1284 | | summary: (33) head
1284 | | summary: (33) head
1285 | |
1285 | |
1286
1286
1287 File + limit + -ra:b, (b - a) < limit:
1287 File + limit + -ra:b, (b - a) < limit:
1288 $ hg glog -l3000 -r32:tip a
1288 $ hg glog -l3000 -r32:tip a
1289 o changeset: 34:fea3ac5810e0
1289 o changeset: 34:fea3ac5810e0
1290 | parent: 32:d06dffa21a31
1290 | parent: 32:d06dffa21a31
1291 | user: test
1291 | user: test
1292 | date: Thu Jan 01 00:00:34 1970 +0000
1292 | date: Thu Jan 01 00:00:34 1970 +0000
1293 | summary: (34) head
1293 | summary: (34) head
1294 |
1294 |
1295 | o changeset: 33:68608f5145f9
1295 | o changeset: 33:68608f5145f9
1296 | | parent: 18:1aa84d96232a
1296 | | parent: 18:1aa84d96232a
1297 | | user: test
1297 | | user: test
1298 | | date: Thu Jan 01 00:00:33 1970 +0000
1298 | | date: Thu Jan 01 00:00:33 1970 +0000
1299 | | summary: (33) head
1299 | | summary: (33) head
1300 | |
1300 | |
1301 o | changeset: 32:d06dffa21a31
1301 o | changeset: 32:d06dffa21a31
1302 |\ \ parent: 27:886ed638191b
1302 |\ \ parent: 27:886ed638191b
1303 | | | parent: 31:621d83e11f67
1303 | | | parent: 31:621d83e11f67
1304 | | | user: test
1304 | | | user: test
1305 | | | date: Thu Jan 01 00:00:32 1970 +0000
1305 | | | date: Thu Jan 01 00:00:32 1970 +0000
1306 | | | summary: (32) expand
1306 | | | summary: (32) expand
1307 | | |
1307 | | |
1308
1308
1309 Point out a common and an uncommon unshown parent
1309 Point out a common and an uncommon unshown parent
1310
1310
1311 $ hg glog -r 'rev(8) or rev(9)'
1311 $ hg glog -r 'rev(8) or rev(9)'
1312 o changeset: 9:7010c0af0a35
1312 o changeset: 9:7010c0af0a35
1313 |\ parent: 7:b632bb1b1224
1313 |\ parent: 7:b632bb1b1224
1314 | | parent: 8:7a0b11f71937
1314 | | parent: 8:7a0b11f71937
1315 | | user: test
1315 | | user: test
1316 | | date: Thu Jan 01 00:00:09 1970 +0000
1316 | | date: Thu Jan 01 00:00:09 1970 +0000
1317 | | summary: (9) expand
1317 | | summary: (9) expand
1318 | |
1318 | |
1319 o | changeset: 8:7a0b11f71937
1319 o | changeset: 8:7a0b11f71937
1320 |\| parent: 0:e6eb3150255d
1320 |\| parent: 0:e6eb3150255d
1321 | | parent: 7:b632bb1b1224
1321 | | parent: 7:b632bb1b1224
1322 | | user: test
1322 | | user: test
1323 | | date: Thu Jan 01 00:00:08 1970 +0000
1323 | | date: Thu Jan 01 00:00:08 1970 +0000
1324 | | summary: (8) merge two known; one immediate left, one far right
1324 | | summary: (8) merge two known; one immediate left, one far right
1325 | |
1325 | |
1326
1326
1327 File + limit + -ra:b, b < tip:
1327 File + limit + -ra:b, b < tip:
1328
1328
1329 $ hg glog -l1 -r32:34 a
1329 $ hg glog -l1 -r32:34 a
1330 o changeset: 34:fea3ac5810e0
1330 o changeset: 34:fea3ac5810e0
1331 | parent: 32:d06dffa21a31
1331 | parent: 32:d06dffa21a31
1332 | user: test
1332 | user: test
1333 | date: Thu Jan 01 00:00:34 1970 +0000
1333 | date: Thu Jan 01 00:00:34 1970 +0000
1334 | summary: (34) head
1334 | summary: (34) head
1335 |
1335 |
1336
1336
1337 file(File) + limit + -ra:b, b < tip:
1337 file(File) + limit + -ra:b, b < tip:
1338
1338
1339 $ hg glog -l1 -r32:34 -r 'file("a")'
1339 $ hg glog -l1 -r32:34 -r 'file("a")'
1340 o changeset: 34:fea3ac5810e0
1340 o changeset: 34:fea3ac5810e0
1341 | parent: 32:d06dffa21a31
1341 | parent: 32:d06dffa21a31
1342 | user: test
1342 | user: test
1343 | date: Thu Jan 01 00:00:34 1970 +0000
1343 | date: Thu Jan 01 00:00:34 1970 +0000
1344 | summary: (34) head
1344 | summary: (34) head
1345 |
1345 |
1346
1346
1347 limit(file(File) and a::b), b < tip:
1347 limit(file(File) and a::b), b < tip:
1348
1348
1349 $ hg glog -r 'limit(file("a") and 32::34, 1)'
1349 $ hg glog -r 'limit(file("a") and 32::34, 1)'
1350 o changeset: 32:d06dffa21a31
1350 o changeset: 32:d06dffa21a31
1351 |\ parent: 27:886ed638191b
1351 |\ parent: 27:886ed638191b
1352 | | parent: 31:621d83e11f67
1352 | | parent: 31:621d83e11f67
1353 | | user: test
1353 | | user: test
1354 | | date: Thu Jan 01 00:00:32 1970 +0000
1354 | | date: Thu Jan 01 00:00:32 1970 +0000
1355 | | summary: (32) expand
1355 | | summary: (32) expand
1356 | |
1356 | |
1357
1357
1358 File + limit + -ra:b, b < tip:
1358 File + limit + -ra:b, b < tip:
1359
1359
1360 $ hg glog -r 'limit(file("a") and 34::32, 1)'
1360 $ hg glog -r 'limit(file("a") and 34::32, 1)'
1361
1361
1362 File + limit + -ra:b, b < tip, (b - a) < limit:
1362 File + limit + -ra:b, b < tip, (b - a) < limit:
1363
1363
1364 $ hg glog -l10 -r33:34 a
1364 $ hg glog -l10 -r33:34 a
1365 o changeset: 34:fea3ac5810e0
1365 o changeset: 34:fea3ac5810e0
1366 | parent: 32:d06dffa21a31
1366 | parent: 32:d06dffa21a31
1367 | user: test
1367 | user: test
1368 | date: Thu Jan 01 00:00:34 1970 +0000
1368 | date: Thu Jan 01 00:00:34 1970 +0000
1369 | summary: (34) head
1369 | summary: (34) head
1370 |
1370 |
1371 | o changeset: 33:68608f5145f9
1371 | o changeset: 33:68608f5145f9
1372 | | parent: 18:1aa84d96232a
1372 | | parent: 18:1aa84d96232a
1373 | | user: test
1373 | | user: test
1374 | | date: Thu Jan 01 00:00:33 1970 +0000
1374 | | date: Thu Jan 01 00:00:33 1970 +0000
1375 | | summary: (33) head
1375 | | summary: (33) head
1376 | |
1376 | |
1377
1377
1378 Do not crash or produce strange graphs if history is buggy
1378 Do not crash or produce strange graphs if history is buggy
1379
1379
1380 $ hg branch branch
1380 $ hg branch branch
1381 marked working directory as branch branch
1381 marked working directory as branch branch
1382 (branches are permanent and global, did you want a bookmark?)
1382 (branches are permanent and global, did you want a bookmark?)
1383 $ commit 36 "buggy merge: identical parents" 35 35
1383 $ commit 36 "buggy merge: identical parents" 35 35
1384 $ hg glog -l5
1384 $ hg glog -l5
1385 @ changeset: 36:08a19a744424
1385 @ changeset: 36:08a19a744424
1386 | branch: branch
1386 | branch: branch
1387 | tag: tip
1387 | tag: tip
1388 | parent: 35:9159c3644c5e
1388 | parent: 35:9159c3644c5e
1389 | parent: 35:9159c3644c5e
1389 | parent: 35:9159c3644c5e
1390 | user: test
1390 | user: test
1391 | date: Thu Jan 01 00:00:36 1970 +0000
1391 | date: Thu Jan 01 00:00:36 1970 +0000
1392 | summary: (36) buggy merge: identical parents
1392 | summary: (36) buggy merge: identical parents
1393 |
1393 |
1394 o changeset: 35:9159c3644c5e
1394 o changeset: 35:9159c3644c5e
1395 | user: test
1395 | user: test
1396 | date: Thu Jan 01 00:00:00 1970 +0000
1396 | date: Thu Jan 01 00:00:00 1970 +0000
1397 | summary: 0
1397 | summary: 0
1398 |
1398 |
1399 o changeset: 34:fea3ac5810e0
1399 o changeset: 34:fea3ac5810e0
1400 | parent: 32:d06dffa21a31
1400 | parent: 32:d06dffa21a31
1401 | user: test
1401 | user: test
1402 | date: Thu Jan 01 00:00:34 1970 +0000
1402 | date: Thu Jan 01 00:00:34 1970 +0000
1403 | summary: (34) head
1403 | summary: (34) head
1404 |
1404 |
1405 | o changeset: 33:68608f5145f9
1405 | o changeset: 33:68608f5145f9
1406 | | parent: 18:1aa84d96232a
1406 | | parent: 18:1aa84d96232a
1407 | | user: test
1407 | | user: test
1408 | | date: Thu Jan 01 00:00:33 1970 +0000
1408 | | date: Thu Jan 01 00:00:33 1970 +0000
1409 | | summary: (33) head
1409 | | summary: (33) head
1410 | |
1410 | |
1411 o | changeset: 32:d06dffa21a31
1411 o | changeset: 32:d06dffa21a31
1412 |\ \ parent: 27:886ed638191b
1412 |\ \ parent: 27:886ed638191b
1413 | | | parent: 31:621d83e11f67
1413 | | | parent: 31:621d83e11f67
1414 | | | user: test
1414 | | | user: test
1415 | | | date: Thu Jan 01 00:00:32 1970 +0000
1415 | | | date: Thu Jan 01 00:00:32 1970 +0000
1416 | | | summary: (32) expand
1416 | | | summary: (32) expand
1417 | | |
1417 | | |
1418
1418
1419 Test log -G options
1419 Test log -G options
1420
1420
1421 $ testlog() {
1421 $ testlog() {
1422 > hg log -G --print-revset "$@"
1422 > hg log -G --print-revset "$@"
1423 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1423 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1424 > | sed 's/.*nodetag/nodetag/' > log.nodes
1424 > | sed 's/.*nodetag/nodetag/' > log.nodes
1425 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1425 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1426 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1426 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1427 > diff -u log.nodes glog.nodes
1427 > diff -u log.nodes glog.nodes
1428 > }
1428 > }
1429
1429
1430 glog always reorders nodes which explains the difference with log
1430 glog always reorders nodes which explains the difference with log
1431
1431
1432 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1432 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1433 ('group', ('group', ('or', ('or', ('or', ('or', ('or', ('symbol', '27'), ('symbol', '25')), ('symbol', '21')), ('symbol', '34')), ('symbol', '32')), ('symbol', '31'))))
1433 ('group', ('group', ('or', ('or', ('or', ('or', ('or', ('symbol', '27'), ('symbol', '25')), ('symbol', '21')), ('symbol', '34')), ('symbol', '32')), ('symbol', '31'))))
1434 --- log.nodes * (glob)
1434 --- log.nodes * (glob)
1435 +++ glog.nodes * (glob)
1435 +++ glog.nodes * (glob)
1436 @@ -1,6 +1,6 @@
1436 @@ -1,6 +1,6 @@
1437 -nodetag 27
1437 -nodetag 27
1438 -nodetag 25
1438 -nodetag 25
1439 -nodetag 21
1439 -nodetag 21
1440 nodetag 34
1440 nodetag 34
1441 nodetag 32
1441 nodetag 32
1442 nodetag 31
1442 nodetag 31
1443 +nodetag 27
1443 +nodetag 27
1444 +nodetag 25
1444 +nodetag 25
1445 +nodetag 21
1445 +nodetag 21
1446 [1]
1446 [1]
1447 $ testlog -u test -u not-a-user
1447 $ testlog -u test -u not-a-user
1448 ('group', ('group', ('or', ('func', ('symbol', 'user'), ('string', 'test')), ('func', ('symbol', 'user'), ('string', 'not-a-user')))))
1448 ('group', ('group', ('or', ('func', ('symbol', 'user'), ('string', 'test')), ('func', ('symbol', 'user'), ('string', 'not-a-user')))))
1449 $ testlog -b not-a-branch
1449 $ testlog -b not-a-branch
1450 ('group', ('group', ('func', ('symbol', 'branch'), ('string', 'not-a-branch'))))
1450 ('group', ('group', ('func', ('symbol', 'branch'), ('string', 'not-a-branch'))))
1451 abort: unknown revision 'not-a-branch'!
1451 abort: unknown revision 'not-a-branch'!
1452 abort: unknown revision 'not-a-branch'!
1452 abort: unknown revision 'not-a-branch'!
1453 $ testlog -b default -b branch --only-branch branch
1453 $ testlog -b default -b branch --only-branch branch
1454 ('group', ('group', ('or', ('or', ('func', ('symbol', 'branch'), ('string', 'default')), ('func', ('symbol', 'branch'), ('string', 'branch'))), ('func', ('symbol', 'branch'), ('string', 'branch')))))
1454 ('group', ('group', ('or', ('or', ('func', ('symbol', 'branch'), ('string', 'default')), ('func', ('symbol', 'branch'), ('string', 'branch'))), ('func', ('symbol', 'branch'), ('string', 'branch')))))
1455 $ testlog -k expand -k merge
1455 $ testlog -k expand -k merge
1456 ('group', ('group', ('or', ('func', ('symbol', 'keyword'), ('string', 'expand')), ('func', ('symbol', 'keyword'), ('string', 'merge')))))
1456 ('group', ('group', ('or', ('func', ('symbol', 'keyword'), ('string', 'expand')), ('func', ('symbol', 'keyword'), ('string', 'merge')))))
1457 $ hg log -G --removed --template 'nodetag {rev}\n' | grep nodetag | wc -l
1457 $ hg log -G --removed --template 'nodetag {rev}\n' | grep nodetag | wc -l
1458 \s*0 (re)
1458 \s*0 (re)
1459 $ hg log -G --only-merges --template 'nodetag {rev}\n' | grep nodetag | wc -l
1459 $ hg log -G --only-merges --template 'nodetag {rev}\n' | grep nodetag | wc -l
1460 \s*28 (re)
1460 \s*28 (re)
1461 $ hg log -G --no-merges --template 'nodetag {rev}\n'
1461 $ hg log -G --no-merges --template 'nodetag {rev}\n'
1462 o nodetag 35
1462 o nodetag 35
1463 |
1463 |
1464 o nodetag 34
1464 o nodetag 34
1465 |\
1465 |\
1466 | \
1466 | \
1467 | |\
1467 | |\
1468 | | \
1468 | | \
1469 | | |\
1469 | | |\
1470 | | | \
1470 | | | \
1471 | | | |\
1471 | | | |\
1472 | | | | \
1472 | | | | \
1473 | | | | |\
1473 | | | | |\
1474 +-+-+-+-----o nodetag 33
1474 +-+-+-+-----o nodetag 33
1475 | | | | | |
1475 | | | | | |
1476 +---------o nodetag 29
1476 +---------o nodetag 29
1477 | | | | |
1477 | | | | |
1478 +-+-+---o nodetag 27
1478 +-+-+---o nodetag 27
1479 | | | |/
1479 | | | |/
1480 | | | o nodetag 3
1480 | | | o nodetag 3
1481 | | |/
1481 | | |/
1482 | | o nodetag 2
1482 | | o nodetag 2
1483 | |/
1483 | |/
1484 | o nodetag 1
1484 | o nodetag 1
1485 |/
1485 |/
1486 o nodetag 0
1486 o nodetag 0
1487
1487
1488 $ hg log -G -d 'brace ) in a date'
1488 $ hg log -G -d 'brace ) in a date'
1489 abort: invalid date: 'brace ) in a date'
1489 abort: invalid date: 'brace ) in a date'
1490 [255]
1490 [255]
1491 $ testlog --prune 31 --prune 32
1491 $ testlog --prune 31 --prune 32
1492 ('group', ('group', ('and', ('not', ('group', ('or', ('string', '31'), ('func', ('symbol', 'ancestors'), ('string', '31'))))), ('not', ('group', ('or', ('string', '32'), ('func', ('symbol', 'ancestors'), ('string', '32'))))))))
1492 ('group', ('group', ('and', ('not', ('group', ('or', ('string', '31'), ('func', ('symbol', 'ancestors'), ('string', '31'))))), ('not', ('group', ('or', ('string', '32'), ('func', ('symbol', 'ancestors'), ('string', '32'))))))))
1493
1493
1494 Dedicated repo for --follow and paths filtering. The g is crafted to
1494 Dedicated repo for --follow and paths filtering. The g is crafted to
1495 have 2 filelog topological heads in a linear changeset graph.
1495 have 2 filelog topological heads in a linear changeset graph.
1496
1496
1497 $ cd ..
1497 $ cd ..
1498 $ hg init follow
1498 $ hg init follow
1499 $ cd follow
1499 $ cd follow
1500 $ echo a > a
1500 $ echo a > a
1501 $ echo aa > aa
1501 $ echo aa > aa
1502 $ echo f > f
1502 $ echo f > f
1503 $ hg ci -Am "add a"
1503 $ hg ci -Am "add a"
1504 adding a
1504 adding a
1505 adding aa
1505 adding aa
1506 adding f
1506 adding f
1507 $ hg cp a b
1507 $ hg cp a b
1508 $ hg cp f g
1508 $ hg cp f g
1509 $ hg ci -m "copy a b"
1509 $ hg ci -m "copy a b"
1510 $ mkdir dir
1510 $ mkdir dir
1511 $ hg mv b dir
1511 $ hg mv b dir
1512 $ echo g >> g
1512 $ echo g >> g
1513 $ echo f >> f
1513 $ echo f >> f
1514 $ hg ci -m "mv b dir/b"
1514 $ hg ci -m "mv b dir/b"
1515 $ hg mv a b
1515 $ hg mv a b
1516 $ hg cp -f f g
1516 $ hg cp -f f g
1517 $ echo a > d
1517 $ echo a > d
1518 $ hg add d
1518 $ hg add d
1519 $ hg ci -m "mv a b; add d"
1519 $ hg ci -m "mv a b; add d"
1520 $ hg mv dir/b e
1520 $ hg mv dir/b e
1521 $ hg ci -m "mv dir/b e"
1521 $ hg ci -m "mv dir/b e"
1522 $ hg glog --template '({rev}) {desc|firstline}\n'
1522 $ hg glog --template '({rev}) {desc|firstline}\n'
1523 @ (4) mv dir/b e
1523 @ (4) mv dir/b e
1524 |
1524 |
1525 o (3) mv a b; add d
1525 o (3) mv a b; add d
1526 |
1526 |
1527 o (2) mv b dir/b
1527 o (2) mv b dir/b
1528 |
1528 |
1529 o (1) copy a b
1529 o (1) copy a b
1530 |
1530 |
1531 o (0) add a
1531 o (0) add a
1532
1532
1533
1533
1534 $ testlog a
1534 $ testlog a
1535 ('group', ('group', ('func', ('symbol', 'filelog'), ('string', 'a'))))
1535 ('group', ('group', ('func', ('symbol', 'filelog'), ('string', 'a'))))
1536 $ testlog a b
1536 $ testlog a b
1537 ('group', ('group', ('or', ('func', ('symbol', 'filelog'), ('string', 'a')), ('func', ('symbol', 'filelog'), ('string', 'b')))))
1537 ('group', ('group', ('or', ('func', ('symbol', 'filelog'), ('string', 'a')), ('func', ('symbol', 'filelog'), ('string', 'b')))))
1538
1538
1539 Test falling back to slow path for non-existing files
1539 Test falling back to slow path for non-existing files
1540
1540
1541 $ testlog a c
1541 $ testlog a c
1542 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('list', ('string', 'r:'), ('string', 'p:a')), ('string', 'p:c')))))
1542 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('list', ('string', 'r:'), ('string', 'p:a')), ('string', 'p:c')))))
1543
1543
1544 Test multiple --include/--exclude/paths
1544 Test multiple --include/--exclude/paths
1545
1545
1546 $ testlog --include a --include e --exclude b --exclude e a e
1546 $ testlog --include a --include e --exclude b --exclude e a e
1547 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('list', ('list', ('list', ('list', ('list', ('string', 'r:'), ('string', 'p:a')), ('string', 'p:e')), ('string', 'i:a')), ('string', 'i:e')), ('string', 'x:b')), ('string', 'x:e')))))
1547 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('list', ('list', ('list', ('list', ('list', ('string', 'r:'), ('string', 'p:a')), ('string', 'p:e')), ('string', 'i:a')), ('string', 'i:e')), ('string', 'x:b')), ('string', 'x:e')))))
1548
1548
1549 Test glob expansion of pats
1549 Test glob expansion of pats
1550
1550
1551 $ expandglobs=`python -c "import mercurial.util; \
1551 $ expandglobs=`python -c "import mercurial.util; \
1552 > print mercurial.util.expandglobs and 'true' or 'false'"`
1552 > print mercurial.util.expandglobs and 'true' or 'false'"`
1553 $ if [ $expandglobs = "true" ]; then
1553 $ if [ $expandglobs = "true" ]; then
1554 > testlog 'a*';
1554 > testlog 'a*';
1555 > else
1555 > else
1556 > testlog a*;
1556 > testlog a*;
1557 > fi;
1557 > fi;
1558 ('group', ('group', ('func', ('symbol', 'filelog'), ('string', 'aa'))))
1558 ('group', ('group', ('func', ('symbol', 'filelog'), ('string', 'aa'))))
1559
1559
1560 Test --follow on a directory
1560 Test --follow on a directory
1561
1561
1562 $ testlog -f dir
1562 $ testlog -f dir
1563 abort: cannot follow file not in parent revision: "dir"
1563 abort: cannot follow file not in parent revision: "dir"
1564 abort: cannot follow file not in parent revision: "dir"
1564 abort: cannot follow file not in parent revision: "dir"
1565 abort: cannot follow file not in parent revision: "dir"
1565 abort: cannot follow file not in parent revision: "dir"
1566
1566
1567 Test --follow on file not in parent revision
1567 Test --follow on file not in parent revision
1568
1568
1569 $ testlog -f a
1569 $ testlog -f a
1570 abort: cannot follow file not in parent revision: "a"
1570 abort: cannot follow file not in parent revision: "a"
1571 abort: cannot follow file not in parent revision: "a"
1571 abort: cannot follow file not in parent revision: "a"
1572 abort: cannot follow file not in parent revision: "a"
1572 abort: cannot follow file not in parent revision: "a"
1573
1573
1574 Test --follow and patterns
1574 Test --follow and patterns
1575
1575
1576 $ testlog -f 'glob:*'
1576 $ testlog -f 'glob:*'
1577 abort: can only follow copies/renames for explicit filenames
1577 abort: can only follow copies/renames for explicit filenames
1578 abort: can only follow copies/renames for explicit filenames
1578 abort: can only follow copies/renames for explicit filenames
1579 abort: can only follow copies/renames for explicit filenames
1579 abort: can only follow copies/renames for explicit filenames
1580
1580
1581 Test --follow on a single rename
1581 Test --follow on a single rename
1582
1582
1583 $ hg up -q 2
1583 $ hg up -q 2
1584 $ testlog -f a
1584 $ testlog -f a
1585 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'a'))))
1585 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'a'))))
1586
1586
1587 Test --follow and multiple renames
1587 Test --follow and multiple renames
1588
1588
1589 $ hg up -q tip
1589 $ hg up -q tip
1590 $ testlog -f e
1590 $ testlog -f e
1591 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'e'))))
1591 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'e'))))
1592
1592
1593 Test --follow and multiple filelog heads
1593 Test --follow and multiple filelog heads
1594
1594
1595 $ hg up -q 2
1595 $ hg up -q 2
1596 $ testlog -f g
1596 $ testlog -f g
1597 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'g'))))
1597 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'g'))))
1598 $ cat log.nodes
1598 $ cat log.nodes
1599 nodetag 2
1599 nodetag 2
1600 nodetag 1
1600 nodetag 1
1601 nodetag 0
1601 nodetag 0
1602 $ hg up -q tip
1602 $ hg up -q tip
1603 $ testlog -f g
1603 $ testlog -f g
1604 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'g'))))
1604 ('group', ('group', ('func', ('symbol', 'follow'), ('string', 'g'))))
1605 $ cat log.nodes
1605 $ cat log.nodes
1606 nodetag 3
1606 nodetag 3
1607 nodetag 2
1607 nodetag 2
1608 nodetag 0
1608 nodetag 0
1609
1609
1610 Test --follow and multiple files
1610 Test --follow and multiple files
1611
1611
1612 $ testlog -f g e
1612 $ testlog -f g e
1613 ('group', ('group', ('or', ('func', ('symbol', 'follow'), ('string', 'g')), ('func', ('symbol', 'follow'), ('string', 'e')))))
1613 ('group', ('group', ('or', ('func', ('symbol', 'follow'), ('string', 'g')), ('func', ('symbol', 'follow'), ('string', 'e')))))
1614 $ cat log.nodes
1614 $ cat log.nodes
1615 nodetag 4
1615 nodetag 4
1616 nodetag 3
1616 nodetag 3
1617 nodetag 2
1617 nodetag 2
1618 nodetag 1
1618 nodetag 1
1619 nodetag 0
1619 nodetag 0
1620
1620
1621 Test --follow-first
1621 Test --follow-first
1622
1622
1623 $ hg up -q 3
1623 $ hg up -q 3
1624 $ echo ee > e
1624 $ echo ee > e
1625 $ hg ci -Am "add another e" e
1625 $ hg ci -Am "add another e" e
1626 created new head
1626 created new head
1627 $ hg merge --tool internal:other 4
1627 $ hg merge --tool internal:other 4
1628 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1628 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1629 (branch merge, don't forget to commit)
1629 (branch merge, don't forget to commit)
1630 $ echo merge > e
1630 $ echo merge > e
1631 $ hg ci -m "merge 5 and 4"
1631 $ hg ci -m "merge 5 and 4"
1632 $ testlog --follow-first
1632 $ testlog --follow-first
1633 ('group', ('func', ('symbol', '_followfirst'), None))
1633 ('group', ('func', ('symbol', '_followfirst'), None))
1634
1634
1635 Cannot compare with log --follow-first FILE as it never worked
1635 Cannot compare with log --follow-first FILE as it never worked
1636
1636
1637 $ hg log -G --print-revset --follow-first e
1637 $ hg log -G --print-revset --follow-first e
1638 ('group', ('group', ('func', ('symbol', '_followfirst'), ('string', 'e'))))
1638 ('group', ('group', ('func', ('symbol', '_followfirst'), ('string', 'e'))))
1639 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1639 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1640 @ 6 merge 5 and 4
1640 @ 6 merge 5 and 4
1641 |\
1641 |\
1642 o | 5 add another e
1642 o | 5 add another e
1643 | |
1643 | |
1644
1644
1645 Test --copies
1645 Test --copies
1646
1646
1647 $ hg log -G --copies --template "{rev} {desc|firstline} \
1647 $ hg log -G --copies --template "{rev} {desc|firstline} \
1648 > copies: {file_copies_switch}\n"
1648 > copies: {file_copies_switch}\n"
1649 @ 6 merge 5 and 4 copies:
1649 @ 6 merge 5 and 4 copies:
1650 |\
1650 |\
1651 | o 5 add another e copies:
1651 | o 5 add another e copies:
1652 | |
1652 | |
1653 o | 4 mv dir/b e copies: e (dir/b)
1653 o | 4 mv dir/b e copies: e (dir/b)
1654 |/
1654 |/
1655 o 3 mv a b; add d copies: b (a)g (f)
1655 o 3 mv a b; add d copies: b (a)g (f)
1656 |
1656 |
1657 o 2 mv b dir/b copies: dir/b (b)
1657 o 2 mv b dir/b copies: dir/b (b)
1658 |
1658 |
1659 o 1 copy a b copies: b (a)g (f)
1659 o 1 copy a b copies: b (a)g (f)
1660 |
1660 |
1661 o 0 add a copies:
1661 o 0 add a copies:
1662
1662
1663 Test "set:..." and parent revision
1663 Test "set:..." and parent revision
1664
1664
1665 $ hg up -q 4
1665 $ hg up -q 4
1666 $ testlog "set:copied()"
1667 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('string', 'r:'), ('string', 'p:set:copied()')))))
1666 $ testlog --include "set:copied()"
1668 $ testlog --include "set:copied()"
1667 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('string', 'r:'), ('string', 'i:set:copied()')))))
1669 ('group', ('group', ('func', ('symbol', '_matchfiles'), ('list', ('string', 'r:'), ('string', 'i:set:copied()')))))
1668 $ testlog -r "sort(file('set:copied()'), -rev)"
1670 $ testlog -r "sort(file('set:copied()'), -rev)"
1669 ('group', ('group', ('func', ('symbol', 'sort'), ('list', ('func', ('symbol', 'file'), ('string', 'set:copied()')), ('negate', ('symbol', 'rev'))))))
1671 ('group', ('group', ('func', ('symbol', 'sort'), ('list', ('func', ('symbol', 'file'), ('string', 'set:copied()')), ('negate', ('symbol', 'rev'))))))
General Comments 0
You need to be logged in to leave comments. Login now