mercurial/commands.py
changeset 1147 d32b91ebad5d
parent 1146 9061f79c6c6f
parent 1133 899b619a7eb2
child 1177 862f53c1d0f9
equal deleted inserted replaced
1146:9061f79c6c6f 1147:d32b91ebad5d
   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