Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/commands.py @ 1030:28e2f13ca7c4
Merge with MPM.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Tue, 23 Aug 2005 21:57:22 -0700 |
parents | 25e7ea0f2cff 836667830fee |
children | 503aaf19a040 |
comparison
equal
deleted
inserted
replaced
1029:b5f0ccad8917 | 1030:28e2f13ca7c4 |
---|---|
138 if hasattr(pat, 'read') and 'r' in mode: | 138 if hasattr(pat, 'read') and 'r' in mode: |
139 return pat | 139 return pat |
140 return open(make_filename(repo, r, pat, node, total, seqno, revwidth), | 140 return open(make_filename(repo, r, pat, node, total, seqno, revwidth), |
141 mode) | 141 mode) |
142 | 142 |
143 def dodiff(fp, ui, repo, files=None, node1=None, node2=None, match=util.always, changes=None): | 143 def dodiff(fp, ui, repo, node1, node2, files=None, match=util.always, |
144 changes=None, text=False): | |
144 def date(c): | 145 def date(c): |
145 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) | 146 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) |
146 | 147 |
147 if not changes: | 148 if not changes: |
148 (c, a, d, u) = repo.changes(node1, node2, files, match = match) | 149 (c, a, d, u) = repo.changes(node1, node2, files, match = match) |
180 for f in c: | 181 for f in c: |
181 to = None | 182 to = None |
182 if f in mmap: | 183 if f in mmap: |
183 to = repo.file(f).read(mmap[f]) | 184 to = repo.file(f).read(mmap[f]) |
184 tn = read(f) | 185 tn = read(f) |
185 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r)) | 186 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r, text=text)) |
186 for f in a: | 187 for f in a: |
187 to = None | 188 to = None |
188 tn = read(f) | 189 tn = read(f) |
189 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r)) | 190 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r, text=text)) |
190 for f in d: | 191 for f in d: |
191 to = repo.file(f).read(mmap[f]) | 192 to = repo.file(f).read(mmap[f]) |
192 tn = None | 193 tn = None |
193 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r)) | 194 fp.write(mdiff.unidiff(to, date1, tn, date2, f, r, text=text)) |
194 | 195 |
195 def show_changeset(ui, repo, rev=0, changenode=None, filelog=None, brinfo=None): | 196 def show_changeset(ui, repo, rev=0, changenode=None, filelog=None, brinfo=None): |
196 """show a single changeset or file revision""" | 197 """show a single changeset or file revision""" |
197 changelog = repo.changelog | 198 changelog = repo.changelog |
198 if filelog: | 199 if filelog: |
430 node = repo.changelog.lookup(opts['rev']) | 431 node = repo.changelog.lookup(opts['rev']) |
431 else: | 432 else: |
432 node = repo.dirstate.parents()[0] | 433 node = repo.dirstate.parents()[0] |
433 change = repo.changelog.read(node) | 434 change = repo.changelog.read(node) |
434 mmap = repo.manifest.read(change[0]) | 435 mmap = repo.manifest.read(change[0]) |
436 | |
435 for src, abs, rel, exact in walk(repo, pats, opts): | 437 for src, abs, rel, exact in walk(repo, pats, opts): |
436 if abs not in mmap: | 438 if abs not in mmap: |
437 ui.warn("warning: %s is not in the repository!\n" % rel) | 439 ui.warn("warning: %s is not in the repository!\n" % rel) |
438 continue | 440 continue |
439 | 441 |
440 lines = repo.file(abs).annotate(mmap[abs]) | 442 f = repo.file(abs) |
443 if not opts['text'] and util.binary(f.read(mmap[abs])): | |
444 ui.write("%s: binary file\n" % rel) | |
445 continue | |
446 | |
447 lines = f.annotate(mmap[abs]) | |
441 pieces = [] | 448 pieces = [] |
442 | 449 |
443 for o, f in opmap: | 450 for o, f in opmap: |
444 if opts[o]: | 451 if opts[o]: |
445 l = [f(n) for n, dummy in lines] | 452 l = [f(n) for n, dummy in lines] |
648 for src, abs, rel, exact in items: | 655 for src, abs, rel, exact in items: |
649 print fmt % (src, abs, rel, exactly[exact]) | 656 print fmt % (src, abs, rel, exactly[exact]) |
650 | 657 |
651 def diff(ui, repo, *pats, **opts): | 658 def diff(ui, repo, *pats, **opts): |
652 """diff working directory (or selected files)""" | 659 """diff working directory (or selected files)""" |
653 revs = [] | 660 node1, node2 = None, None |
654 if opts['rev']: | 661 revs = [repo.lookup(x) for x in opts['rev']] |
655 revs = map(lambda x: repo.lookup(x), opts['rev']) | 662 |
656 | 663 if len(revs) > 0: |
664 node1 = revs[0] | |
665 if len(revs) > 1: | |
666 node2 = revs[1] | |
657 if len(revs) > 2: | 667 if len(revs) > 2: |
658 raise util.Abort("too many revisions to diff") | 668 raise util.Abort("too many revisions to diff") |
659 | 669 |
660 files = [] | 670 files = [] |
661 match = util.always | 671 match = util.always |
662 if pats: | 672 if pats: |
663 roots, match, results = makewalk(repo, pats, opts) | 673 roots, match, results = makewalk(repo, pats, opts) |
664 for src, abs, rel, exact in results: | 674 for src, abs, rel, exact in results: |
665 files.append(abs) | 675 files.append(abs) |
666 dodiff(sys.stdout, ui, repo, files, *revs, **{'match': match}) | 676 |
677 dodiff(sys.stdout, ui, repo, node1, node2, files, match=match, | |
678 text=opts['text']) | |
667 | 679 |
668 def doexport(ui, repo, changeset, seqno, total, revwidth, opts): | 680 def doexport(ui, repo, changeset, seqno, total, revwidth, opts): |
669 node = repo.lookup(changeset) | 681 node = repo.lookup(changeset) |
670 prev, other = repo.changelog.parents(node) | 682 prev, other = repo.changelog.parents(node) |
671 change = repo.changelog.read(node) | 683 change = repo.changelog.read(node) |
683 if other != hg.nullid: | 695 if other != hg.nullid: |
684 fp.write("# Parent %s\n" % hg.hex(other)) | 696 fp.write("# Parent %s\n" % hg.hex(other)) |
685 fp.write(change[4].rstrip()) | 697 fp.write(change[4].rstrip()) |
686 fp.write("\n\n") | 698 fp.write("\n\n") |
687 | 699 |
688 dodiff(fp, ui, repo, None, prev, node) | 700 dodiff(fp, ui, repo, prev, node, text=opts['text']) |
689 if fp != sys.stdout: fp.close() | 701 if fp != sys.stdout: fp.close() |
690 | 702 |
691 def export(ui, repo, *changesets, **opts): | 703 def export(ui, repo, *changesets, **opts): |
692 """dump the header and diffs for one or more changesets""" | 704 """dump the header and diffs for one or more changesets""" |
693 if not changesets: | 705 if not changesets: |
866 if filelog: | 878 if filelog: |
867 filenode = filelog.node(i) | 879 filenode = filelog.node(i) |
868 i = filelog.linkrev(filenode) | 880 i = filelog.linkrev(filenode) |
869 changenode = repo.changelog.node(i) | 881 changenode = repo.changelog.node(i) |
870 prev, other = repo.changelog.parents(changenode) | 882 prev, other = repo.changelog.parents(changenode) |
871 dodiff(sys.stdout, ui, repo, files, prev, changenode) | 883 dodiff(sys.stdout, ui, repo, prev, changenode, files) |
872 ui.write("\n\n") | 884 ui.write("\n\n") |
873 | 885 |
874 def manifest(ui, repo, rev=None): | 886 def manifest(ui, repo, rev=None): |
875 """output the latest or given revision of the project manifest""" | 887 """output the latest or given revision of the project manifest""" |
876 if rev: | 888 if rev: |
1284 ('X', 'exclude', [], 'exclude path from search')], | 1296 ('X', 'exclude', [], 'exclude path from search')], |
1285 "hg addremove [OPTION]... [FILE]..."), | 1297 "hg addremove [OPTION]... [FILE]..."), |
1286 "^annotate": | 1298 "^annotate": |
1287 (annotate, | 1299 (annotate, |
1288 [('r', 'rev', '', 'revision'), | 1300 [('r', 'rev', '', 'revision'), |
1301 ('a', 'text', None, 'treat all files as text'), | |
1289 ('u', 'user', None, 'show user'), | 1302 ('u', 'user', None, 'show user'), |
1290 ('n', 'number', None, 'show revision number'), | 1303 ('n', 'number', None, 'show revision number'), |
1291 ('c', 'changeset', None, 'show changeset'), | 1304 ('c', 'changeset', None, 'show changeset'), |
1292 ('I', 'include', [], 'include path in search'), | 1305 ('I', 'include', [], 'include path in search'), |
1293 ('X', 'exclude', [], 'exclude path from search')], | 1306 ('X', 'exclude', [], 'exclude path from search')], |
1325 ('X', 'exclude', [], 'exclude path from search')], | 1338 ('X', 'exclude', [], 'exclude path from search')], |
1326 'debugwalk [OPTION]... [FILE]...'), | 1339 'debugwalk [OPTION]... [FILE]...'), |
1327 "^diff": | 1340 "^diff": |
1328 (diff, | 1341 (diff, |
1329 [('r', 'rev', [], 'revision'), | 1342 [('r', 'rev', [], 'revision'), |
1343 ('a', 'text', None, 'treat all files as text'), | |
1330 ('I', 'include', [], 'include path in search'), | 1344 ('I', 'include', [], 'include path in search'), |
1331 ('X', 'exclude', [], 'exclude path from search')], | 1345 ('X', 'exclude', [], 'exclude path from search')], |
1332 'hg diff [-I] [-X] [-r REV1 [-r REV2]] [FILE]...'), | 1346 'hg diff [-I] [-X] [-r REV1 [-r REV2]] [FILE]...'), |
1333 "^export": | 1347 "^export": |
1334 (export, | 1348 (export, |
1335 [('o', 'output', "", 'output to file')], | 1349 [('o', 'output', "", 'output to file'), |
1350 ('a', 'text', None, 'treat all files as text')], | |
1336 "hg export [-o OUTFILE] REV..."), | 1351 "hg export [-o OUTFILE] REV..."), |
1337 "forget": | 1352 "forget": |
1338 (forget, | 1353 (forget, |
1339 [('I', 'include', [], 'include path in search'), | 1354 [('I', 'include', [], 'include path in search'), |
1340 ('X', 'exclude', [], 'exclude path from search')], | 1355 ('X', 'exclude', [], 'exclude path from search')], |