68 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) |
68 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) |
69 for f in d: |
69 for f in d: |
70 to = repo.file(f).read(mmap[f]) |
70 to = repo.file(f).read(mmap[f]) |
71 tn = None |
71 tn = None |
72 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) |
72 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) |
73 |
73 |
|
74 def show_changeset(ui, repo, rev=0, changenode=None, filelog=None): |
|
75 """show a single changeset or file revision""" |
|
76 changelog = repo.changelog |
|
77 if filelog: |
|
78 log = filelog |
|
79 filerev = rev |
|
80 node = filenode = filelog.node(filerev) |
|
81 changerev = filelog.linkrev(filenode) |
|
82 changenode = changenode or changelog.node(changerev) |
|
83 else: |
|
84 changerev = rev |
|
85 log = changelog |
|
86 if changenode is None: |
|
87 changenode = changelog.node(changerev) |
|
88 elif not changerev: |
|
89 rev = changerev = changelog.rev(changenode) |
|
90 node = changenode |
|
91 |
|
92 if ui.quiet: |
|
93 ui.write("%d:%s\n" % (rev, hg.hex(node))) |
|
94 return |
|
95 |
|
96 changes = changelog.read(changenode) |
|
97 description = changes[4].strip().splitlines() |
|
98 |
|
99 parents = [(log.rev(parent), hg.hex(parent)) |
|
100 for parent in log.parents(node) |
|
101 if ui.debugflag or parent != hg.nullid] |
|
102 if not ui.debugflag and len(parents) == 1 and parents[0][0] == rev-1: |
|
103 parents = [] |
|
104 |
|
105 if filelog: |
|
106 ui.write("revision: %d:%s\n" % (filerev, hg.hex(filenode))) |
|
107 for parent in parents: |
|
108 ui.write("parent: %d:%s\n" % parent) |
|
109 ui.status("changeset: %d:%s\n" % (changerev, hg.hex(changenode))) |
|
110 else: |
|
111 ui.write("changeset: %d:%s\n" % (changerev, hg.hex(changenode))) |
|
112 for parent in parents: |
|
113 ui.write("parent: %d:%s\n" % parent) |
|
114 ui.note("manifest: %d:%s\n" % (repo.manifest.rev(changes[0]), |
|
115 hg.hex(changes[0]))) |
|
116 ui.status("user: %s\n" % changes[1]) |
|
117 ui.status("date: %s\n" % time.asctime( |
|
118 time.localtime(float(changes[2].split(' ')[0])))) |
|
119 ui.note("files: %s\n" % " ".join(changes[3])) |
|
120 if description: |
|
121 ui.status("description: %s\n" % description[0]) |
|
122 ui.note(''.join(["| %s\n" % line.rstrip() for line in description[1:]])) |
|
123 ui.status("\n") |
|
124 |
74 def help(ui, cmd=None): |
125 def help(ui, cmd=None): |
75 '''show help for a given command or all commands''' |
126 '''show help for a given command or all commands''' |
76 if cmd: |
127 if cmd: |
77 try: |
128 try: |
78 i = find(cmd) |
129 i = find(cmd) |
246 def forget(ui, repo, file, *files): |
297 def forget(ui, repo, file, *files): |
247 """don't add the specified files on the next commit""" |
298 """don't add the specified files on the next commit""" |
248 repo.forget(relpath(repo, (file,) + files)) |
299 repo.forget(relpath(repo, (file,) + files)) |
249 |
300 |
250 def heads(ui, repo): |
301 def heads(ui, repo): |
251 '''show current repository heads''' |
302 """show current repository heads""" |
252 for n in repo.changelog.heads(): |
303 for n in repo.changelog.heads(): |
253 i = repo.changelog.rev(n) |
304 show_changeset(ui, repo, changenode=n) |
254 changes = repo.changelog.read(n) |
|
255 (p1, p2) = repo.changelog.parents(n) |
|
256 (h, h1, h2) = map(hg.hex, (n, p1, p2)) |
|
257 (i1, i2) = map(repo.changelog.rev, (p1, p2)) |
|
258 print "rev: %4d:%s" % (i, h) |
|
259 print "parents: %4d:%s" % (i1, h1) |
|
260 if i2: print " %4d:%s" % (i2, h2) |
|
261 print "manifest: %4d:%s" % (repo.manifest.rev(changes[0]), |
|
262 hg.hex(changes[0])) |
|
263 print "user:", changes[1] |
|
264 print "date:", time.asctime( |
|
265 time.localtime(float(changes[2].split(' ')[0]))) |
|
266 if ui.verbose: print "files:", " ".join(changes[3]) |
|
267 print "description:" |
|
268 print changes[4] |
|
269 |
305 |
270 def history(ui, repo): |
306 def history(ui, repo): |
271 """show the changelog history""" |
307 """show the changelog history""" |
272 for i in range(repo.changelog.count() - 1, -1, -1): |
308 for i in range(repo.changelog.count() - 1, -1, -1): |
273 n = repo.changelog.node(i) |
309 show_changeset(ui, repo, rev=i) |
274 changes = repo.changelog.read(n) |
|
275 (p1, p2) = repo.changelog.parents(n) |
|
276 (h, h1, h2) = map(hg.hex, (n, p1, p2)) |
|
277 (i1, i2) = map(repo.changelog.rev, (p1, p2)) |
|
278 print "rev: %4d:%s" % (i, h) |
|
279 print "parents: %4d:%s" % (i1, h1) |
|
280 if i2: print " %4d:%s" % (i2, h2) |
|
281 print "manifest: %4d:%s" % (repo.manifest.rev(changes[0]), |
|
282 hg.hex(changes[0])) |
|
283 print "user:", changes[1] |
|
284 print "date:", time.asctime( |
|
285 time.localtime(float(changes[2].split(' ')[0]))) |
|
286 if ui.verbose: print "files:", " ".join(changes[3]) |
|
287 print "description:" |
|
288 print changes[4] |
|
289 |
310 |
290 def init(ui, source=None): |
311 def init(ui, source=None): |
291 """create a new repository or copy an existing one""" |
312 """create a new repository or copy an existing one""" |
292 |
313 |
293 if source: |
314 if source: |
314 other = hg.repository(ui, source) |
335 other = hg.repository(ui, source) |
315 cg = repo.getchangegroup(other) |
336 cg = repo.getchangegroup(other) |
316 repo.addchangegroup(cg) |
337 repo.addchangegroup(cg) |
317 else: |
338 else: |
318 hg.repository(ui, ".", create=1) |
339 hg.repository(ui, ".", create=1) |
319 |
340 |
320 def log(ui, repo, f): |
341 def log(ui, repo, f): |
321 """show the revision history of a single file""" |
342 """show the revision history of a single file""" |
322 f = relpath(repo, [f])[0] |
343 f = relpath(repo, [f])[0] |
323 |
344 |
324 r = repo.file(f) |
345 r = repo.file(f) |
325 for i in range(r.count() - 1, -1, -1): |
346 for i in range(r.count() - 1, -1, -1): |
326 n = r.node(i) |
347 show_changeset(ui, repo, filelog=r, rev=i) |
327 (p1, p2) = r.parents(n) |
|
328 (h, h1, h2) = map(hg.hex, (n, p1, p2)) |
|
329 (i1, i2) = map(r.rev, (p1, p2)) |
|
330 cr = r.linkrev(n) |
|
331 cn = hg.hex(repo.changelog.node(cr)) |
|
332 print "rev: %4d:%s" % (i, h) |
|
333 print "changeset: %4d:%s" % (cr, cn) |
|
334 print "parents: %4d:%s" % (i1, h1) |
|
335 if i2: print " %4d:%s" % (i2, h2) |
|
336 changes = repo.changelog.read(repo.changelog.node(cr)) |
|
337 print "user: %s" % changes[1] |
|
338 print "date: %s" % time.asctime( |
|
339 time.localtime(float(changes[2].split(' ')[0]))) |
|
340 print "description:" |
|
341 print changes[4].rstrip() |
|
342 print |
|
343 |
348 |
344 def manifest(ui, repo, rev = []): |
349 def manifest(ui, repo, rev = []): |
345 """output the latest or given revision of the project manifest""" |
350 """output the latest or given revision of the project manifest""" |
346 n = repo.manifest.tip() |
351 n = repo.manifest.tip() |
347 if rev: |
352 if rev: |