295 for f in d: |
295 for f in d: |
296 to = repo.file(f).read(mmap[f]) |
296 to = repo.file(f).read(mmap[f]) |
297 tn = None |
297 tn = None |
298 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r, text=text)) |
298 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r, text=text)) |
299 |
299 |
300 def trimuser(ui, rev, name, revcache): |
300 def trimuser(ui, name, rev, revcache): |
301 """trim the name of the user who committed a change""" |
301 """trim the name of the user who committed a change""" |
302 try: |
302 user = revcache.get(rev) |
303 return revcache[rev] |
303 if user is None: |
304 except KeyError: |
304 user = revcache[rev] = ui.shortuser(name) |
305 if not ui.verbose: |
305 return user |
306 f = name.find('@') |
|
307 if f >= 0: |
|
308 name = name[:f] |
|
309 f = name.find('<') |
|
310 if f >= 0: |
|
311 name = name[f+1:] |
|
312 revcache[rev] = name |
|
313 return name |
|
314 |
306 |
315 def show_changeset(ui, repo, rev=0, changenode=None, brinfo=None): |
307 def show_changeset(ui, repo, rev=0, changenode=None, brinfo=None): |
316 """show a single changeset or file revision""" |
308 """show a single changeset or file revision""" |
317 log = repo.changelog |
309 log = repo.changelog |
318 if changenode is None: |
310 if changenode is None: |
515 return short(repo.changelog.node(rev)) |
507 return short(repo.changelog.node(rev)) |
516 |
508 |
517 ucache = {} |
509 ucache = {} |
518 def getname(rev): |
510 def getname(rev): |
519 cl = repo.changelog.read(repo.changelog.node(rev)) |
511 cl = repo.changelog.read(repo.changelog.node(rev)) |
520 return trimuser(ui, rev, cl[1], ucache) |
512 return trimuser(ui, cl[1], rev, ucache) |
521 |
513 |
522 if not pats: |
514 if not pats: |
523 raise util.Abort('at least one file name or pattern required') |
515 raise util.Abort('at least one file name or pattern required') |
524 |
516 |
525 opmap = [['user', getname], ['number', str], ['changeset', getnode]] |
517 opmap = [['user', getname], ['number', str], ['changeset', getnode]] |
628 |
620 |
629 else: |
621 else: |
630 repo = hg.repository(ui, dest, create=1) |
622 repo = hg.repository(ui, dest, create=1) |
631 repo.pull(other) |
623 repo.pull(other) |
632 |
624 |
633 f = repo.opener("hgrc", "w") |
625 f = repo.opener("hgrc", "a") |
634 f.write("[paths]\n") |
626 f.write("\n[paths]\n") |
635 f.write("default = %s\n" % abspath) |
627 f.write("default = %s\n" % abspath) |
636 |
628 |
637 if not opts['noupdate']: |
629 if not opts['noupdate']: |
638 update(ui, repo) |
630 update(ui, repo) |
639 |
631 |
724 for file_ in keys: |
716 for file_ in keys: |
725 ui.write("%c %3o %10d %s %s\n" |
717 ui.write("%c %3o %10d %s %s\n" |
726 % (dc[file_][0], dc[file_][1] & 0777, dc[file_][2], |
718 % (dc[file_][0], dc[file_][1] & 0777, dc[file_][2], |
727 time.strftime("%x %X", |
719 time.strftime("%x %X", |
728 time.localtime(dc[file_][3])), file_)) |
720 time.localtime(dc[file_][3])), file_)) |
729 ui.write("\n") |
|
730 for f in repo.dirstate.copies: |
721 for f in repo.dirstate.copies: |
731 ui.write("%s -> %s\n" % (repo.dirstate.copies[f], f)) |
722 ui.write("copy: %s -> %s\n" % (repo.dirstate.copies[f], f)) |
732 |
723 |
733 def debugdata(ui, file_, rev): |
724 def debugdata(ui, file_, rev): |
734 """dump the contents of an data file revision""" |
725 """dump the contents of an data file revision""" |
735 r = revlog.revlog(file, file_[:-2] + ".i", file_) |
726 r = revlog.revlog(file, file_[:-2] + ".i", file_) |
736 ui.write(r.revision(r.lookup(rev))) |
727 ui.write(r.revision(r.lookup(rev))) |
920 change = ((l in states) and '-') or '+' |
911 change = ((l in states) and '-') or '+' |
921 r = prev[fn] |
912 r = prev[fn] |
922 cols = [fn, str(rev)] |
913 cols = [fn, str(rev)] |
923 if opts['line_number']: cols.append(str(l.linenum)) |
914 if opts['line_number']: cols.append(str(l.linenum)) |
924 if opts['every_match']: cols.append(change) |
915 if opts['every_match']: cols.append(change) |
925 if opts['user']: cols.append(trimuser(ui, rev, getchange(rev)[1], |
916 if opts['user']: cols.append(trimuser(ui, getchange(rev)[1], rev, |
926 ucache)) |
917 ucache)) |
927 if opts['files_with_matches']: |
918 if opts['files_with_matches']: |
928 c = (fn, rev) |
919 c = (fn, rev) |
929 if c in filerevmatches: continue |
920 if c in filerevmatches: continue |
930 filerevmatches[c] = 1 |
921 filerevmatches[c] = 1 |