##// END OF EJS Templates
merge with stable
Matt Mackall -
r25675:c76e8d14 merge default
parent child Browse files
Show More
@@ -1,332 +1,333 b''
1 1 # archival.py - revision archival for mercurial
2 2 #
3 3 # Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
4 4 #
5 5 # This software may be used and distributed according to the terms of the
6 6 # GNU General Public License version 2 or any later version.
7 7
8 8 from i18n import _
9 9 import match as matchmod
10 10 import cmdutil
11 11 import scmutil, util, encoding
12 12 import cStringIO, os, tarfile, time, zipfile
13 13 import zlib, gzip
14 14 import struct
15 15 import error
16 16
17 17 # from unzip source code:
18 18 _UNX_IFREG = 0x8000
19 19 _UNX_IFLNK = 0xa000
20 20
21 21 def tidyprefix(dest, kind, prefix):
22 22 '''choose prefix to use for names in archive. make sure prefix is
23 23 safe for consumers.'''
24 24
25 25 if prefix:
26 26 prefix = util.normpath(prefix)
27 27 else:
28 28 if not isinstance(dest, str):
29 29 raise ValueError('dest must be string if no prefix')
30 30 prefix = os.path.basename(dest)
31 31 lower = prefix.lower()
32 32 for sfx in exts.get(kind, []):
33 33 if lower.endswith(sfx):
34 34 prefix = prefix[:-len(sfx)]
35 35 break
36 36 lpfx = os.path.normpath(util.localpath(prefix))
37 37 prefix = util.pconvert(lpfx)
38 38 if not prefix.endswith('/'):
39 39 prefix += '/'
40 40 # Drop the leading '.' path component if present, so Windows can read the
41 41 # zip files (issue4634)
42 42 if prefix.startswith('./'):
43 43 prefix = prefix[2:]
44 44 if prefix.startswith('../') or os.path.isabs(lpfx) or '/../' in prefix:
45 45 raise util.Abort(_('archive prefix contains illegal components'))
46 46 return prefix
47 47
48 48 exts = {
49 49 'tar': ['.tar'],
50 50 'tbz2': ['.tbz2', '.tar.bz2'],
51 51 'tgz': ['.tgz', '.tar.gz'],
52 52 'zip': ['.zip'],
53 53 }
54 54
55 55 def guesskind(dest):
56 56 for kind, extensions in exts.iteritems():
57 57 if any(dest.endswith(ext) for ext in extensions):
58 58 return kind
59 59 return None
60 60
61 61 def _rootctx(repo):
62 62 # repo[0] may be hidden
63 63 for rev in repo:
64 64 return repo[rev]
65 65 return repo['null']
66 66
67 67 def buildmetadata(ctx):
68 68 '''build content of .hg_archival.txt'''
69 69 repo = ctx.repo()
70 70 hex = ctx.hex()
71 71 if ctx.rev() is None:
72 72 hex = ctx.p1().hex()
73 73 if ctx.dirty():
74 74 hex += '+'
75 75
76 76 base = 'repo: %s\nnode: %s\nbranch: %s\n' % (
77 77 _rootctx(repo).hex(), hex, encoding.fromlocal(ctx.branch()))
78 78
79 79 tags = ''.join('tag: %s\n' % t for t in ctx.tags()
80 80 if repo.tagtype(t) == 'global')
81 81 if not tags:
82 82 repo.ui.pushbuffer()
83 83 opts = {'template': '{latesttag}\n{latesttagdistance}',
84 84 'style': '', 'patch': None, 'git': None}
85 85 cmdutil.show_changeset(repo.ui, repo, opts).show(ctx)
86 86 ltags, dist = repo.ui.popbuffer().split('\n')
87 87 ltags = ltags.split(':')
88 changessince = len(repo.revs('only(.,%s)', ltags[0]))
88 # XXX: ctx.rev() needs to be handled differently with wdir()
89 changessince = len(repo.revs('only(%d,%s)', ctx.rev(), ltags[0]))
89 90 tags = ''.join('latesttag: %s\n' % t for t in ltags)
90 91 tags += 'latesttagdistance: %s\n' % dist
91 92 tags += 'changessincelatesttag: %s\n' % changessince
92 93
93 94 return base + tags
94 95
95 96 class tarit(object):
96 97 '''write archive to tar file or stream. can write uncompressed,
97 98 or compress with gzip or bzip2.'''
98 99
99 100 class GzipFileWithTime(gzip.GzipFile):
100 101
101 102 def __init__(self, *args, **kw):
102 103 timestamp = None
103 104 if 'timestamp' in kw:
104 105 timestamp = kw.pop('timestamp')
105 106 if timestamp is None:
106 107 self.timestamp = time.time()
107 108 else:
108 109 self.timestamp = timestamp
109 110 gzip.GzipFile.__init__(self, *args, **kw)
110 111
111 112 def _write_gzip_header(self):
112 113 self.fileobj.write('\037\213') # magic header
113 114 self.fileobj.write('\010') # compression method
114 115 # Python 2.6 introduced self.name and deprecated self.filename
115 116 try:
116 117 fname = self.name
117 118 except AttributeError:
118 119 fname = self.filename
119 120 if fname and fname.endswith('.gz'):
120 121 fname = fname[:-3]
121 122 flags = 0
122 123 if fname:
123 124 flags = gzip.FNAME
124 125 self.fileobj.write(chr(flags))
125 126 gzip.write32u(self.fileobj, long(self.timestamp))
126 127 self.fileobj.write('\002')
127 128 self.fileobj.write('\377')
128 129 if fname:
129 130 self.fileobj.write(fname + '\000')
130 131
131 132 def __init__(self, dest, mtime, kind=''):
132 133 self.mtime = mtime
133 134 self.fileobj = None
134 135
135 136 def taropen(name, mode, fileobj=None):
136 137 if kind == 'gz':
137 138 mode = mode[0]
138 139 if not fileobj:
139 140 fileobj = open(name, mode + 'b')
140 141 gzfileobj = self.GzipFileWithTime(name, mode + 'b',
141 142 zlib.Z_BEST_COMPRESSION,
142 143 fileobj, timestamp=mtime)
143 144 self.fileobj = gzfileobj
144 145 return tarfile.TarFile.taropen(name, mode, gzfileobj)
145 146 else:
146 147 return tarfile.open(name, mode + kind, fileobj)
147 148
148 149 if isinstance(dest, str):
149 150 self.z = taropen(dest, mode='w:')
150 151 else:
151 152 # Python 2.5-2.5.1 have a regression that requires a name arg
152 153 self.z = taropen(name='', mode='w|', fileobj=dest)
153 154
154 155 def addfile(self, name, mode, islink, data):
155 156 i = tarfile.TarInfo(name)
156 157 i.mtime = self.mtime
157 158 i.size = len(data)
158 159 if islink:
159 160 i.type = tarfile.SYMTYPE
160 161 i.mode = 0o777
161 162 i.linkname = data
162 163 data = None
163 164 i.size = 0
164 165 else:
165 166 i.mode = mode
166 167 data = cStringIO.StringIO(data)
167 168 self.z.addfile(i, data)
168 169
169 170 def done(self):
170 171 self.z.close()
171 172 if self.fileobj:
172 173 self.fileobj.close()
173 174
174 175 class tellable(object):
175 176 '''provide tell method for zipfile.ZipFile when writing to http
176 177 response file object.'''
177 178
178 179 def __init__(self, fp):
179 180 self.fp = fp
180 181 self.offset = 0
181 182
182 183 def __getattr__(self, key):
183 184 return getattr(self.fp, key)
184 185
185 186 def write(self, s):
186 187 self.fp.write(s)
187 188 self.offset += len(s)
188 189
189 190 def tell(self):
190 191 return self.offset
191 192
192 193 class zipit(object):
193 194 '''write archive to zip file or stream. can write uncompressed,
194 195 or compressed with deflate.'''
195 196
196 197 def __init__(self, dest, mtime, compress=True):
197 198 if not isinstance(dest, str):
198 199 try:
199 200 dest.tell()
200 201 except (AttributeError, IOError):
201 202 dest = tellable(dest)
202 203 self.z = zipfile.ZipFile(dest, 'w',
203 204 compress and zipfile.ZIP_DEFLATED or
204 205 zipfile.ZIP_STORED)
205 206
206 207 # Python's zipfile module emits deprecation warnings if we try
207 208 # to store files with a date before 1980.
208 209 epoch = 315532800 # calendar.timegm((1980, 1, 1, 0, 0, 0, 1, 1, 0))
209 210 if mtime < epoch:
210 211 mtime = epoch
211 212
212 213 self.mtime = mtime
213 214 self.date_time = time.gmtime(mtime)[:6]
214 215
215 216 def addfile(self, name, mode, islink, data):
216 217 i = zipfile.ZipInfo(name, self.date_time)
217 218 i.compress_type = self.z.compression
218 219 # unzip will not honor unix file modes unless file creator is
219 220 # set to unix (id 3).
220 221 i.create_system = 3
221 222 ftype = _UNX_IFREG
222 223 if islink:
223 224 mode = 0o777
224 225 ftype = _UNX_IFLNK
225 226 i.external_attr = (mode | ftype) << 16L
226 227 # add "extended-timestamp" extra block, because zip archives
227 228 # without this will be extracted with unexpected timestamp,
228 229 # if TZ is not configured as GMT
229 230 i.extra += struct.pack('<hhBl',
230 231 0x5455, # block type: "extended-timestamp"
231 232 1 + 4, # size of this block
232 233 1, # "modification time is present"
233 234 int(self.mtime)) # last modification (UTC)
234 235 self.z.writestr(i, data)
235 236
236 237 def done(self):
237 238 self.z.close()
238 239
239 240 class fileit(object):
240 241 '''write archive as files in directory.'''
241 242
242 243 def __init__(self, name, mtime):
243 244 self.basedir = name
244 245 self.opener = scmutil.opener(self.basedir)
245 246
246 247 def addfile(self, name, mode, islink, data):
247 248 if islink:
248 249 self.opener.symlink(data, name)
249 250 return
250 251 f = self.opener(name, "w", atomictemp=True)
251 252 f.write(data)
252 253 f.close()
253 254 destfile = os.path.join(self.basedir, name)
254 255 os.chmod(destfile, mode)
255 256
256 257 def done(self):
257 258 pass
258 259
259 260 archivers = {
260 261 'files': fileit,
261 262 'tar': tarit,
262 263 'tbz2': lambda name, mtime: tarit(name, mtime, 'bz2'),
263 264 'tgz': lambda name, mtime: tarit(name, mtime, 'gz'),
264 265 'uzip': lambda name, mtime: zipit(name, mtime, False),
265 266 'zip': zipit,
266 267 }
267 268
268 269 def archive(repo, dest, node, kind, decode=True, matchfn=None,
269 270 prefix='', mtime=None, subrepos=False):
270 271 '''create archive of repo as it was at node.
271 272
272 273 dest can be name of directory, name of archive file, or file
273 274 object to write archive to.
274 275
275 276 kind is type of archive to create.
276 277
277 278 decode tells whether to put files through decode filters from
278 279 hgrc.
279 280
280 281 matchfn is function to filter names of files to write to archive.
281 282
282 283 prefix is name of path to put before every archive member.'''
283 284
284 285 if kind == 'files':
285 286 if prefix:
286 287 raise util.Abort(_('cannot give prefix when archiving to files'))
287 288 else:
288 289 prefix = tidyprefix(dest, kind, prefix)
289 290
290 291 def write(name, mode, islink, getdata):
291 292 data = getdata()
292 293 if decode:
293 294 data = repo.wwritedata(name, data)
294 295 archiver.addfile(prefix + name, mode, islink, data)
295 296
296 297 if kind not in archivers:
297 298 raise util.Abort(_("unknown archive type '%s'") % kind)
298 299
299 300 ctx = repo[node]
300 301 archiver = archivers[kind](dest, mtime or ctx.date()[0])
301 302
302 303 if repo.ui.configbool("ui", "archivemeta", True):
303 304 name = '.hg_archival.txt'
304 305 if not matchfn or matchfn(name):
305 306 write(name, 0o644, False, lambda: buildmetadata(ctx))
306 307
307 308 if matchfn:
308 309 files = [f for f in ctx.manifest().keys() if matchfn(f)]
309 310 else:
310 311 files = ctx.manifest().keys()
311 312 total = len(files)
312 313 if total:
313 314 files.sort()
314 315 repo.ui.progress(_('archiving'), 0, unit=_('files'), total=total)
315 316 for i, f in enumerate(files):
316 317 ff = ctx.flags(f)
317 318 write(f, 'x' in ff and 0o755 or 0o644, 'l' in ff, ctx[f].data)
318 319 repo.ui.progress(_('archiving'), i + 1, item=f,
319 320 unit=_('files'), total=total)
320 321 repo.ui.progress(_('archiving'), None)
321 322
322 323 if subrepos:
323 324 for subpath in sorted(ctx.substate):
324 325 sub = ctx.workingsub(subpath)
325 326 submatch = matchmod.narrowmatcher(subpath, matchfn)
326 327 total += sub.archive(archiver, prefix, submatch)
327 328
328 329 if total == 0:
329 330 raise error.Abort(_('no files match the archive pattern'))
330 331
331 332 archiver.done()
332 333 return total
@@ -1,2385 +1,2395 b''
1 1 @ (34) head
2 2 |
3 3 | o (33) head
4 4 | |
5 5 o | (32) expand
6 6 |\ \
7 7 | o \ (31) expand
8 8 | |\ \
9 9 | | o \ (30) expand
10 10 | | |\ \
11 11 | | | o | (29) regular commit
12 12 | | | | |
13 13 | | o | | (28) merge zero known
14 14 | | |\ \ \
15 15 o | | | | | (27) collapse
16 16 |/ / / / /
17 17 | | o---+ (26) merge one known; far right
18 18 | | | | |
19 19 +---o | | (25) merge one known; far left
20 20 | | | | |
21 21 | | o | | (24) merge one known; immediate right
22 22 | | |\| |
23 23 | | o | | (23) merge one known; immediate left
24 24 | |/| | |
25 25 +---o---+ (22) merge two known; one far left, one far right
26 26 | | / /
27 27 o | | | (21) expand
28 28 |\ \ \ \
29 29 | o---+-+ (20) merge two known; two far right
30 30 | / / /
31 31 o | | | (19) expand
32 32 |\ \ \ \
33 33 +---+---o (18) merge two known; two far left
34 34 | | | |
35 35 | o | | (17) expand
36 36 | |\ \ \
37 37 | | o---+ (16) merge two known; one immediate right, one near right
38 38 | | |/ /
39 39 o | | | (15) expand
40 40 |\ \ \ \
41 41 | o-----+ (14) merge two known; one immediate right, one far right
42 42 | |/ / /
43 43 o | | | (13) expand
44 44 |\ \ \ \
45 45 +---o | | (12) merge two known; one immediate right, one far left
46 46 | | |/ /
47 47 | o | | (11) expand
48 48 | |\ \ \
49 49 | | o---+ (10) merge two known; one immediate left, one near right
50 50 | |/ / /
51 51 o | | | (9) expand
52 52 |\ \ \ \
53 53 | o-----+ (8) merge two known; one immediate left, one far right
54 54 |/ / / /
55 55 o | | | (7) expand
56 56 |\ \ \ \
57 57 +---o | | (6) merge two known; one immediate left, one far left
58 58 | |/ / /
59 59 | o | | (5) expand
60 60 | |\ \ \
61 61 | | o | | (4) merge two known; one immediate left, one immediate right
62 62 | |/|/ /
63 63 | o / / (3) collapse
64 64 |/ / /
65 65 o / / (2) collapse
66 66 |/ /
67 67 o / (1) collapse
68 68 |/
69 69 o (0) root
70 70
71 71
72 72 $ commit()
73 73 > {
74 74 > rev=$1
75 75 > msg=$2
76 76 > shift 2
77 77 > if [ "$#" -gt 0 ]; then
78 78 > hg debugsetparents "$@"
79 79 > fi
80 80 > echo $rev > a
81 81 > hg commit -Aqd "$rev 0" -m "($rev) $msg"
82 82 > }
83 83
84 84 $ cat > printrevset.py <<EOF
85 85 > from mercurial import extensions, revset, commands, cmdutil
86 86 >
87 87 > def uisetup(ui):
88 88 > def printrevset(orig, ui, repo, *pats, **opts):
89 89 > if opts.get('print_revset'):
90 90 > expr = cmdutil.getgraphlogrevs(repo, pats, opts)[1]
91 91 > if expr:
92 92 > tree = revset.parse(expr)
93 93 > else:
94 94 > tree = []
95 95 > ui.write('%r\n' % (opts.get('rev', []),))
96 96 > ui.write(revset.prettyformat(tree) + '\n')
97 97 > return 0
98 98 > return orig(ui, repo, *pats, **opts)
99 99 > entry = extensions.wrapcommand(commands.table, 'log', printrevset)
100 100 > entry[1].append(('', 'print-revset', False,
101 101 > 'print generated revset and exit (DEPRECATED)'))
102 102 > EOF
103 103
104 104 $ echo "[extensions]" >> $HGRCPATH
105 105 $ echo "printrevset=`pwd`/printrevset.py" >> $HGRCPATH
106 106
107 107 $ hg init repo
108 108 $ cd repo
109 109
110 110 Empty repo:
111 111
112 112 $ hg log -G
113 113
114 114
115 115 Building DAG:
116 116
117 117 $ commit 0 "root"
118 118 $ commit 1 "collapse" 0
119 119 $ commit 2 "collapse" 1
120 120 $ commit 3 "collapse" 2
121 121 $ commit 4 "merge two known; one immediate left, one immediate right" 1 3
122 122 $ commit 5 "expand" 3 4
123 123 $ commit 6 "merge two known; one immediate left, one far left" 2 5
124 124 $ commit 7 "expand" 2 5
125 125 $ commit 8 "merge two known; one immediate left, one far right" 0 7
126 126 $ commit 9 "expand" 7 8
127 127 $ commit 10 "merge two known; one immediate left, one near right" 0 6
128 128 $ commit 11 "expand" 6 10
129 129 $ commit 12 "merge two known; one immediate right, one far left" 1 9
130 130 $ commit 13 "expand" 9 11
131 131 $ commit 14 "merge two known; one immediate right, one far right" 0 12
132 132 $ commit 15 "expand" 13 14
133 133 $ commit 16 "merge two known; one immediate right, one near right" 0 1
134 134 $ commit 17 "expand" 12 16
135 135 $ commit 18 "merge two known; two far left" 1 15
136 136 $ commit 19 "expand" 15 17
137 137 $ commit 20 "merge two known; two far right" 0 18
138 138 $ commit 21 "expand" 19 20
139 139 $ commit 22 "merge two known; one far left, one far right" 18 21
140 140 $ commit 23 "merge one known; immediate left" 1 22
141 141 $ commit 24 "merge one known; immediate right" 0 23
142 142 $ commit 25 "merge one known; far left" 21 24
143 143 $ commit 26 "merge one known; far right" 18 25
144 144 $ commit 27 "collapse" 21
145 145 $ commit 28 "merge zero known" 1 26
146 146 $ commit 29 "regular commit" 0
147 147 $ commit 30 "expand" 28 29
148 148 $ commit 31 "expand" 21 30
149 149 $ commit 32 "expand" 27 31
150 150 $ commit 33 "head" 18
151 151 $ commit 34 "head" 32
152 152
153 153
154 154 $ hg log -G -q
155 155 @ 34:fea3ac5810e0
156 156 |
157 157 | o 33:68608f5145f9
158 158 | |
159 159 o | 32:d06dffa21a31
160 160 |\ \
161 161 | o \ 31:621d83e11f67
162 162 | |\ \
163 163 | | o \ 30:6e11cd4b648f
164 164 | | |\ \
165 165 | | | o | 29:cd9bb2be7593
166 166 | | | | |
167 167 | | o | | 28:44ecd0b9ae99
168 168 | | |\ \ \
169 169 o | | | | | 27:886ed638191b
170 170 |/ / / / /
171 171 | | o---+ 26:7f25b6c2f0b9
172 172 | | | | |
173 173 +---o | | 25:91da8ed57247
174 174 | | | | |
175 175 | | o | | 24:a9c19a3d96b7
176 176 | | |\| |
177 177 | | o | | 23:a01cddf0766d
178 178 | |/| | |
179 179 +---o---+ 22:e0d9cccacb5d
180 180 | | / /
181 181 o | | | 21:d42a756af44d
182 182 |\ \ \ \
183 183 | o---+-+ 20:d30ed6450e32
184 184 | / / /
185 185 o | | | 19:31ddc2c1573b
186 186 |\ \ \ \
187 187 +---+---o 18:1aa84d96232a
188 188 | | | |
189 189 | o | | 17:44765d7c06e0
190 190 | |\ \ \
191 191 | | o---+ 16:3677d192927d
192 192 | | |/ /
193 193 o | | | 15:1dda3f72782d
194 194 |\ \ \ \
195 195 | o-----+ 14:8eac370358ef
196 196 | |/ / /
197 197 o | | | 13:22d8966a97e3
198 198 |\ \ \ \
199 199 +---o | | 12:86b91144a6e9
200 200 | | |/ /
201 201 | o | | 11:832d76e6bdf2
202 202 | |\ \ \
203 203 | | o---+ 10:74c64d036d72
204 204 | |/ / /
205 205 o | | | 9:7010c0af0a35
206 206 |\ \ \ \
207 207 | o-----+ 8:7a0b11f71937
208 208 |/ / / /
209 209 o | | | 7:b632bb1b1224
210 210 |\ \ \ \
211 211 +---o | | 6:b105a072e251
212 212 | |/ / /
213 213 | o | | 5:4409d547b708
214 214 | |\ \ \
215 215 | | o | | 4:26a8bac39d9f
216 216 | |/|/ /
217 217 | o / / 3:27eef8ed80b4
218 218 |/ / /
219 219 o / / 2:3d9a33b8d1e1
220 220 |/ /
221 221 o / 1:6db2ef61d156
222 222 |/
223 223 o 0:e6eb3150255d
224 224
225 225
226 226 $ hg log -G
227 227 @ changeset: 34:fea3ac5810e0
228 228 | tag: tip
229 229 | parent: 32:d06dffa21a31
230 230 | user: test
231 231 | date: Thu Jan 01 00:00:34 1970 +0000
232 232 | summary: (34) head
233 233 |
234 234 | o changeset: 33:68608f5145f9
235 235 | | parent: 18:1aa84d96232a
236 236 | | user: test
237 237 | | date: Thu Jan 01 00:00:33 1970 +0000
238 238 | | summary: (33) head
239 239 | |
240 240 o | changeset: 32:d06dffa21a31
241 241 |\ \ parent: 27:886ed638191b
242 242 | | | parent: 31:621d83e11f67
243 243 | | | user: test
244 244 | | | date: Thu Jan 01 00:00:32 1970 +0000
245 245 | | | summary: (32) expand
246 246 | | |
247 247 | o | changeset: 31:621d83e11f67
248 248 | |\ \ parent: 21:d42a756af44d
249 249 | | | | parent: 30:6e11cd4b648f
250 250 | | | | user: test
251 251 | | | | date: Thu Jan 01 00:00:31 1970 +0000
252 252 | | | | summary: (31) expand
253 253 | | | |
254 254 | | o | changeset: 30:6e11cd4b648f
255 255 | | |\ \ parent: 28:44ecd0b9ae99
256 256 | | | | | parent: 29:cd9bb2be7593
257 257 | | | | | user: test
258 258 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
259 259 | | | | | summary: (30) expand
260 260 | | | | |
261 261 | | | o | changeset: 29:cd9bb2be7593
262 262 | | | | | parent: 0:e6eb3150255d
263 263 | | | | | user: test
264 264 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
265 265 | | | | | summary: (29) regular commit
266 266 | | | | |
267 267 | | o | | changeset: 28:44ecd0b9ae99
268 268 | | |\ \ \ parent: 1:6db2ef61d156
269 269 | | | | | | parent: 26:7f25b6c2f0b9
270 270 | | | | | | user: test
271 271 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
272 272 | | | | | | summary: (28) merge zero known
273 273 | | | | | |
274 274 o | | | | | changeset: 27:886ed638191b
275 275 |/ / / / / parent: 21:d42a756af44d
276 276 | | | | | user: test
277 277 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
278 278 | | | | | summary: (27) collapse
279 279 | | | | |
280 280 | | o---+ changeset: 26:7f25b6c2f0b9
281 281 | | | | | parent: 18:1aa84d96232a
282 282 | | | | | parent: 25:91da8ed57247
283 283 | | | | | user: test
284 284 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
285 285 | | | | | summary: (26) merge one known; far right
286 286 | | | | |
287 287 +---o | | changeset: 25:91da8ed57247
288 288 | | | | | parent: 21:d42a756af44d
289 289 | | | | | parent: 24:a9c19a3d96b7
290 290 | | | | | user: test
291 291 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
292 292 | | | | | summary: (25) merge one known; far left
293 293 | | | | |
294 294 | | o | | changeset: 24:a9c19a3d96b7
295 295 | | |\| | parent: 0:e6eb3150255d
296 296 | | | | | parent: 23:a01cddf0766d
297 297 | | | | | user: test
298 298 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
299 299 | | | | | summary: (24) merge one known; immediate right
300 300 | | | | |
301 301 | | o | | changeset: 23:a01cddf0766d
302 302 | |/| | | parent: 1:6db2ef61d156
303 303 | | | | | parent: 22:e0d9cccacb5d
304 304 | | | | | user: test
305 305 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
306 306 | | | | | summary: (23) merge one known; immediate left
307 307 | | | | |
308 308 +---o---+ changeset: 22:e0d9cccacb5d
309 309 | | | | parent: 18:1aa84d96232a
310 310 | | / / parent: 21:d42a756af44d
311 311 | | | | user: test
312 312 | | | | date: Thu Jan 01 00:00:22 1970 +0000
313 313 | | | | summary: (22) merge two known; one far left, one far right
314 314 | | | |
315 315 o | | | changeset: 21:d42a756af44d
316 316 |\ \ \ \ parent: 19:31ddc2c1573b
317 317 | | | | | parent: 20:d30ed6450e32
318 318 | | | | | user: test
319 319 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
320 320 | | | | | summary: (21) expand
321 321 | | | | |
322 322 | o---+-+ changeset: 20:d30ed6450e32
323 323 | | | | parent: 0:e6eb3150255d
324 324 | / / / parent: 18:1aa84d96232a
325 325 | | | | user: test
326 326 | | | | date: Thu Jan 01 00:00:20 1970 +0000
327 327 | | | | summary: (20) merge two known; two far right
328 328 | | | |
329 329 o | | | changeset: 19:31ddc2c1573b
330 330 |\ \ \ \ parent: 15:1dda3f72782d
331 331 | | | | | parent: 17:44765d7c06e0
332 332 | | | | | user: test
333 333 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
334 334 | | | | | summary: (19) expand
335 335 | | | | |
336 336 +---+---o changeset: 18:1aa84d96232a
337 337 | | | | parent: 1:6db2ef61d156
338 338 | | | | parent: 15:1dda3f72782d
339 339 | | | | user: test
340 340 | | | | date: Thu Jan 01 00:00:18 1970 +0000
341 341 | | | | summary: (18) merge two known; two far left
342 342 | | | |
343 343 | o | | changeset: 17:44765d7c06e0
344 344 | |\ \ \ parent: 12:86b91144a6e9
345 345 | | | | | parent: 16:3677d192927d
346 346 | | | | | user: test
347 347 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
348 348 | | | | | summary: (17) expand
349 349 | | | | |
350 350 | | o---+ changeset: 16:3677d192927d
351 351 | | | | | parent: 0:e6eb3150255d
352 352 | | |/ / parent: 1:6db2ef61d156
353 353 | | | | user: test
354 354 | | | | date: Thu Jan 01 00:00:16 1970 +0000
355 355 | | | | summary: (16) merge two known; one immediate right, one near right
356 356 | | | |
357 357 o | | | changeset: 15:1dda3f72782d
358 358 |\ \ \ \ parent: 13:22d8966a97e3
359 359 | | | | | parent: 14:8eac370358ef
360 360 | | | | | user: test
361 361 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
362 362 | | | | | summary: (15) expand
363 363 | | | | |
364 364 | o-----+ changeset: 14:8eac370358ef
365 365 | | | | | parent: 0:e6eb3150255d
366 366 | |/ / / parent: 12:86b91144a6e9
367 367 | | | | user: test
368 368 | | | | date: Thu Jan 01 00:00:14 1970 +0000
369 369 | | | | summary: (14) merge two known; one immediate right, one far right
370 370 | | | |
371 371 o | | | changeset: 13:22d8966a97e3
372 372 |\ \ \ \ parent: 9:7010c0af0a35
373 373 | | | | | parent: 11:832d76e6bdf2
374 374 | | | | | user: test
375 375 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
376 376 | | | | | summary: (13) expand
377 377 | | | | |
378 378 +---o | | changeset: 12:86b91144a6e9
379 379 | | |/ / parent: 1:6db2ef61d156
380 380 | | | | parent: 9:7010c0af0a35
381 381 | | | | user: test
382 382 | | | | date: Thu Jan 01 00:00:12 1970 +0000
383 383 | | | | summary: (12) merge two known; one immediate right, one far left
384 384 | | | |
385 385 | o | | changeset: 11:832d76e6bdf2
386 386 | |\ \ \ parent: 6:b105a072e251
387 387 | | | | | parent: 10:74c64d036d72
388 388 | | | | | user: test
389 389 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
390 390 | | | | | summary: (11) expand
391 391 | | | | |
392 392 | | o---+ changeset: 10:74c64d036d72
393 393 | | | | | parent: 0:e6eb3150255d
394 394 | |/ / / parent: 6:b105a072e251
395 395 | | | | user: test
396 396 | | | | date: Thu Jan 01 00:00:10 1970 +0000
397 397 | | | | summary: (10) merge two known; one immediate left, one near right
398 398 | | | |
399 399 o | | | changeset: 9:7010c0af0a35
400 400 |\ \ \ \ parent: 7:b632bb1b1224
401 401 | | | | | parent: 8:7a0b11f71937
402 402 | | | | | user: test
403 403 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
404 404 | | | | | summary: (9) expand
405 405 | | | | |
406 406 | o-----+ changeset: 8:7a0b11f71937
407 407 | | | | | parent: 0:e6eb3150255d
408 408 |/ / / / parent: 7:b632bb1b1224
409 409 | | | | user: test
410 410 | | | | date: Thu Jan 01 00:00:08 1970 +0000
411 411 | | | | summary: (8) merge two known; one immediate left, one far right
412 412 | | | |
413 413 o | | | changeset: 7:b632bb1b1224
414 414 |\ \ \ \ parent: 2:3d9a33b8d1e1
415 415 | | | | | parent: 5:4409d547b708
416 416 | | | | | user: test
417 417 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
418 418 | | | | | summary: (7) expand
419 419 | | | | |
420 420 +---o | | changeset: 6:b105a072e251
421 421 | |/ / / parent: 2:3d9a33b8d1e1
422 422 | | | | parent: 5:4409d547b708
423 423 | | | | user: test
424 424 | | | | date: Thu Jan 01 00:00:06 1970 +0000
425 425 | | | | summary: (6) merge two known; one immediate left, one far left
426 426 | | | |
427 427 | o | | changeset: 5:4409d547b708
428 428 | |\ \ \ parent: 3:27eef8ed80b4
429 429 | | | | | parent: 4:26a8bac39d9f
430 430 | | | | | user: test
431 431 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
432 432 | | | | | summary: (5) expand
433 433 | | | | |
434 434 | | o | | changeset: 4:26a8bac39d9f
435 435 | |/|/ / parent: 1:6db2ef61d156
436 436 | | | | parent: 3:27eef8ed80b4
437 437 | | | | user: test
438 438 | | | | date: Thu Jan 01 00:00:04 1970 +0000
439 439 | | | | summary: (4) merge two known; one immediate left, one immediate right
440 440 | | | |
441 441 | o | | changeset: 3:27eef8ed80b4
442 442 |/ / / user: test
443 443 | | | date: Thu Jan 01 00:00:03 1970 +0000
444 444 | | | summary: (3) collapse
445 445 | | |
446 446 o | | changeset: 2:3d9a33b8d1e1
447 447 |/ / user: test
448 448 | | date: Thu Jan 01 00:00:02 1970 +0000
449 449 | | summary: (2) collapse
450 450 | |
451 451 o | changeset: 1:6db2ef61d156
452 452 |/ user: test
453 453 | date: Thu Jan 01 00:00:01 1970 +0000
454 454 | summary: (1) collapse
455 455 |
456 456 o changeset: 0:e6eb3150255d
457 457 user: test
458 458 date: Thu Jan 01 00:00:00 1970 +0000
459 459 summary: (0) root
460 460
461 461
462 462 File glog:
463 463 $ hg log -G a
464 464 @ changeset: 34:fea3ac5810e0
465 465 | tag: tip
466 466 | parent: 32:d06dffa21a31
467 467 | user: test
468 468 | date: Thu Jan 01 00:00:34 1970 +0000
469 469 | summary: (34) head
470 470 |
471 471 | o changeset: 33:68608f5145f9
472 472 | | parent: 18:1aa84d96232a
473 473 | | user: test
474 474 | | date: Thu Jan 01 00:00:33 1970 +0000
475 475 | | summary: (33) head
476 476 | |
477 477 o | changeset: 32:d06dffa21a31
478 478 |\ \ parent: 27:886ed638191b
479 479 | | | parent: 31:621d83e11f67
480 480 | | | user: test
481 481 | | | date: Thu Jan 01 00:00:32 1970 +0000
482 482 | | | summary: (32) expand
483 483 | | |
484 484 | o | changeset: 31:621d83e11f67
485 485 | |\ \ parent: 21:d42a756af44d
486 486 | | | | parent: 30:6e11cd4b648f
487 487 | | | | user: test
488 488 | | | | date: Thu Jan 01 00:00:31 1970 +0000
489 489 | | | | summary: (31) expand
490 490 | | | |
491 491 | | o | changeset: 30:6e11cd4b648f
492 492 | | |\ \ parent: 28:44ecd0b9ae99
493 493 | | | | | parent: 29:cd9bb2be7593
494 494 | | | | | user: test
495 495 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
496 496 | | | | | summary: (30) expand
497 497 | | | | |
498 498 | | | o | changeset: 29:cd9bb2be7593
499 499 | | | | | parent: 0:e6eb3150255d
500 500 | | | | | user: test
501 501 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
502 502 | | | | | summary: (29) regular commit
503 503 | | | | |
504 504 | | o | | changeset: 28:44ecd0b9ae99
505 505 | | |\ \ \ parent: 1:6db2ef61d156
506 506 | | | | | | parent: 26:7f25b6c2f0b9
507 507 | | | | | | user: test
508 508 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
509 509 | | | | | | summary: (28) merge zero known
510 510 | | | | | |
511 511 o | | | | | changeset: 27:886ed638191b
512 512 |/ / / / / parent: 21:d42a756af44d
513 513 | | | | | user: test
514 514 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
515 515 | | | | | summary: (27) collapse
516 516 | | | | |
517 517 | | o---+ changeset: 26:7f25b6c2f0b9
518 518 | | | | | parent: 18:1aa84d96232a
519 519 | | | | | parent: 25:91da8ed57247
520 520 | | | | | user: test
521 521 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
522 522 | | | | | summary: (26) merge one known; far right
523 523 | | | | |
524 524 +---o | | changeset: 25:91da8ed57247
525 525 | | | | | parent: 21:d42a756af44d
526 526 | | | | | parent: 24:a9c19a3d96b7
527 527 | | | | | user: test
528 528 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
529 529 | | | | | summary: (25) merge one known; far left
530 530 | | | | |
531 531 | | o | | changeset: 24:a9c19a3d96b7
532 532 | | |\| | parent: 0:e6eb3150255d
533 533 | | | | | parent: 23:a01cddf0766d
534 534 | | | | | user: test
535 535 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
536 536 | | | | | summary: (24) merge one known; immediate right
537 537 | | | | |
538 538 | | o | | changeset: 23:a01cddf0766d
539 539 | |/| | | parent: 1:6db2ef61d156
540 540 | | | | | parent: 22:e0d9cccacb5d
541 541 | | | | | user: test
542 542 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
543 543 | | | | | summary: (23) merge one known; immediate left
544 544 | | | | |
545 545 +---o---+ changeset: 22:e0d9cccacb5d
546 546 | | | | parent: 18:1aa84d96232a
547 547 | | / / parent: 21:d42a756af44d
548 548 | | | | user: test
549 549 | | | | date: Thu Jan 01 00:00:22 1970 +0000
550 550 | | | | summary: (22) merge two known; one far left, one far right
551 551 | | | |
552 552 o | | | changeset: 21:d42a756af44d
553 553 |\ \ \ \ parent: 19:31ddc2c1573b
554 554 | | | | | parent: 20:d30ed6450e32
555 555 | | | | | user: test
556 556 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
557 557 | | | | | summary: (21) expand
558 558 | | | | |
559 559 | o---+-+ changeset: 20:d30ed6450e32
560 560 | | | | parent: 0:e6eb3150255d
561 561 | / / / parent: 18:1aa84d96232a
562 562 | | | | user: test
563 563 | | | | date: Thu Jan 01 00:00:20 1970 +0000
564 564 | | | | summary: (20) merge two known; two far right
565 565 | | | |
566 566 o | | | changeset: 19:31ddc2c1573b
567 567 |\ \ \ \ parent: 15:1dda3f72782d
568 568 | | | | | parent: 17:44765d7c06e0
569 569 | | | | | user: test
570 570 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
571 571 | | | | | summary: (19) expand
572 572 | | | | |
573 573 +---+---o changeset: 18:1aa84d96232a
574 574 | | | | parent: 1:6db2ef61d156
575 575 | | | | parent: 15:1dda3f72782d
576 576 | | | | user: test
577 577 | | | | date: Thu Jan 01 00:00:18 1970 +0000
578 578 | | | | summary: (18) merge two known; two far left
579 579 | | | |
580 580 | o | | changeset: 17:44765d7c06e0
581 581 | |\ \ \ parent: 12:86b91144a6e9
582 582 | | | | | parent: 16:3677d192927d
583 583 | | | | | user: test
584 584 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
585 585 | | | | | summary: (17) expand
586 586 | | | | |
587 587 | | o---+ changeset: 16:3677d192927d
588 588 | | | | | parent: 0:e6eb3150255d
589 589 | | |/ / parent: 1:6db2ef61d156
590 590 | | | | user: test
591 591 | | | | date: Thu Jan 01 00:00:16 1970 +0000
592 592 | | | | summary: (16) merge two known; one immediate right, one near right
593 593 | | | |
594 594 o | | | changeset: 15:1dda3f72782d
595 595 |\ \ \ \ parent: 13:22d8966a97e3
596 596 | | | | | parent: 14:8eac370358ef
597 597 | | | | | user: test
598 598 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
599 599 | | | | | summary: (15) expand
600 600 | | | | |
601 601 | o-----+ changeset: 14:8eac370358ef
602 602 | | | | | parent: 0:e6eb3150255d
603 603 | |/ / / parent: 12:86b91144a6e9
604 604 | | | | user: test
605 605 | | | | date: Thu Jan 01 00:00:14 1970 +0000
606 606 | | | | summary: (14) merge two known; one immediate right, one far right
607 607 | | | |
608 608 o | | | changeset: 13:22d8966a97e3
609 609 |\ \ \ \ parent: 9:7010c0af0a35
610 610 | | | | | parent: 11:832d76e6bdf2
611 611 | | | | | user: test
612 612 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
613 613 | | | | | summary: (13) expand
614 614 | | | | |
615 615 +---o | | changeset: 12:86b91144a6e9
616 616 | | |/ / parent: 1:6db2ef61d156
617 617 | | | | parent: 9:7010c0af0a35
618 618 | | | | user: test
619 619 | | | | date: Thu Jan 01 00:00:12 1970 +0000
620 620 | | | | summary: (12) merge two known; one immediate right, one far left
621 621 | | | |
622 622 | o | | changeset: 11:832d76e6bdf2
623 623 | |\ \ \ parent: 6:b105a072e251
624 624 | | | | | parent: 10:74c64d036d72
625 625 | | | | | user: test
626 626 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
627 627 | | | | | summary: (11) expand
628 628 | | | | |
629 629 | | o---+ changeset: 10:74c64d036d72
630 630 | | | | | parent: 0:e6eb3150255d
631 631 | |/ / / parent: 6:b105a072e251
632 632 | | | | user: test
633 633 | | | | date: Thu Jan 01 00:00:10 1970 +0000
634 634 | | | | summary: (10) merge two known; one immediate left, one near right
635 635 | | | |
636 636 o | | | changeset: 9:7010c0af0a35
637 637 |\ \ \ \ parent: 7:b632bb1b1224
638 638 | | | | | parent: 8:7a0b11f71937
639 639 | | | | | user: test
640 640 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
641 641 | | | | | summary: (9) expand
642 642 | | | | |
643 643 | o-----+ changeset: 8:7a0b11f71937
644 644 | | | | | parent: 0:e6eb3150255d
645 645 |/ / / / parent: 7:b632bb1b1224
646 646 | | | | user: test
647 647 | | | | date: Thu Jan 01 00:00:08 1970 +0000
648 648 | | | | summary: (8) merge two known; one immediate left, one far right
649 649 | | | |
650 650 o | | | changeset: 7:b632bb1b1224
651 651 |\ \ \ \ parent: 2:3d9a33b8d1e1
652 652 | | | | | parent: 5:4409d547b708
653 653 | | | | | user: test
654 654 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
655 655 | | | | | summary: (7) expand
656 656 | | | | |
657 657 +---o | | changeset: 6:b105a072e251
658 658 | |/ / / parent: 2:3d9a33b8d1e1
659 659 | | | | parent: 5:4409d547b708
660 660 | | | | user: test
661 661 | | | | date: Thu Jan 01 00:00:06 1970 +0000
662 662 | | | | summary: (6) merge two known; one immediate left, one far left
663 663 | | | |
664 664 | o | | changeset: 5:4409d547b708
665 665 | |\ \ \ parent: 3:27eef8ed80b4
666 666 | | | | | parent: 4:26a8bac39d9f
667 667 | | | | | user: test
668 668 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
669 669 | | | | | summary: (5) expand
670 670 | | | | |
671 671 | | o | | changeset: 4:26a8bac39d9f
672 672 | |/|/ / parent: 1:6db2ef61d156
673 673 | | | | parent: 3:27eef8ed80b4
674 674 | | | | user: test
675 675 | | | | date: Thu Jan 01 00:00:04 1970 +0000
676 676 | | | | summary: (4) merge two known; one immediate left, one immediate right
677 677 | | | |
678 678 | o | | changeset: 3:27eef8ed80b4
679 679 |/ / / user: test
680 680 | | | date: Thu Jan 01 00:00:03 1970 +0000
681 681 | | | summary: (3) collapse
682 682 | | |
683 683 o | | changeset: 2:3d9a33b8d1e1
684 684 |/ / user: test
685 685 | | date: Thu Jan 01 00:00:02 1970 +0000
686 686 | | summary: (2) collapse
687 687 | |
688 688 o | changeset: 1:6db2ef61d156
689 689 |/ user: test
690 690 | date: Thu Jan 01 00:00:01 1970 +0000
691 691 | summary: (1) collapse
692 692 |
693 693 o changeset: 0:e6eb3150255d
694 694 user: test
695 695 date: Thu Jan 01 00:00:00 1970 +0000
696 696 summary: (0) root
697 697
698 698
699 699 File glog per revset:
700 700
701 701 $ hg log -G -r 'file("a")'
702 702 @ changeset: 34:fea3ac5810e0
703 703 | tag: tip
704 704 | parent: 32:d06dffa21a31
705 705 | user: test
706 706 | date: Thu Jan 01 00:00:34 1970 +0000
707 707 | summary: (34) head
708 708 |
709 709 | o changeset: 33:68608f5145f9
710 710 | | parent: 18:1aa84d96232a
711 711 | | user: test
712 712 | | date: Thu Jan 01 00:00:33 1970 +0000
713 713 | | summary: (33) head
714 714 | |
715 715 o | changeset: 32:d06dffa21a31
716 716 |\ \ parent: 27:886ed638191b
717 717 | | | parent: 31:621d83e11f67
718 718 | | | user: test
719 719 | | | date: Thu Jan 01 00:00:32 1970 +0000
720 720 | | | summary: (32) expand
721 721 | | |
722 722 | o | changeset: 31:621d83e11f67
723 723 | |\ \ parent: 21:d42a756af44d
724 724 | | | | parent: 30:6e11cd4b648f
725 725 | | | | user: test
726 726 | | | | date: Thu Jan 01 00:00:31 1970 +0000
727 727 | | | | summary: (31) expand
728 728 | | | |
729 729 | | o | changeset: 30:6e11cd4b648f
730 730 | | |\ \ parent: 28:44ecd0b9ae99
731 731 | | | | | parent: 29:cd9bb2be7593
732 732 | | | | | user: test
733 733 | | | | | date: Thu Jan 01 00:00:30 1970 +0000
734 734 | | | | | summary: (30) expand
735 735 | | | | |
736 736 | | | o | changeset: 29:cd9bb2be7593
737 737 | | | | | parent: 0:e6eb3150255d
738 738 | | | | | user: test
739 739 | | | | | date: Thu Jan 01 00:00:29 1970 +0000
740 740 | | | | | summary: (29) regular commit
741 741 | | | | |
742 742 | | o | | changeset: 28:44ecd0b9ae99
743 743 | | |\ \ \ parent: 1:6db2ef61d156
744 744 | | | | | | parent: 26:7f25b6c2f0b9
745 745 | | | | | | user: test
746 746 | | | | | | date: Thu Jan 01 00:00:28 1970 +0000
747 747 | | | | | | summary: (28) merge zero known
748 748 | | | | | |
749 749 o | | | | | changeset: 27:886ed638191b
750 750 |/ / / / / parent: 21:d42a756af44d
751 751 | | | | | user: test
752 752 | | | | | date: Thu Jan 01 00:00:27 1970 +0000
753 753 | | | | | summary: (27) collapse
754 754 | | | | |
755 755 | | o---+ changeset: 26:7f25b6c2f0b9
756 756 | | | | | parent: 18:1aa84d96232a
757 757 | | | | | parent: 25:91da8ed57247
758 758 | | | | | user: test
759 759 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
760 760 | | | | | summary: (26) merge one known; far right
761 761 | | | | |
762 762 +---o | | changeset: 25:91da8ed57247
763 763 | | | | | parent: 21:d42a756af44d
764 764 | | | | | parent: 24:a9c19a3d96b7
765 765 | | | | | user: test
766 766 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
767 767 | | | | | summary: (25) merge one known; far left
768 768 | | | | |
769 769 | | o | | changeset: 24:a9c19a3d96b7
770 770 | | |\| | parent: 0:e6eb3150255d
771 771 | | | | | parent: 23:a01cddf0766d
772 772 | | | | | user: test
773 773 | | | | | date: Thu Jan 01 00:00:24 1970 +0000
774 774 | | | | | summary: (24) merge one known; immediate right
775 775 | | | | |
776 776 | | o | | changeset: 23:a01cddf0766d
777 777 | |/| | | parent: 1:6db2ef61d156
778 778 | | | | | parent: 22:e0d9cccacb5d
779 779 | | | | | user: test
780 780 | | | | | date: Thu Jan 01 00:00:23 1970 +0000
781 781 | | | | | summary: (23) merge one known; immediate left
782 782 | | | | |
783 783 +---o---+ changeset: 22:e0d9cccacb5d
784 784 | | | | parent: 18:1aa84d96232a
785 785 | | / / parent: 21:d42a756af44d
786 786 | | | | user: test
787 787 | | | | date: Thu Jan 01 00:00:22 1970 +0000
788 788 | | | | summary: (22) merge two known; one far left, one far right
789 789 | | | |
790 790 o | | | changeset: 21:d42a756af44d
791 791 |\ \ \ \ parent: 19:31ddc2c1573b
792 792 | | | | | parent: 20:d30ed6450e32
793 793 | | | | | user: test
794 794 | | | | | date: Thu Jan 01 00:00:21 1970 +0000
795 795 | | | | | summary: (21) expand
796 796 | | | | |
797 797 | o---+-+ changeset: 20:d30ed6450e32
798 798 | | | | parent: 0:e6eb3150255d
799 799 | / / / parent: 18:1aa84d96232a
800 800 | | | | user: test
801 801 | | | | date: Thu Jan 01 00:00:20 1970 +0000
802 802 | | | | summary: (20) merge two known; two far right
803 803 | | | |
804 804 o | | | changeset: 19:31ddc2c1573b
805 805 |\ \ \ \ parent: 15:1dda3f72782d
806 806 | | | | | parent: 17:44765d7c06e0
807 807 | | | | | user: test
808 808 | | | | | date: Thu Jan 01 00:00:19 1970 +0000
809 809 | | | | | summary: (19) expand
810 810 | | | | |
811 811 +---+---o changeset: 18:1aa84d96232a
812 812 | | | | parent: 1:6db2ef61d156
813 813 | | | | parent: 15:1dda3f72782d
814 814 | | | | user: test
815 815 | | | | date: Thu Jan 01 00:00:18 1970 +0000
816 816 | | | | summary: (18) merge two known; two far left
817 817 | | | |
818 818 | o | | changeset: 17:44765d7c06e0
819 819 | |\ \ \ parent: 12:86b91144a6e9
820 820 | | | | | parent: 16:3677d192927d
821 821 | | | | | user: test
822 822 | | | | | date: Thu Jan 01 00:00:17 1970 +0000
823 823 | | | | | summary: (17) expand
824 824 | | | | |
825 825 | | o---+ changeset: 16:3677d192927d
826 826 | | | | | parent: 0:e6eb3150255d
827 827 | | |/ / parent: 1:6db2ef61d156
828 828 | | | | user: test
829 829 | | | | date: Thu Jan 01 00:00:16 1970 +0000
830 830 | | | | summary: (16) merge two known; one immediate right, one near right
831 831 | | | |
832 832 o | | | changeset: 15:1dda3f72782d
833 833 |\ \ \ \ parent: 13:22d8966a97e3
834 834 | | | | | parent: 14:8eac370358ef
835 835 | | | | | user: test
836 836 | | | | | date: Thu Jan 01 00:00:15 1970 +0000
837 837 | | | | | summary: (15) expand
838 838 | | | | |
839 839 | o-----+ changeset: 14:8eac370358ef
840 840 | | | | | parent: 0:e6eb3150255d
841 841 | |/ / / parent: 12:86b91144a6e9
842 842 | | | | user: test
843 843 | | | | date: Thu Jan 01 00:00:14 1970 +0000
844 844 | | | | summary: (14) merge two known; one immediate right, one far right
845 845 | | | |
846 846 o | | | changeset: 13:22d8966a97e3
847 847 |\ \ \ \ parent: 9:7010c0af0a35
848 848 | | | | | parent: 11:832d76e6bdf2
849 849 | | | | | user: test
850 850 | | | | | date: Thu Jan 01 00:00:13 1970 +0000
851 851 | | | | | summary: (13) expand
852 852 | | | | |
853 853 +---o | | changeset: 12:86b91144a6e9
854 854 | | |/ / parent: 1:6db2ef61d156
855 855 | | | | parent: 9:7010c0af0a35
856 856 | | | | user: test
857 857 | | | | date: Thu Jan 01 00:00:12 1970 +0000
858 858 | | | | summary: (12) merge two known; one immediate right, one far left
859 859 | | | |
860 860 | o | | changeset: 11:832d76e6bdf2
861 861 | |\ \ \ parent: 6:b105a072e251
862 862 | | | | | parent: 10:74c64d036d72
863 863 | | | | | user: test
864 864 | | | | | date: Thu Jan 01 00:00:11 1970 +0000
865 865 | | | | | summary: (11) expand
866 866 | | | | |
867 867 | | o---+ changeset: 10:74c64d036d72
868 868 | | | | | parent: 0:e6eb3150255d
869 869 | |/ / / parent: 6:b105a072e251
870 870 | | | | user: test
871 871 | | | | date: Thu Jan 01 00:00:10 1970 +0000
872 872 | | | | summary: (10) merge two known; one immediate left, one near right
873 873 | | | |
874 874 o | | | changeset: 9:7010c0af0a35
875 875 |\ \ \ \ parent: 7:b632bb1b1224
876 876 | | | | | parent: 8:7a0b11f71937
877 877 | | | | | user: test
878 878 | | | | | date: Thu Jan 01 00:00:09 1970 +0000
879 879 | | | | | summary: (9) expand
880 880 | | | | |
881 881 | o-----+ changeset: 8:7a0b11f71937
882 882 | | | | | parent: 0:e6eb3150255d
883 883 |/ / / / parent: 7:b632bb1b1224
884 884 | | | | user: test
885 885 | | | | date: Thu Jan 01 00:00:08 1970 +0000
886 886 | | | | summary: (8) merge two known; one immediate left, one far right
887 887 | | | |
888 888 o | | | changeset: 7:b632bb1b1224
889 889 |\ \ \ \ parent: 2:3d9a33b8d1e1
890 890 | | | | | parent: 5:4409d547b708
891 891 | | | | | user: test
892 892 | | | | | date: Thu Jan 01 00:00:07 1970 +0000
893 893 | | | | | summary: (7) expand
894 894 | | | | |
895 895 +---o | | changeset: 6:b105a072e251
896 896 | |/ / / parent: 2:3d9a33b8d1e1
897 897 | | | | parent: 5:4409d547b708
898 898 | | | | user: test
899 899 | | | | date: Thu Jan 01 00:00:06 1970 +0000
900 900 | | | | summary: (6) merge two known; one immediate left, one far left
901 901 | | | |
902 902 | o | | changeset: 5:4409d547b708
903 903 | |\ \ \ parent: 3:27eef8ed80b4
904 904 | | | | | parent: 4:26a8bac39d9f
905 905 | | | | | user: test
906 906 | | | | | date: Thu Jan 01 00:00:05 1970 +0000
907 907 | | | | | summary: (5) expand
908 908 | | | | |
909 909 | | o | | changeset: 4:26a8bac39d9f
910 910 | |/|/ / parent: 1:6db2ef61d156
911 911 | | | | parent: 3:27eef8ed80b4
912 912 | | | | user: test
913 913 | | | | date: Thu Jan 01 00:00:04 1970 +0000
914 914 | | | | summary: (4) merge two known; one immediate left, one immediate right
915 915 | | | |
916 916 | o | | changeset: 3:27eef8ed80b4
917 917 |/ / / user: test
918 918 | | | date: Thu Jan 01 00:00:03 1970 +0000
919 919 | | | summary: (3) collapse
920 920 | | |
921 921 o | | changeset: 2:3d9a33b8d1e1
922 922 |/ / user: test
923 923 | | date: Thu Jan 01 00:00:02 1970 +0000
924 924 | | summary: (2) collapse
925 925 | |
926 926 o | changeset: 1:6db2ef61d156
927 927 |/ user: test
928 928 | date: Thu Jan 01 00:00:01 1970 +0000
929 929 | summary: (1) collapse
930 930 |
931 931 o changeset: 0:e6eb3150255d
932 932 user: test
933 933 date: Thu Jan 01 00:00:00 1970 +0000
934 934 summary: (0) root
935 935
936 936
937 937
938 938 File glog per revset (only merges):
939 939
940 940 $ hg log -G -r 'file("a")' -m
941 941 o changeset: 32:d06dffa21a31
942 942 |\ parent: 27:886ed638191b
943 943 | | parent: 31:621d83e11f67
944 944 | | user: test
945 945 | | date: Thu Jan 01 00:00:32 1970 +0000
946 946 | | summary: (32) expand
947 947 | |
948 948 o | changeset: 31:621d83e11f67
949 949 |\| parent: 21:d42a756af44d
950 950 | | parent: 30:6e11cd4b648f
951 951 | | user: test
952 952 | | date: Thu Jan 01 00:00:31 1970 +0000
953 953 | | summary: (31) expand
954 954 | |
955 955 o | changeset: 30:6e11cd4b648f
956 956 |\ \ parent: 28:44ecd0b9ae99
957 957 | | | parent: 29:cd9bb2be7593
958 958 | | | user: test
959 959 | | | date: Thu Jan 01 00:00:30 1970 +0000
960 960 | | | summary: (30) expand
961 961 | | |
962 962 o | | changeset: 28:44ecd0b9ae99
963 963 |\ \ \ parent: 1:6db2ef61d156
964 964 | | | | parent: 26:7f25b6c2f0b9
965 965 | | | | user: test
966 966 | | | | date: Thu Jan 01 00:00:28 1970 +0000
967 967 | | | | summary: (28) merge zero known
968 968 | | | |
969 969 o | | | changeset: 26:7f25b6c2f0b9
970 970 |\ \ \ \ parent: 18:1aa84d96232a
971 971 | | | | | parent: 25:91da8ed57247
972 972 | | | | | user: test
973 973 | | | | | date: Thu Jan 01 00:00:26 1970 +0000
974 974 | | | | | summary: (26) merge one known; far right
975 975 | | | | |
976 976 | o-----+ changeset: 25:91da8ed57247
977 977 | | | | | parent: 21:d42a756af44d
978 978 | | | | | parent: 24:a9c19a3d96b7
979 979 | | | | | user: test
980 980 | | | | | date: Thu Jan 01 00:00:25 1970 +0000
981 981 | | | | | summary: (25) merge one known; far left
982 982 | | | | |
983 983 | o | | | changeset: 24:a9c19a3d96b7
984 984 | |\ \ \ \ parent: 0:e6eb3150255d
985 985 | | | | | | parent: 23:a01cddf0766d
986 986 | | | | | | user: test
987 987 | | | | | | date: Thu Jan 01 00:00:24 1970 +0000
988 988 | | | | | | summary: (24) merge one known; immediate right
989 989 | | | | | |
990 990 | o---+ | | changeset: 23:a01cddf0766d
991 991 | | | | | | parent: 1:6db2ef61d156
992 992 | | | | | | parent: 22:e0d9cccacb5d
993 993 | | | | | | user: test
994 994 | | | | | | date: Thu Jan 01 00:00:23 1970 +0000
995 995 | | | | | | summary: (23) merge one known; immediate left
996 996 | | | | | |
997 997 | o-------+ changeset: 22:e0d9cccacb5d
998 998 | | | | | | parent: 18:1aa84d96232a
999 999 |/ / / / / parent: 21:d42a756af44d
1000 1000 | | | | | user: test
1001 1001 | | | | | date: Thu Jan 01 00:00:22 1970 +0000
1002 1002 | | | | | summary: (22) merge two known; one far left, one far right
1003 1003 | | | | |
1004 1004 | | | | o changeset: 21:d42a756af44d
1005 1005 | | | | |\ parent: 19:31ddc2c1573b
1006 1006 | | | | | | parent: 20:d30ed6450e32
1007 1007 | | | | | | user: test
1008 1008 | | | | | | date: Thu Jan 01 00:00:21 1970 +0000
1009 1009 | | | | | | summary: (21) expand
1010 1010 | | | | | |
1011 1011 +-+-------o changeset: 20:d30ed6450e32
1012 1012 | | | | | parent: 0:e6eb3150255d
1013 1013 | | | | | parent: 18:1aa84d96232a
1014 1014 | | | | | user: test
1015 1015 | | | | | date: Thu Jan 01 00:00:20 1970 +0000
1016 1016 | | | | | summary: (20) merge two known; two far right
1017 1017 | | | | |
1018 1018 | | | | o changeset: 19:31ddc2c1573b
1019 1019 | | | | |\ parent: 15:1dda3f72782d
1020 1020 | | | | | | parent: 17:44765d7c06e0
1021 1021 | | | | | | user: test
1022 1022 | | | | | | date: Thu Jan 01 00:00:19 1970 +0000
1023 1023 | | | | | | summary: (19) expand
1024 1024 | | | | | |
1025 1025 o---+---+ | changeset: 18:1aa84d96232a
1026 1026 | | | | | parent: 1:6db2ef61d156
1027 1027 / / / / / parent: 15:1dda3f72782d
1028 1028 | | | | | user: test
1029 1029 | | | | | date: Thu Jan 01 00:00:18 1970 +0000
1030 1030 | | | | | summary: (18) merge two known; two far left
1031 1031 | | | | |
1032 1032 | | | | o changeset: 17:44765d7c06e0
1033 1033 | | | | |\ parent: 12:86b91144a6e9
1034 1034 | | | | | | parent: 16:3677d192927d
1035 1035 | | | | | | user: test
1036 1036 | | | | | | date: Thu Jan 01 00:00:17 1970 +0000
1037 1037 | | | | | | summary: (17) expand
1038 1038 | | | | | |
1039 1039 +-+-------o changeset: 16:3677d192927d
1040 1040 | | | | | parent: 0:e6eb3150255d
1041 1041 | | | | | parent: 1:6db2ef61d156
1042 1042 | | | | | user: test
1043 1043 | | | | | date: Thu Jan 01 00:00:16 1970 +0000
1044 1044 | | | | | summary: (16) merge two known; one immediate right, one near right
1045 1045 | | | | |
1046 1046 | | | o | changeset: 15:1dda3f72782d
1047 1047 | | | |\ \ parent: 13:22d8966a97e3
1048 1048 | | | | | | parent: 14:8eac370358ef
1049 1049 | | | | | | user: test
1050 1050 | | | | | | date: Thu Jan 01 00:00:15 1970 +0000
1051 1051 | | | | | | summary: (15) expand
1052 1052 | | | | | |
1053 1053 +-------o | changeset: 14:8eac370358ef
1054 1054 | | | | |/ parent: 0:e6eb3150255d
1055 1055 | | | | | parent: 12:86b91144a6e9
1056 1056 | | | | | user: test
1057 1057 | | | | | date: Thu Jan 01 00:00:14 1970 +0000
1058 1058 | | | | | summary: (14) merge two known; one immediate right, one far right
1059 1059 | | | | |
1060 1060 | | | o | changeset: 13:22d8966a97e3
1061 1061 | | | |\ \ parent: 9:7010c0af0a35
1062 1062 | | | | | | parent: 11:832d76e6bdf2
1063 1063 | | | | | | user: test
1064 1064 | | | | | | date: Thu Jan 01 00:00:13 1970 +0000
1065 1065 | | | | | | summary: (13) expand
1066 1066 | | | | | |
1067 1067 | +---+---o changeset: 12:86b91144a6e9
1068 1068 | | | | | parent: 1:6db2ef61d156
1069 1069 | | | | | parent: 9:7010c0af0a35
1070 1070 | | | | | user: test
1071 1071 | | | | | date: Thu Jan 01 00:00:12 1970 +0000
1072 1072 | | | | | summary: (12) merge two known; one immediate right, one far left
1073 1073 | | | | |
1074 1074 | | | | o changeset: 11:832d76e6bdf2
1075 1075 | | | | |\ parent: 6:b105a072e251
1076 1076 | | | | | | parent: 10:74c64d036d72
1077 1077 | | | | | | user: test
1078 1078 | | | | | | date: Thu Jan 01 00:00:11 1970 +0000
1079 1079 | | | | | | summary: (11) expand
1080 1080 | | | | | |
1081 1081 +---------o changeset: 10:74c64d036d72
1082 1082 | | | | |/ parent: 0:e6eb3150255d
1083 1083 | | | | | parent: 6:b105a072e251
1084 1084 | | | | | user: test
1085 1085 | | | | | date: Thu Jan 01 00:00:10 1970 +0000
1086 1086 | | | | | summary: (10) merge two known; one immediate left, one near right
1087 1087 | | | | |
1088 1088 | | | o | changeset: 9:7010c0af0a35
1089 1089 | | | |\ \ parent: 7:b632bb1b1224
1090 1090 | | | | | | parent: 8:7a0b11f71937
1091 1091 | | | | | | user: test
1092 1092 | | | | | | date: Thu Jan 01 00:00:09 1970 +0000
1093 1093 | | | | | | summary: (9) expand
1094 1094 | | | | | |
1095 1095 +-------o | changeset: 8:7a0b11f71937
1096 1096 | | | |/ / parent: 0:e6eb3150255d
1097 1097 | | | | | parent: 7:b632bb1b1224
1098 1098 | | | | | user: test
1099 1099 | | | | | date: Thu Jan 01 00:00:08 1970 +0000
1100 1100 | | | | | summary: (8) merge two known; one immediate left, one far right
1101 1101 | | | | |
1102 1102 | | | o | changeset: 7:b632bb1b1224
1103 1103 | | | |\ \ parent: 2:3d9a33b8d1e1
1104 1104 | | | | | | parent: 5:4409d547b708
1105 1105 | | | | | | user: test
1106 1106 | | | | | | date: Thu Jan 01 00:00:07 1970 +0000
1107 1107 | | | | | | summary: (7) expand
1108 1108 | | | | | |
1109 1109 | | | +---o changeset: 6:b105a072e251
1110 1110 | | | | |/ parent: 2:3d9a33b8d1e1
1111 1111 | | | | | parent: 5:4409d547b708
1112 1112 | | | | | user: test
1113 1113 | | | | | date: Thu Jan 01 00:00:06 1970 +0000
1114 1114 | | | | | summary: (6) merge two known; one immediate left, one far left
1115 1115 | | | | |
1116 1116 | | | o | changeset: 5:4409d547b708
1117 1117 | | | |\ \ parent: 3:27eef8ed80b4
1118 1118 | | | | | | parent: 4:26a8bac39d9f
1119 1119 | | | | | | user: test
1120 1120 | | | | | | date: Thu Jan 01 00:00:05 1970 +0000
1121 1121 | | | | | | summary: (5) expand
1122 1122 | | | | | |
1123 1123 | +---o | | changeset: 4:26a8bac39d9f
1124 1124 | | | |/ / parent: 1:6db2ef61d156
1125 1125 | | | | | parent: 3:27eef8ed80b4
1126 1126 | | | | | user: test
1127 1127 | | | | | date: Thu Jan 01 00:00:04 1970 +0000
1128 1128 | | | | | summary: (4) merge two known; one immediate left, one immediate right
1129 1129 | | | | |
1130 1130
1131 1131
1132 1132 Empty revision range - display nothing:
1133 1133 $ hg log -G -r 1..0
1134 1134
1135 1135 $ cd ..
1136 1136
1137 1137 #if no-outer-repo
1138 1138
1139 1139 From outer space:
1140 1140 $ hg log -G -l1 repo
1141 1141 @ changeset: 34:fea3ac5810e0
1142 1142 | tag: tip
1143 1143 | parent: 32:d06dffa21a31
1144 1144 | user: test
1145 1145 | date: Thu Jan 01 00:00:34 1970 +0000
1146 1146 | summary: (34) head
1147 1147 |
1148 1148 $ hg log -G -l1 repo/a
1149 1149 @ changeset: 34:fea3ac5810e0
1150 1150 | tag: tip
1151 1151 | parent: 32:d06dffa21a31
1152 1152 | user: test
1153 1153 | date: Thu Jan 01 00:00:34 1970 +0000
1154 1154 | summary: (34) head
1155 1155 |
1156 1156 $ hg log -G -l1 repo/missing
1157 1157
1158 1158 #endif
1159 1159
1160 1160 File log with revs != cset revs:
1161 1161 $ hg init flog
1162 1162 $ cd flog
1163 1163 $ echo one >one
1164 1164 $ hg add one
1165 1165 $ hg commit -mone
1166 1166 $ echo two >two
1167 1167 $ hg add two
1168 1168 $ hg commit -mtwo
1169 1169 $ echo more >two
1170 1170 $ hg commit -mmore
1171 1171 $ hg log -G two
1172 1172 @ changeset: 2:12c28321755b
1173 1173 | tag: tip
1174 1174 | user: test
1175 1175 | date: Thu Jan 01 00:00:00 1970 +0000
1176 1176 | summary: more
1177 1177 |
1178 1178 o changeset: 1:5ac72c0599bf
1179 1179 | user: test
1180 1180 | date: Thu Jan 01 00:00:00 1970 +0000
1181 1181 | summary: two
1182 1182 |
1183 1183
1184 1184 Issue1896: File log with explicit style
1185 1185 $ hg log -G --style=default one
1186 1186 o changeset: 0:3d578b4a1f53
1187 1187 user: test
1188 1188 date: Thu Jan 01 00:00:00 1970 +0000
1189 1189 summary: one
1190 1190
1191 1191 Issue2395: glog --style header and footer
1192 1192 $ hg log -G --style=xml one
1193 1193 <?xml version="1.0"?>
1194 1194 <log>
1195 1195 o <logentry revision="0" node="3d578b4a1f537d5fcf7301bfa9c0b97adfaa6fb1">
1196 1196 <author email="test">test</author>
1197 1197 <date>1970-01-01T00:00:00+00:00</date>
1198 1198 <msg xml:space="preserve">one</msg>
1199 1199 </logentry>
1200 1200 </log>
1201 1201
1202 1202 $ cd ..
1203 1203
1204 1204 Incoming and outgoing:
1205 1205
1206 1206 $ hg clone -U -r31 repo repo2
1207 1207 adding changesets
1208 1208 adding manifests
1209 1209 adding file changes
1210 1210 added 31 changesets with 31 changes to 1 files
1211 1211 $ cd repo2
1212 1212
1213 1213 $ hg incoming --graph ../repo
1214 1214 comparing with ../repo
1215 1215 searching for changes
1216 1216 o changeset: 34:fea3ac5810e0
1217 1217 | tag: tip
1218 1218 | parent: 32:d06dffa21a31
1219 1219 | user: test
1220 1220 | date: Thu Jan 01 00:00:34 1970 +0000
1221 1221 | summary: (34) head
1222 1222 |
1223 1223 | o changeset: 33:68608f5145f9
1224 1224 | parent: 18:1aa84d96232a
1225 1225 | user: test
1226 1226 | date: Thu Jan 01 00:00:33 1970 +0000
1227 1227 | summary: (33) head
1228 1228 |
1229 1229 o changeset: 32:d06dffa21a31
1230 1230 | parent: 27:886ed638191b
1231 1231 | parent: 31:621d83e11f67
1232 1232 | user: test
1233 1233 | date: Thu Jan 01 00:00:32 1970 +0000
1234 1234 | summary: (32) expand
1235 1235 |
1236 1236 o changeset: 27:886ed638191b
1237 1237 parent: 21:d42a756af44d
1238 1238 user: test
1239 1239 date: Thu Jan 01 00:00:27 1970 +0000
1240 1240 summary: (27) collapse
1241 1241
1242 1242 $ cd ..
1243 1243
1244 1244 $ hg -R repo outgoing --graph repo2
1245 1245 comparing with repo2
1246 1246 searching for changes
1247 1247 @ changeset: 34:fea3ac5810e0
1248 1248 | tag: tip
1249 1249 | parent: 32:d06dffa21a31
1250 1250 | user: test
1251 1251 | date: Thu Jan 01 00:00:34 1970 +0000
1252 1252 | summary: (34) head
1253 1253 |
1254 1254 | o changeset: 33:68608f5145f9
1255 1255 | parent: 18:1aa84d96232a
1256 1256 | user: test
1257 1257 | date: Thu Jan 01 00:00:33 1970 +0000
1258 1258 | summary: (33) head
1259 1259 |
1260 1260 o changeset: 32:d06dffa21a31
1261 1261 | parent: 27:886ed638191b
1262 1262 | parent: 31:621d83e11f67
1263 1263 | user: test
1264 1264 | date: Thu Jan 01 00:00:32 1970 +0000
1265 1265 | summary: (32) expand
1266 1266 |
1267 1267 o changeset: 27:886ed638191b
1268 1268 parent: 21:d42a756af44d
1269 1269 user: test
1270 1270 date: Thu Jan 01 00:00:27 1970 +0000
1271 1271 summary: (27) collapse
1272 1272
1273 1273
1274 1274 File + limit with revs != cset revs:
1275 1275 $ cd repo
1276 1276 $ touch b
1277 1277 $ hg ci -Aqm0
1278 1278 $ hg log -G -l2 a
1279 1279 o changeset: 34:fea3ac5810e0
1280 1280 | parent: 32:d06dffa21a31
1281 1281 | user: test
1282 1282 | date: Thu Jan 01 00:00:34 1970 +0000
1283 1283 | summary: (34) head
1284 1284 |
1285 1285 | o changeset: 33:68608f5145f9
1286 1286 | | parent: 18:1aa84d96232a
1287 1287 | | user: test
1288 1288 | | date: Thu Jan 01 00:00:33 1970 +0000
1289 1289 | | summary: (33) head
1290 1290 | |
1291 1291
1292 1292 File + limit + -ra:b, (b - a) < limit:
1293 1293 $ hg log -G -l3000 -r32:tip a
1294 1294 o changeset: 34:fea3ac5810e0
1295 1295 | parent: 32:d06dffa21a31
1296 1296 | user: test
1297 1297 | date: Thu Jan 01 00:00:34 1970 +0000
1298 1298 | summary: (34) head
1299 1299 |
1300 1300 | o changeset: 33:68608f5145f9
1301 1301 | | parent: 18:1aa84d96232a
1302 1302 | | user: test
1303 1303 | | date: Thu Jan 01 00:00:33 1970 +0000
1304 1304 | | summary: (33) head
1305 1305 | |
1306 1306 o | changeset: 32:d06dffa21a31
1307 1307 |\ \ parent: 27:886ed638191b
1308 1308 | | | parent: 31:621d83e11f67
1309 1309 | | | user: test
1310 1310 | | | date: Thu Jan 01 00:00:32 1970 +0000
1311 1311 | | | summary: (32) expand
1312 1312 | | |
1313 1313
1314 1314 Point out a common and an uncommon unshown parent
1315 1315
1316 1316 $ hg log -G -r 'rev(8) or rev(9)'
1317 1317 o changeset: 9:7010c0af0a35
1318 1318 |\ parent: 7:b632bb1b1224
1319 1319 | | parent: 8:7a0b11f71937
1320 1320 | | user: test
1321 1321 | | date: Thu Jan 01 00:00:09 1970 +0000
1322 1322 | | summary: (9) expand
1323 1323 | |
1324 1324 o | changeset: 8:7a0b11f71937
1325 1325 |\| parent: 0:e6eb3150255d
1326 1326 | | parent: 7:b632bb1b1224
1327 1327 | | user: test
1328 1328 | | date: Thu Jan 01 00:00:08 1970 +0000
1329 1329 | | summary: (8) merge two known; one immediate left, one far right
1330 1330 | |
1331 1331
1332 1332 File + limit + -ra:b, b < tip:
1333 1333
1334 1334 $ hg log -G -l1 -r32:34 a
1335 1335 o changeset: 34:fea3ac5810e0
1336 1336 | parent: 32:d06dffa21a31
1337 1337 | user: test
1338 1338 | date: Thu Jan 01 00:00:34 1970 +0000
1339 1339 | summary: (34) head
1340 1340 |
1341 1341
1342 1342 file(File) + limit + -ra:b, b < tip:
1343 1343
1344 1344 $ hg log -G -l1 -r32:34 -r 'file("a")'
1345 1345 o changeset: 34:fea3ac5810e0
1346 1346 | parent: 32:d06dffa21a31
1347 1347 | user: test
1348 1348 | date: Thu Jan 01 00:00:34 1970 +0000
1349 1349 | summary: (34) head
1350 1350 |
1351 1351
1352 1352 limit(file(File) and a::b), b < tip:
1353 1353
1354 1354 $ hg log -G -r 'limit(file("a") and 32::34, 1)'
1355 1355 o changeset: 32:d06dffa21a31
1356 1356 |\ parent: 27:886ed638191b
1357 1357 | | parent: 31:621d83e11f67
1358 1358 | | user: test
1359 1359 | | date: Thu Jan 01 00:00:32 1970 +0000
1360 1360 | | summary: (32) expand
1361 1361 | |
1362 1362
1363 1363 File + limit + -ra:b, b < tip:
1364 1364
1365 1365 $ hg log -G -r 'limit(file("a") and 34::32, 1)'
1366 1366
1367 1367 File + limit + -ra:b, b < tip, (b - a) < limit:
1368 1368
1369 1369 $ hg log -G -l10 -r33:34 a
1370 1370 o changeset: 34:fea3ac5810e0
1371 1371 | parent: 32:d06dffa21a31
1372 1372 | user: test
1373 1373 | date: Thu Jan 01 00:00:34 1970 +0000
1374 1374 | summary: (34) head
1375 1375 |
1376 1376 | o changeset: 33:68608f5145f9
1377 1377 | | parent: 18:1aa84d96232a
1378 1378 | | user: test
1379 1379 | | date: Thu Jan 01 00:00:33 1970 +0000
1380 1380 | | summary: (33) head
1381 1381 | |
1382 1382
1383 1383 Do not crash or produce strange graphs if history is buggy
1384 1384
1385 1385 $ hg branch branch
1386 1386 marked working directory as branch branch
1387 1387 (branches are permanent and global, did you want a bookmark?)
1388 1388 $ commit 36 "buggy merge: identical parents" 35 35
1389 1389 $ hg log -G -l5
1390 1390 @ changeset: 36:08a19a744424
1391 1391 | branch: branch
1392 1392 | tag: tip
1393 1393 | parent: 35:9159c3644c5e
1394 1394 | parent: 35:9159c3644c5e
1395 1395 | user: test
1396 1396 | date: Thu Jan 01 00:00:36 1970 +0000
1397 1397 | summary: (36) buggy merge: identical parents
1398 1398 |
1399 1399 o changeset: 35:9159c3644c5e
1400 1400 | user: test
1401 1401 | date: Thu Jan 01 00:00:00 1970 +0000
1402 1402 | summary: 0
1403 1403 |
1404 1404 o changeset: 34:fea3ac5810e0
1405 1405 | parent: 32:d06dffa21a31
1406 1406 | user: test
1407 1407 | date: Thu Jan 01 00:00:34 1970 +0000
1408 1408 | summary: (34) head
1409 1409 |
1410 1410 | o changeset: 33:68608f5145f9
1411 1411 | | parent: 18:1aa84d96232a
1412 1412 | | user: test
1413 1413 | | date: Thu Jan 01 00:00:33 1970 +0000
1414 1414 | | summary: (33) head
1415 1415 | |
1416 1416 o | changeset: 32:d06dffa21a31
1417 1417 |\ \ parent: 27:886ed638191b
1418 1418 | | | parent: 31:621d83e11f67
1419 1419 | | | user: test
1420 1420 | | | date: Thu Jan 01 00:00:32 1970 +0000
1421 1421 | | | summary: (32) expand
1422 1422 | | |
1423 1423
1424 1424 Test log -G options
1425 1425
1426 1426 $ testlog() {
1427 1427 > hg log -G --print-revset "$@"
1428 1428 > hg log --template 'nodetag {rev}\n' "$@" | grep nodetag \
1429 1429 > | sed 's/.*nodetag/nodetag/' > log.nodes
1430 1430 > hg log -G --template 'nodetag {rev}\n' "$@" | grep nodetag \
1431 1431 > | sed 's/.*nodetag/nodetag/' > glog.nodes
1432 1432 > diff -u log.nodes glog.nodes | grep '^[-+@ ]' || :
1433 1433 > }
1434 1434
1435 1435 glog always reorders nodes which explains the difference with log
1436 1436
1437 1437 $ testlog -r 27 -r 25 -r 21 -r 34 -r 32 -r 31
1438 1438 ['27', '25', '21', '34', '32', '31']
1439 1439 []
1440 1440 --- log.nodes * (glob)
1441 1441 +++ glog.nodes * (glob)
1442 1442 @@ -1,6 +1,6 @@
1443 1443 -nodetag 27
1444 1444 -nodetag 25
1445 1445 -nodetag 21
1446 1446 nodetag 34
1447 1447 nodetag 32
1448 1448 nodetag 31
1449 1449 +nodetag 27
1450 1450 +nodetag 25
1451 1451 +nodetag 21
1452 1452 $ testlog -u test -u not-a-user
1453 1453 []
1454 1454 (group
1455 1455 (group
1456 1456 (or
1457 1457 (func
1458 1458 ('symbol', 'user')
1459 1459 ('string', 'test'))
1460 1460 (func
1461 1461 ('symbol', 'user')
1462 1462 ('string', 'not-a-user')))))
1463 1463 $ testlog -b not-a-branch
1464 1464 abort: unknown revision 'not-a-branch'!
1465 1465 abort: unknown revision 'not-a-branch'!
1466 1466 abort: unknown revision 'not-a-branch'!
1467 1467 $ testlog -b 35 -b 36 --only-branch branch
1468 1468 []
1469 1469 (group
1470 1470 (group
1471 1471 (or
1472 1472 (func
1473 1473 ('symbol', 'branch')
1474 1474 ('string', 'default'))
1475 1475 (func
1476 1476 ('symbol', 'branch')
1477 1477 ('string', 'branch'))
1478 1478 (func
1479 1479 ('symbol', 'branch')
1480 1480 ('string', 'branch')))))
1481 1481 $ testlog -k expand -k merge
1482 1482 []
1483 1483 (group
1484 1484 (group
1485 1485 (or
1486 1486 (func
1487 1487 ('symbol', 'keyword')
1488 1488 ('string', 'expand'))
1489 1489 (func
1490 1490 ('symbol', 'keyword')
1491 1491 ('string', 'merge')))))
1492 1492 $ testlog --only-merges
1493 1493 []
1494 1494 (group
1495 1495 (func
1496 1496 ('symbol', 'merge')
1497 1497 None))
1498 1498 $ testlog --no-merges
1499 1499 []
1500 1500 (group
1501 1501 (not
1502 1502 (func
1503 1503 ('symbol', 'merge')
1504 1504 None)))
1505 1505 $ testlog --date '2 0 to 4 0'
1506 1506 []
1507 1507 (group
1508 1508 (func
1509 1509 ('symbol', 'date')
1510 1510 ('string', '2 0 to 4 0')))
1511 1511 $ hg log -G -d 'brace ) in a date'
1512 1512 abort: invalid date: 'brace ) in a date'
1513 1513 [255]
1514 1514 $ testlog --prune 31 --prune 32
1515 1515 []
1516 1516 (group
1517 1517 (group
1518 1518 (and
1519 1519 (not
1520 1520 (group
1521 1521 (or
1522 1522 ('string', '31')
1523 1523 (func
1524 1524 ('symbol', 'ancestors')
1525 1525 ('string', '31')))))
1526 1526 (not
1527 1527 (group
1528 1528 (or
1529 1529 ('string', '32')
1530 1530 (func
1531 1531 ('symbol', 'ancestors')
1532 1532 ('string', '32'))))))))
1533 1533
1534 1534 Dedicated repo for --follow and paths filtering. The g is crafted to
1535 1535 have 2 filelog topological heads in a linear changeset graph.
1536 1536
1537 1537 $ cd ..
1538 1538 $ hg init follow
1539 1539 $ cd follow
1540 1540 $ testlog --follow
1541 1541 []
1542 1542 []
1543 1543 $ testlog -rnull
1544 1544 ['null']
1545 1545 []
1546 1546 $ echo a > a
1547 1547 $ echo aa > aa
1548 1548 $ echo f > f
1549 1549 $ hg ci -Am "add a" a aa f
1550 1550 $ hg cp a b
1551 1551 $ hg cp f g
1552 1552 $ hg ci -m "copy a b"
1553 1553 $ mkdir dir
1554 1554 $ hg mv b dir
1555 1555 $ echo g >> g
1556 1556 $ echo f >> f
1557 1557 $ hg ci -m "mv b dir/b"
1558 1558 $ hg mv a b
1559 1559 $ hg cp -f f g
1560 1560 $ echo a > d
1561 1561 $ hg add d
1562 1562 $ hg ci -m "mv a b; add d"
1563 1563 $ hg mv dir/b e
1564 1564 $ hg ci -m "mv dir/b e"
1565 1565 $ hg log -G --template '({rev}) {desc|firstline}\n'
1566 1566 @ (4) mv dir/b e
1567 1567 |
1568 1568 o (3) mv a b; add d
1569 1569 |
1570 1570 o (2) mv b dir/b
1571 1571 |
1572 1572 o (1) copy a b
1573 1573 |
1574 1574 o (0) add a
1575 1575
1576 1576
1577 1577 $ testlog a
1578 1578 []
1579 1579 (group
1580 1580 (group
1581 1581 (func
1582 1582 ('symbol', 'filelog')
1583 1583 ('string', 'a'))))
1584 1584 $ testlog a b
1585 1585 []
1586 1586 (group
1587 1587 (group
1588 1588 (or
1589 1589 (func
1590 1590 ('symbol', 'filelog')
1591 1591 ('string', 'a'))
1592 1592 (func
1593 1593 ('symbol', 'filelog')
1594 1594 ('string', 'b')))))
1595 1595
1596 1596 Test falling back to slow path for non-existing files
1597 1597
1598 1598 $ testlog a c
1599 1599 []
1600 1600 (group
1601 1601 (func
1602 1602 ('symbol', '_matchfiles')
1603 1603 (list
1604 1604 (list
1605 1605 (list
1606 1606 ('string', 'r:')
1607 1607 ('string', 'd:relpath'))
1608 1608 ('string', 'p:a'))
1609 1609 ('string', 'p:c'))))
1610 1610
1611 1611 Test multiple --include/--exclude/paths
1612 1612
1613 1613 $ testlog --include a --include e --exclude b --exclude e a e
1614 1614 []
1615 1615 (group
1616 1616 (func
1617 1617 ('symbol', '_matchfiles')
1618 1618 (list
1619 1619 (list
1620 1620 (list
1621 1621 (list
1622 1622 (list
1623 1623 (list
1624 1624 (list
1625 1625 ('string', 'r:')
1626 1626 ('string', 'd:relpath'))
1627 1627 ('string', 'p:a'))
1628 1628 ('string', 'p:e'))
1629 1629 ('string', 'i:a'))
1630 1630 ('string', 'i:e'))
1631 1631 ('string', 'x:b'))
1632 1632 ('string', 'x:e'))))
1633 1633
1634 1634 Test glob expansion of pats
1635 1635
1636 1636 $ expandglobs=`$PYTHON -c "import mercurial.util; \
1637 1637 > print mercurial.util.expandglobs and 'true' or 'false'"`
1638 1638 $ if [ $expandglobs = "true" ]; then
1639 1639 > testlog 'a*';
1640 1640 > else
1641 1641 > testlog a*;
1642 1642 > fi;
1643 1643 []
1644 1644 (group
1645 1645 (group
1646 1646 (func
1647 1647 ('symbol', 'filelog')
1648 1648 ('string', 'aa'))))
1649 1649
1650 1650 Test --follow on a non-existent directory
1651 1651
1652 1652 $ testlog -f dir
1653 1653 abort: cannot follow file not in parent revision: "dir"
1654 1654 abort: cannot follow file not in parent revision: "dir"
1655 1655 abort: cannot follow file not in parent revision: "dir"
1656 1656
1657 1657 Test --follow on a directory
1658 1658
1659 1659 $ hg up -q '.^'
1660 1660 $ testlog -f dir
1661 1661 []
1662 1662 (group
1663 1663 (and
1664 1664 (func
1665 1665 ('symbol', 'ancestors')
1666 1666 ('symbol', '.'))
1667 1667 (func
1668 1668 ('symbol', '_matchfiles')
1669 1669 (list
1670 1670 (list
1671 1671 ('string', 'r:')
1672 1672 ('string', 'd:relpath'))
1673 1673 ('string', 'p:dir')))))
1674 1674 $ hg up -q tip
1675 1675
1676 1676 Test --follow on file not in parent revision
1677 1677
1678 1678 $ testlog -f a
1679 1679 abort: cannot follow file not in parent revision: "a"
1680 1680 abort: cannot follow file not in parent revision: "a"
1681 1681 abort: cannot follow file not in parent revision: "a"
1682 1682
1683 1683 Test --follow and patterns
1684 1684
1685 1685 $ testlog -f 'glob:*'
1686 1686 []
1687 1687 (group
1688 1688 (and
1689 1689 (func
1690 1690 ('symbol', 'ancestors')
1691 1691 ('symbol', '.'))
1692 1692 (func
1693 1693 ('symbol', '_matchfiles')
1694 1694 (list
1695 1695 (list
1696 1696 ('string', 'r:')
1697 1697 ('string', 'd:relpath'))
1698 1698 ('string', 'p:glob:*')))))
1699 1699
1700 1700 Test --follow on a single rename
1701 1701
1702 1702 $ hg up -q 2
1703 1703 $ testlog -f a
1704 1704 []
1705 1705 (group
1706 1706 (group
1707 1707 (func
1708 1708 ('symbol', 'follow')
1709 1709 ('string', 'a'))))
1710 1710
1711 1711 Test --follow and multiple renames
1712 1712
1713 1713 $ hg up -q tip
1714 1714 $ testlog -f e
1715 1715 []
1716 1716 (group
1717 1717 (group
1718 1718 (func
1719 1719 ('symbol', 'follow')
1720 1720 ('string', 'e'))))
1721 1721
1722 1722 Test --follow and multiple filelog heads
1723 1723
1724 1724 $ hg up -q 2
1725 1725 $ testlog -f g
1726 1726 []
1727 1727 (group
1728 1728 (group
1729 1729 (func
1730 1730 ('symbol', 'follow')
1731 1731 ('string', 'g'))))
1732 1732 $ cat log.nodes
1733 1733 nodetag 2
1734 1734 nodetag 1
1735 1735 nodetag 0
1736 1736 $ hg up -q tip
1737 1737 $ testlog -f g
1738 1738 []
1739 1739 (group
1740 1740 (group
1741 1741 (func
1742 1742 ('symbol', 'follow')
1743 1743 ('string', 'g'))))
1744 1744 $ cat log.nodes
1745 1745 nodetag 3
1746 1746 nodetag 2
1747 1747 nodetag 0
1748 1748
1749 1749 Test --follow and multiple files
1750 1750
1751 1751 $ testlog -f g e
1752 1752 []
1753 1753 (group
1754 1754 (group
1755 1755 (or
1756 1756 (func
1757 1757 ('symbol', 'follow')
1758 1758 ('string', 'g'))
1759 1759 (func
1760 1760 ('symbol', 'follow')
1761 1761 ('string', 'e')))))
1762 1762 $ cat log.nodes
1763 1763 nodetag 4
1764 1764 nodetag 3
1765 1765 nodetag 2
1766 1766 nodetag 1
1767 1767 nodetag 0
1768 1768
1769 1769 Test --follow null parent
1770 1770
1771 1771 $ hg up -q null
1772 1772 $ testlog -f
1773 1773 []
1774 1774 []
1775 1775
1776 1776 Test --follow-first
1777 1777
1778 1778 $ hg up -q 3
1779 1779 $ echo ee > e
1780 1780 $ hg ci -Am "add another e" e
1781 1781 created new head
1782 1782 $ hg merge --tool internal:other 4
1783 1783 0 files updated, 1 files merged, 1 files removed, 0 files unresolved
1784 1784 (branch merge, don't forget to commit)
1785 1785 $ echo merge > e
1786 1786 $ hg ci -m "merge 5 and 4"
1787 1787 $ testlog --follow-first
1788 1788 []
1789 1789 (group
1790 1790 (func
1791 1791 ('symbol', '_firstancestors')
1792 1792 (func
1793 1793 ('symbol', 'rev')
1794 1794 ('symbol', '6'))))
1795 1795
1796 1796 Cannot compare with log --follow-first FILE as it never worked
1797 1797
1798 1798 $ hg log -G --print-revset --follow-first e
1799 1799 []
1800 1800 (group
1801 1801 (group
1802 1802 (func
1803 1803 ('symbol', '_followfirst')
1804 1804 ('string', 'e'))))
1805 1805 $ hg log -G --follow-first e --template '{rev} {desc|firstline}\n'
1806 1806 @ 6 merge 5 and 4
1807 1807 |\
1808 1808 o | 5 add another e
1809 1809 | |
1810 1810
1811 1811 Test --copies
1812 1812
1813 1813 $ hg log -G --copies --template "{rev} {desc|firstline} \
1814 1814 > copies: {file_copies_switch}\n"
1815 1815 @ 6 merge 5 and 4 copies:
1816 1816 |\
1817 1817 | o 5 add another e copies:
1818 1818 | |
1819 1819 o | 4 mv dir/b e copies: e (dir/b)
1820 1820 |/
1821 1821 o 3 mv a b; add d copies: b (a)g (f)
1822 1822 |
1823 1823 o 2 mv b dir/b copies: dir/b (b)
1824 1824 |
1825 1825 o 1 copy a b copies: b (a)g (f)
1826 1826 |
1827 1827 o 0 add a copies:
1828 1828
1829 1829 Test "set:..." and parent revision
1830 1830
1831 1831 $ hg up -q 4
1832 1832 $ testlog "set:copied()"
1833 1833 []
1834 1834 (group
1835 1835 (func
1836 1836 ('symbol', '_matchfiles')
1837 1837 (list
1838 1838 (list
1839 1839 ('string', 'r:')
1840 1840 ('string', 'd:relpath'))
1841 1841 ('string', 'p:set:copied()'))))
1842 1842 $ testlog --include "set:copied()"
1843 1843 []
1844 1844 (group
1845 1845 (func
1846 1846 ('symbol', '_matchfiles')
1847 1847 (list
1848 1848 (list
1849 1849 ('string', 'r:')
1850 1850 ('string', 'd:relpath'))
1851 1851 ('string', 'i:set:copied()'))))
1852 1852 $ testlog -r "sort(file('set:copied()'), -rev)"
1853 1853 ["sort(file('set:copied()'), -rev)"]
1854 1854 []
1855 1855
1856 1856 Test --removed
1857 1857
1858 1858 $ testlog --removed
1859 1859 []
1860 1860 []
1861 1861 $ testlog --removed a
1862 1862 []
1863 1863 (group
1864 1864 (func
1865 1865 ('symbol', '_matchfiles')
1866 1866 (list
1867 1867 (list
1868 1868 ('string', 'r:')
1869 1869 ('string', 'd:relpath'))
1870 1870 ('string', 'p:a'))))
1871 1871 $ testlog --removed --follow a
1872 1872 []
1873 1873 (group
1874 1874 (and
1875 1875 (func
1876 1876 ('symbol', 'ancestors')
1877 1877 ('symbol', '.'))
1878 1878 (func
1879 1879 ('symbol', '_matchfiles')
1880 1880 (list
1881 1881 (list
1882 1882 ('string', 'r:')
1883 1883 ('string', 'd:relpath'))
1884 1884 ('string', 'p:a')))))
1885 1885
1886 1886 Test --patch and --stat with --follow and --follow-first
1887 1887
1888 1888 $ hg up -q 3
1889 1889 $ hg log -G --git --patch b
1890 1890 o changeset: 1:216d4c92cf98
1891 1891 | user: test
1892 1892 | date: Thu Jan 01 00:00:00 1970 +0000
1893 1893 | summary: copy a b
1894 1894 |
1895 1895 | diff --git a/a b/b
1896 1896 | copy from a
1897 1897 | copy to b
1898 1898 |
1899 1899
1900 1900 $ hg log -G --git --stat b
1901 1901 o changeset: 1:216d4c92cf98
1902 1902 | user: test
1903 1903 | date: Thu Jan 01 00:00:00 1970 +0000
1904 1904 | summary: copy a b
1905 1905 |
1906 1906 | b | 0
1907 1907 | 1 files changed, 0 insertions(+), 0 deletions(-)
1908 1908 |
1909 1909
1910 1910 $ hg log -G --git --patch --follow b
1911 1911 o changeset: 1:216d4c92cf98
1912 1912 | user: test
1913 1913 | date: Thu Jan 01 00:00:00 1970 +0000
1914 1914 | summary: copy a b
1915 1915 |
1916 1916 | diff --git a/a b/b
1917 1917 | copy from a
1918 1918 | copy to b
1919 1919 |
1920 1920 o changeset: 0:f8035bb17114
1921 1921 user: test
1922 1922 date: Thu Jan 01 00:00:00 1970 +0000
1923 1923 summary: add a
1924 1924
1925 1925 diff --git a/a b/a
1926 1926 new file mode 100644
1927 1927 --- /dev/null
1928 1928 +++ b/a
1929 1929 @@ -0,0 +1,1 @@
1930 1930 +a
1931 1931
1932 1932
1933 1933 $ hg log -G --git --stat --follow b
1934 1934 o changeset: 1:216d4c92cf98
1935 1935 | user: test
1936 1936 | date: Thu Jan 01 00:00:00 1970 +0000
1937 1937 | summary: copy a b
1938 1938 |
1939 1939 | b | 0
1940 1940 | 1 files changed, 0 insertions(+), 0 deletions(-)
1941 1941 |
1942 1942 o changeset: 0:f8035bb17114
1943 1943 user: test
1944 1944 date: Thu Jan 01 00:00:00 1970 +0000
1945 1945 summary: add a
1946 1946
1947 1947 a | 1 +
1948 1948 1 files changed, 1 insertions(+), 0 deletions(-)
1949 1949
1950 1950
1951 1951 $ hg up -q 6
1952 1952 $ hg log -G --git --patch --follow-first e
1953 1953 @ changeset: 6:fc281d8ff18d
1954 1954 |\ tag: tip
1955 1955 | | parent: 5:99b31f1c2782
1956 1956 | | parent: 4:17d952250a9d
1957 1957 | | user: test
1958 1958 | | date: Thu Jan 01 00:00:00 1970 +0000
1959 1959 | | summary: merge 5 and 4
1960 1960 | |
1961 1961 | | diff --git a/e b/e
1962 1962 | | --- a/e
1963 1963 | | +++ b/e
1964 1964 | | @@ -1,1 +1,1 @@
1965 1965 | | -ee
1966 1966 | | +merge
1967 1967 | |
1968 1968 o | changeset: 5:99b31f1c2782
1969 1969 | | parent: 3:5918b8d165d1
1970 1970 | | user: test
1971 1971 | | date: Thu Jan 01 00:00:00 1970 +0000
1972 1972 | | summary: add another e
1973 1973 | |
1974 1974 | | diff --git a/e b/e
1975 1975 | | new file mode 100644
1976 1976 | | --- /dev/null
1977 1977 | | +++ b/e
1978 1978 | | @@ -0,0 +1,1 @@
1979 1979 | | +ee
1980 1980 | |
1981 1981
1982 1982 Test old-style --rev
1983 1983
1984 1984 $ hg tag 'foo-bar'
1985 1985 $ testlog -r 'foo-bar'
1986 1986 ['foo-bar']
1987 1987 []
1988 1988
1989 1989 Test --follow and forward --rev
1990 1990
1991 1991 $ hg up -q 6
1992 1992 $ echo g > g
1993 1993 $ hg ci -Am 'add g' g
1994 1994 created new head
1995 1995 $ hg up -q 2
1996 1996 $ hg log -G --template "{rev} {desc|firstline}\n"
1997 1997 o 8 add g
1998 1998 |
1999 1999 | o 7 Added tag foo-bar for changeset fc281d8ff18d
2000 2000 |/
2001 2001 o 6 merge 5 and 4
2002 2002 |\
2003 2003 | o 5 add another e
2004 2004 | |
2005 2005 o | 4 mv dir/b e
2006 2006 |/
2007 2007 o 3 mv a b; add d
2008 2008 |
2009 2009 @ 2 mv b dir/b
2010 2010 |
2011 2011 o 1 copy a b
2012 2012 |
2013 2013 o 0 add a
2014 2014
2015 $ hg archive -r 7 archive
2016 $ grep changessincelatesttag archive/.hg_archival.txt
2017 changessincelatesttag: 1
2018 $ rm -r archive
2019
2020 changessincelatesttag with no prior tag
2021 $ hg archive -r 4 archive
2022 $ grep changessincelatesttag archive/.hg_archival.txt
2023 changessincelatesttag: 5
2024
2015 2025 $ hg export 'all()'
2016 2026 # HG changeset patch
2017 2027 # User test
2018 2028 # Date 0 0
2019 2029 # Thu Jan 01 00:00:00 1970 +0000
2020 2030 # Node ID f8035bb17114da16215af3436ec5222428ace8ee
2021 2031 # Parent 0000000000000000000000000000000000000000
2022 2032 add a
2023 2033
2024 2034 diff -r 000000000000 -r f8035bb17114 a
2025 2035 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2026 2036 +++ b/a Thu Jan 01 00:00:00 1970 +0000
2027 2037 @@ -0,0 +1,1 @@
2028 2038 +a
2029 2039 diff -r 000000000000 -r f8035bb17114 aa
2030 2040 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2031 2041 +++ b/aa Thu Jan 01 00:00:00 1970 +0000
2032 2042 @@ -0,0 +1,1 @@
2033 2043 +aa
2034 2044 diff -r 000000000000 -r f8035bb17114 f
2035 2045 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2036 2046 +++ b/f Thu Jan 01 00:00:00 1970 +0000
2037 2047 @@ -0,0 +1,1 @@
2038 2048 +f
2039 2049 # HG changeset patch
2040 2050 # User test
2041 2051 # Date 0 0
2042 2052 # Thu Jan 01 00:00:00 1970 +0000
2043 2053 # Node ID 216d4c92cf98ff2b4641d508b76b529f3d424c92
2044 2054 # Parent f8035bb17114da16215af3436ec5222428ace8ee
2045 2055 copy a b
2046 2056
2047 2057 diff -r f8035bb17114 -r 216d4c92cf98 b
2048 2058 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2049 2059 +++ b/b Thu Jan 01 00:00:00 1970 +0000
2050 2060 @@ -0,0 +1,1 @@
2051 2061 +a
2052 2062 diff -r f8035bb17114 -r 216d4c92cf98 g
2053 2063 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2054 2064 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2055 2065 @@ -0,0 +1,1 @@
2056 2066 +f
2057 2067 # HG changeset patch
2058 2068 # User test
2059 2069 # Date 0 0
2060 2070 # Thu Jan 01 00:00:00 1970 +0000
2061 2071 # Node ID bb573313a9e8349099b6ea2b2fb1fc7f424446f3
2062 2072 # Parent 216d4c92cf98ff2b4641d508b76b529f3d424c92
2063 2073 mv b dir/b
2064 2074
2065 2075 diff -r 216d4c92cf98 -r bb573313a9e8 b
2066 2076 --- a/b Thu Jan 01 00:00:00 1970 +0000
2067 2077 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2068 2078 @@ -1,1 +0,0 @@
2069 2079 -a
2070 2080 diff -r 216d4c92cf98 -r bb573313a9e8 dir/b
2071 2081 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2072 2082 +++ b/dir/b Thu Jan 01 00:00:00 1970 +0000
2073 2083 @@ -0,0 +1,1 @@
2074 2084 +a
2075 2085 diff -r 216d4c92cf98 -r bb573313a9e8 f
2076 2086 --- a/f Thu Jan 01 00:00:00 1970 +0000
2077 2087 +++ b/f Thu Jan 01 00:00:00 1970 +0000
2078 2088 @@ -1,1 +1,2 @@
2079 2089 f
2080 2090 +f
2081 2091 diff -r 216d4c92cf98 -r bb573313a9e8 g
2082 2092 --- a/g Thu Jan 01 00:00:00 1970 +0000
2083 2093 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2084 2094 @@ -1,1 +1,2 @@
2085 2095 f
2086 2096 +g
2087 2097 # HG changeset patch
2088 2098 # User test
2089 2099 # Date 0 0
2090 2100 # Thu Jan 01 00:00:00 1970 +0000
2091 2101 # Node ID 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2092 2102 # Parent bb573313a9e8349099b6ea2b2fb1fc7f424446f3
2093 2103 mv a b; add d
2094 2104
2095 2105 diff -r bb573313a9e8 -r 5918b8d165d1 a
2096 2106 --- a/a Thu Jan 01 00:00:00 1970 +0000
2097 2107 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2098 2108 @@ -1,1 +0,0 @@
2099 2109 -a
2100 2110 diff -r bb573313a9e8 -r 5918b8d165d1 b
2101 2111 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2102 2112 +++ b/b Thu Jan 01 00:00:00 1970 +0000
2103 2113 @@ -0,0 +1,1 @@
2104 2114 +a
2105 2115 diff -r bb573313a9e8 -r 5918b8d165d1 d
2106 2116 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2107 2117 +++ b/d Thu Jan 01 00:00:00 1970 +0000
2108 2118 @@ -0,0 +1,1 @@
2109 2119 +a
2110 2120 diff -r bb573313a9e8 -r 5918b8d165d1 g
2111 2121 --- a/g Thu Jan 01 00:00:00 1970 +0000
2112 2122 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2113 2123 @@ -1,2 +1,2 @@
2114 2124 f
2115 2125 -g
2116 2126 +f
2117 2127 # HG changeset patch
2118 2128 # User test
2119 2129 # Date 0 0
2120 2130 # Thu Jan 01 00:00:00 1970 +0000
2121 2131 # Node ID 17d952250a9d03cc3dc77b199ab60e959b9b0260
2122 2132 # Parent 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2123 2133 mv dir/b e
2124 2134
2125 2135 diff -r 5918b8d165d1 -r 17d952250a9d dir/b
2126 2136 --- a/dir/b Thu Jan 01 00:00:00 1970 +0000
2127 2137 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2128 2138 @@ -1,1 +0,0 @@
2129 2139 -a
2130 2140 diff -r 5918b8d165d1 -r 17d952250a9d e
2131 2141 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2132 2142 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2133 2143 @@ -0,0 +1,1 @@
2134 2144 +a
2135 2145 # HG changeset patch
2136 2146 # User test
2137 2147 # Date 0 0
2138 2148 # Thu Jan 01 00:00:00 1970 +0000
2139 2149 # Node ID 99b31f1c2782e2deb1723cef08930f70fc84b37b
2140 2150 # Parent 5918b8d165d1364e78a66d02e66caa0133c5d1ed
2141 2151 add another e
2142 2152
2143 2153 diff -r 5918b8d165d1 -r 99b31f1c2782 e
2144 2154 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2145 2155 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2146 2156 @@ -0,0 +1,1 @@
2147 2157 +ee
2148 2158 # HG changeset patch
2149 2159 # User test
2150 2160 # Date 0 0
2151 2161 # Thu Jan 01 00:00:00 1970 +0000
2152 2162 # Node ID fc281d8ff18d999ad6497b3d27390bcd695dcc73
2153 2163 # Parent 99b31f1c2782e2deb1723cef08930f70fc84b37b
2154 2164 # Parent 17d952250a9d03cc3dc77b199ab60e959b9b0260
2155 2165 merge 5 and 4
2156 2166
2157 2167 diff -r 99b31f1c2782 -r fc281d8ff18d dir/b
2158 2168 --- a/dir/b Thu Jan 01 00:00:00 1970 +0000
2159 2169 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
2160 2170 @@ -1,1 +0,0 @@
2161 2171 -a
2162 2172 diff -r 99b31f1c2782 -r fc281d8ff18d e
2163 2173 --- a/e Thu Jan 01 00:00:00 1970 +0000
2164 2174 +++ b/e Thu Jan 01 00:00:00 1970 +0000
2165 2175 @@ -1,1 +1,1 @@
2166 2176 -ee
2167 2177 +merge
2168 2178 # HG changeset patch
2169 2179 # User test
2170 2180 # Date 0 0
2171 2181 # Thu Jan 01 00:00:00 1970 +0000
2172 2182 # Node ID 02dbb8e276b8ab7abfd07cab50c901647e75c2dd
2173 2183 # Parent fc281d8ff18d999ad6497b3d27390bcd695dcc73
2174 2184 Added tag foo-bar for changeset fc281d8ff18d
2175 2185
2176 2186 diff -r fc281d8ff18d -r 02dbb8e276b8 .hgtags
2177 2187 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2178 2188 +++ b/.hgtags Thu Jan 01 00:00:00 1970 +0000
2179 2189 @@ -0,0 +1,1 @@
2180 2190 +fc281d8ff18d999ad6497b3d27390bcd695dcc73 foo-bar
2181 2191 # HG changeset patch
2182 2192 # User test
2183 2193 # Date 0 0
2184 2194 # Thu Jan 01 00:00:00 1970 +0000
2185 2195 # Node ID 24c2e826ddebf80f9dcd60b856bdb8e6715c5449
2186 2196 # Parent fc281d8ff18d999ad6497b3d27390bcd695dcc73
2187 2197 add g
2188 2198
2189 2199 diff -r fc281d8ff18d -r 24c2e826ddeb g
2190 2200 --- a/g Thu Jan 01 00:00:00 1970 +0000
2191 2201 +++ b/g Thu Jan 01 00:00:00 1970 +0000
2192 2202 @@ -1,2 +1,1 @@
2193 2203 -f
2194 2204 -f
2195 2205 +g
2196 2206 $ testlog --follow -r6 -r8 -r5 -r7 -r4
2197 2207 ['6', '8', '5', '7', '4']
2198 2208 (group
2199 2209 (func
2200 2210 ('symbol', 'descendants')
2201 2211 (func
2202 2212 ('symbol', 'rev')
2203 2213 ('symbol', '6'))))
2204 2214
2205 2215 Test --follow-first and forward --rev
2206 2216
2207 2217 $ testlog --follow-first -r6 -r8 -r5 -r7 -r4
2208 2218 ['6', '8', '5', '7', '4']
2209 2219 (group
2210 2220 (func
2211 2221 ('symbol', '_firstdescendants')
2212 2222 (func
2213 2223 ('symbol', 'rev')
2214 2224 ('symbol', '6'))))
2215 2225 --- log.nodes * (glob)
2216 2226 +++ glog.nodes * (glob)
2217 2227 @@ -1,3 +1,3 @@
2218 2228 -nodetag 6
2219 2229 nodetag 8
2220 2230 nodetag 7
2221 2231 +nodetag 6
2222 2232
2223 2233 Test --follow and backward --rev
2224 2234
2225 2235 $ testlog --follow -r6 -r5 -r7 -r8 -r4
2226 2236 ['6', '5', '7', '8', '4']
2227 2237 (group
2228 2238 (func
2229 2239 ('symbol', 'ancestors')
2230 2240 (func
2231 2241 ('symbol', 'rev')
2232 2242 ('symbol', '6'))))
2233 2243
2234 2244 Test --follow-first and backward --rev
2235 2245
2236 2246 $ testlog --follow-first -r6 -r5 -r7 -r8 -r4
2237 2247 ['6', '5', '7', '8', '4']
2238 2248 (group
2239 2249 (func
2240 2250 ('symbol', '_firstancestors')
2241 2251 (func
2242 2252 ('symbol', 'rev')
2243 2253 ('symbol', '6'))))
2244 2254
2245 2255 Test --follow with --rev of graphlog extension
2246 2256
2247 2257 $ hg --config extensions.graphlog= glog -qfr1
2248 2258 o 1:216d4c92cf98
2249 2259 |
2250 2260 o 0:f8035bb17114
2251 2261
2252 2262
2253 2263 Test subdir
2254 2264
2255 2265 $ hg up -q 3
2256 2266 $ cd dir
2257 2267 $ testlog .
2258 2268 []
2259 2269 (group
2260 2270 (func
2261 2271 ('symbol', '_matchfiles')
2262 2272 (list
2263 2273 (list
2264 2274 ('string', 'r:')
2265 2275 ('string', 'd:relpath'))
2266 2276 ('string', 'p:.'))))
2267 2277 $ testlog ../b
2268 2278 []
2269 2279 (group
2270 2280 (group
2271 2281 (func
2272 2282 ('symbol', 'filelog')
2273 2283 ('string', '../b'))))
2274 2284 $ testlog -f ../b
2275 2285 []
2276 2286 (group
2277 2287 (group
2278 2288 (func
2279 2289 ('symbol', 'follow')
2280 2290 ('string', 'b'))))
2281 2291 $ cd ..
2282 2292
2283 2293 Test --hidden
2284 2294 (enable obsolete)
2285 2295
2286 2296 $ cat >> $HGRCPATH << EOF
2287 2297 > [experimental]
2288 2298 > evolution=createmarkers
2289 2299 > EOF
2290 2300
2291 2301 $ hg debugobsolete `hg id --debug -i -r 8`
2292 2302 $ testlog
2293 2303 []
2294 2304 []
2295 2305 $ testlog --hidden
2296 2306 []
2297 2307 []
2298 2308 $ hg log -G --template '{rev} {desc}\n'
2299 2309 o 7 Added tag foo-bar for changeset fc281d8ff18d
2300 2310 |
2301 2311 o 6 merge 5 and 4
2302 2312 |\
2303 2313 | o 5 add another e
2304 2314 | |
2305 2315 o | 4 mv dir/b e
2306 2316 |/
2307 2317 @ 3 mv a b; add d
2308 2318 |
2309 2319 o 2 mv b dir/b
2310 2320 |
2311 2321 o 1 copy a b
2312 2322 |
2313 2323 o 0 add a
2314 2324
2315 2325
2316 2326 A template without trailing newline should do something sane
2317 2327
2318 2328 $ hg log -G -r ::2 --template '{rev} {desc}'
2319 2329 o 2 mv b dir/b
2320 2330 |
2321 2331 o 1 copy a b
2322 2332 |
2323 2333 o 0 add a
2324 2334
2325 2335
2326 2336 Extra newlines must be preserved
2327 2337
2328 2338 $ hg log -G -r ::2 --template '\n{rev} {desc}\n\n'
2329 2339 o
2330 2340 | 2 mv b dir/b
2331 2341 |
2332 2342 o
2333 2343 | 1 copy a b
2334 2344 |
2335 2345 o
2336 2346 0 add a
2337 2347
2338 2348
2339 2349 The almost-empty template should do something sane too ...
2340 2350
2341 2351 $ hg log -G -r ::2 --template '\n'
2342 2352 o
2343 2353 |
2344 2354 o
2345 2355 |
2346 2356 o
2347 2357
2348 2358
2349 2359 issue3772
2350 2360
2351 2361 $ hg log -G -r :null
2352 2362 o changeset: 0:f8035bb17114
2353 2363 | user: test
2354 2364 | date: Thu Jan 01 00:00:00 1970 +0000
2355 2365 | summary: add a
2356 2366 |
2357 2367 o changeset: -1:000000000000
2358 2368 user:
2359 2369 date: Thu Jan 01 00:00:00 1970 +0000
2360 2370
2361 2371 $ hg log -G -r null:null
2362 2372 o changeset: -1:000000000000
2363 2373 user:
2364 2374 date: Thu Jan 01 00:00:00 1970 +0000
2365 2375
2366 2376
2367 2377 should not draw line down to null due to the magic of fullreposet
2368 2378
2369 2379 $ hg log -G -r 'all()' | tail -6
2370 2380 |
2371 2381 o changeset: 0:f8035bb17114
2372 2382 user: test
2373 2383 date: Thu Jan 01 00:00:00 1970 +0000
2374 2384 summary: add a
2375 2385
2376 2386
2377 2387 $ hg log -G -r 'branch(default)' | tail -6
2378 2388 |
2379 2389 o changeset: 0:f8035bb17114
2380 2390 user: test
2381 2391 date: Thu Jan 01 00:00:00 1970 +0000
2382 2392 summary: add a
2383 2393
2384 2394
2385 2395 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now