Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/commands.py @ 725:c6b912f8b5b2
Merge with Matt's tip.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Tue, 19 Jul 2005 07:00:03 -0800 |
parents | 1c0c413cccdd 938dd667ca21 |
children | 809a870a0e73 |
comparison
equal
deleted
inserted
replaced
724:1c0c413cccdd | 725:c6b912f8b5b2 |
---|---|
350 else: | 350 else: |
351 (c, a, d, u) = repo.changes() | 351 (c, a, d, u) = repo.changes() |
352 repo.add(u) | 352 repo.add(u) |
353 repo.remove(d) | 353 repo.remove(d) |
354 | 354 |
355 def annotate(u, repo, file1, *files, **ops): | 355 def annotate(ui, repo, file1, *files, **opts): |
356 """show changeset information per file line""" | 356 """show changeset information per file line""" |
357 def getnode(rev): | 357 def getnode(rev): |
358 return hg.short(repo.changelog.node(rev)) | 358 return hg.short(repo.changelog.node(rev)) |
359 | 359 |
360 def getname(rev): | 360 def getname(rev): |
372 bcache[rev] = name | 372 bcache[rev] = name |
373 return name | 373 return name |
374 | 374 |
375 bcache = {} | 375 bcache = {} |
376 opmap = [['user', getname], ['number', str], ['changeset', getnode]] | 376 opmap = [['user', getname], ['number', str], ['changeset', getnode]] |
377 if not ops['user'] and not ops['changeset']: | 377 if not opts['user'] and not opts['changeset']: |
378 ops['number'] = 1 | 378 opts['number'] = 1 |
379 | 379 |
380 node = repo.dirstate.parents()[0] | 380 if opts['rev']: |
381 if ops['revision']: | 381 node = repo.changelog.lookup(opts['rev']) |
382 node = repo.changelog.lookup(ops['revision']) | 382 else: |
383 node = repo.dirstate.parents()[0] | |
383 change = repo.changelog.read(node) | 384 change = repo.changelog.read(node) |
384 mmap = repo.manifest.read(change[0]) | 385 mmap = repo.manifest.read(change[0]) |
385 for f in relpath(repo, (file1,) + files): | 386 for f in relpath(repo, (file1,) + files): |
386 lines = repo.file(f).annotate(mmap[f]) | 387 lines = repo.file(f).annotate(mmap[f]) |
387 pieces = [] | 388 pieces = [] |
388 | 389 |
389 for o, f in opmap: | 390 for o, f in opmap: |
390 if ops[o]: | 391 if opts[o]: |
391 l = [f(n) for n, dummy in lines] | 392 l = [f(n) for n, dummy in lines] |
392 m = max(map(len, l)) | 393 m = max(map(len, l)) |
393 pieces.append(["%*s" % (m, x) for x in l]) | 394 pieces.append(["%*s" % (m, x) for x in l]) |
394 | 395 |
395 for p, l in zip(zip(*pieces), lines): | 396 for p, l in zip(zip(*pieces), lines): |
396 u.write(" ".join(p) + ": " + l[1]) | 397 ui.write("%s: %s" % (" ".join(p), l[1])) |
397 | 398 |
398 def cat(ui, repo, file1, rev=None, **opts): | 399 def cat(ui, repo, file1, rev=None, **opts): |
399 """output the latest or given revision of a file""" | 400 """output the latest or given revision of a file""" |
400 r = repo.file(relpath(repo, [file1])[0]) | 401 r = repo.file(relpath(repo, [file1])[0]) |
401 if rev: | 402 if rev: |
574 if opts['output'] and opts['output'] != '-': | 575 if opts['output'] and opts['output'] != '-': |
575 try: | 576 try: |
576 outname = make_filename(repo, repo.changelog, opts['output'], | 577 outname = make_filename(repo, repo.changelog, opts['output'], |
577 node=node, total=total, seqno=seqno, | 578 node=node, total=total, seqno=seqno, |
578 revwidth=revwidth) | 579 revwidth=revwidth) |
580 ui.note("Exporting patch to '%s'.\n" % outname) | |
579 fp = open(outname, 'wb') | 581 fp = open(outname, 'wb') |
580 except KeyError, inst: | 582 except KeyError, inst: |
581 ui.warn("error: invalid format spec '%%%s' in output file name\n" % | 583 ui.warn("error: invalid format spec '%%%s' in output file name\n" % |
582 inst.args[0]) | 584 inst.args[0]) |
583 sys.exit(1) | 585 sys.exit(1) |
772 files.sort() | 774 files.sort() |
773 | 775 |
774 for f in files: | 776 for f in files: |
775 ui.write("%40s %3s %s\n" % (hg.hex(m[f]), mf[f] and "755" or "644", f)) | 777 ui.write("%40s %3s %s\n" % (hg.hex(m[f]), mf[f] and "755" or "644", f)) |
776 | 778 |
777 def parents(ui, repo, node=None): | 779 def parents(ui, repo, rev=None): |
778 '''show the parents of the current working dir''' | 780 """show the parents of the working dir or revision""" |
779 if node: | 781 if rev: |
780 p = repo.changelog.parents(repo.lookup(hg.bin(node))) | 782 p = repo.changelog.parents(repo.lookup(rev)) |
781 else: | 783 else: |
782 p = repo.dirstate.parents() | 784 p = repo.dirstate.parents() |
783 | 785 |
784 for n in p: | 786 for n in p: |
785 if n != hg.nullid: | 787 if n != hg.nullid: |
1030 if ".hgtags" in x: | 1032 if ".hgtags" in x: |
1031 ui.warn("abort: working copy of .hgtags is changed!\n") | 1033 ui.warn("abort: working copy of .hgtags is changed!\n") |
1032 ui.status("(please commit .hgtags manually)\n") | 1034 ui.status("(please commit .hgtags manually)\n") |
1033 return -1 | 1035 return -1 |
1034 | 1036 |
1035 add = not os.path.exists(repo.wjoin(".hgtags")) | |
1036 repo.wfile(".hgtags", "ab").write("%s %s\n" % (r, name)) | 1037 repo.wfile(".hgtags", "ab").write("%s %s\n" % (r, name)) |
1037 if add: | 1038 if repo.dirstate.state(".hgtags") == '?': |
1038 repo.add([".hgtags"]) | 1039 repo.add([".hgtags"]) |
1039 | 1040 |
1040 if not opts['text']: | 1041 if not opts['text']: |
1041 opts['text'] = "Added tag %s for changeset %s" % (name, r) | 1042 opts['text'] = "Added tag %s for changeset %s" % (name, r) |
1042 | 1043 |
1098 | 1099 |
1099 table = { | 1100 table = { |
1100 "^add": (add, | 1101 "^add": (add, |
1101 [('I', 'include', [], 'include path in search'), | 1102 [('I', 'include', [], 'include path in search'), |
1102 ('X', 'exclude', [], 'exclude path from search')], | 1103 ('X', 'exclude', [], 'exclude path from search')], |
1103 "hg add [options] [files]"), | 1104 "hg add [OPTIONS] [FILES]"), |
1104 "addremove": (addremove, [], "hg addremove [files]"), | 1105 "addremove": (addremove, [], "hg addremove [FILES]"), |
1105 "^annotate": | 1106 "^annotate": |
1106 (annotate, | 1107 (annotate, |
1107 [('r', 'revision', '', 'revision'), | 1108 [('r', 'rev', '', 'revision'), |
1108 ('u', 'user', None, 'show user'), | 1109 ('u', 'user', None, 'show user'), |
1109 ('n', 'number', None, 'show revision number'), | 1110 ('n', 'number', None, 'show revision number'), |
1110 ('c', 'changeset', None, 'show changeset')], | 1111 ('c', 'changeset', None, 'show changeset')], |
1111 'hg annotate [-u] [-c] [-n] [-r id] [files]'), | 1112 'hg annotate [-r REV] [-u] [-n] [-c] FILE...'), |
1112 "cat": | 1113 "cat": |
1113 (cat, | 1114 (cat, |
1114 [('o', 'output', "", 'output to file')], | 1115 [('o', 'output', "", 'output to file')], |
1115 'hg cat [-o outfile] <file> [rev]'), | 1116 'hg cat [-o OUTFILE] FILE [REV]'), |
1116 "^clone": | 1117 "^clone": |
1117 (clone, | 1118 (clone, |
1118 [('U', 'noupdate', None, 'skip update after cloning')], | 1119 [('U', 'noupdate', None, 'skip update after cloning')], |
1119 'hg clone [options] <source> [dest]'), | 1120 'hg clone [-U] SOURCE [DEST]'), |
1120 "^commit|ci": | 1121 "^commit|ci": |
1121 (commit, | 1122 (commit, |
1122 [('t', 'text', "", 'commit text'), | 1123 [('A', 'addremove', None, 'run add/remove during commit'), |
1123 ('A', 'addremove', None, 'run add/remove during commit'), | 1124 ('t', 'text', "", 'commit text'), |
1124 ('l', 'logfile', "", 'commit text file'), | 1125 ('l', 'logfile', "", 'commit text file'), |
1125 ('d', 'date', "", 'date code'), | 1126 ('d', 'date', "", 'date code'), |
1126 ('u', 'user', "", 'user')], | 1127 ('u', 'user', "", 'user')], |
1127 'hg commit [files]'), | 1128 'hg commit [OPTION]... [FILE]...'), |
1128 "copy": (copy, [], 'hg copy <source> <dest>'), | 1129 "copy": (copy, [], 'hg copy SOURCE DEST'), |
1129 "debugcheckstate": (debugcheckstate, [], 'debugcheckstate'), | 1130 "debugcheckstate": (debugcheckstate, [], 'debugcheckstate'), |
1130 "debugstate": (debugstate, [], 'debugstate'), | 1131 "debugstate": (debugstate, [], 'debugstate'), |
1131 "debugindex": (debugindex, [], 'debugindex <file>'), | 1132 "debugindex": (debugindex, [], 'debugindex FILE'), |
1132 "debugindexdot": (debugindexdot, [], 'debugindexdot <file>'), | 1133 "debugindexdot": (debugindexdot, [], 'debugindexdot FILE'), |
1133 "^diff": | 1134 "^diff": |
1134 (diff, | 1135 (diff, |
1135 [('r', 'rev', [], 'revision')], | 1136 [('r', 'rev', [], 'revision')], |
1136 'hg diff [-r A] [-r B] [files]'), | 1137 'hg diff [-r REV1 [-r REV2]] [FILE]...'), |
1137 "^export": | 1138 "^export": |
1138 (export, | 1139 (export, |
1139 [('o', 'output', "", 'output to file')], | 1140 [('o', 'output', "", 'output to file')], |
1140 "hg export [-o file] <changeset> ..."), | 1141 "hg export [-o OUTFILE] REV..."), |
1141 "forget": (forget, [], "hg forget [files]"), | 1142 "forget": (forget, [], "hg forget FILE..."), |
1142 "heads": (heads, [], 'hg heads'), | 1143 "heads": (heads, [], 'hg heads'), |
1143 "help": (help_, [], 'hg help [command]'), | 1144 "help": (help_, [], 'hg help [COMMAND]'), |
1144 "identify|id": (identify, [], 'hg identify'), | 1145 "identify|id": (identify, [], 'hg identify'), |
1145 "import|patch": | 1146 "import|patch": |
1146 (import_, | 1147 (import_, |
1147 [('p', 'strip', 1, 'path strip'), | 1148 [('p', 'strip', 1, 'path strip'), |
1148 ('b', 'base', "", 'base path')], | 1149 ('b', 'base', "", 'base path')], |
1149 "hg import [options] <patches>"), | 1150 "hg import [-p NUM] [-b BASE] PATCH..."), |
1150 "^init": (init, [], 'hg init'), | 1151 "^init": (init, [], 'hg init'), |
1151 "locate": | 1152 "locate": |
1152 (locate, | 1153 (locate, |
1153 [('0', 'print0', None, 'end records with NUL'), | 1154 [('0', 'print0', None, 'end records with NUL'), |
1154 ('f', 'fullpath', None, 'print complete paths'), | 1155 ('f', 'fullpath', None, 'print complete paths'), |
1155 ('I', 'include', [], 'include path in search'), | 1156 ('I', 'include', [], 'include path in search'), |
1156 ('r', 'rev', '', 'revision'), | 1157 ('r', 'rev', '', 'revision'), |
1157 ('X', 'exclude', [], 'exclude path from search')], | 1158 ('X', 'exclude', [], 'exclude path from search')], |
1158 'hg locate [options] [files]'), | 1159 'hg locate [OPTION]... [PATTERN]...'), |
1159 "^log|history": | 1160 "^log|history": |
1160 (log, | 1161 (log, |
1161 [('r', 'rev', [], 'revision'), | 1162 [('r', 'rev', [], 'revision'), |
1162 ('p', 'patch', None, 'show patch')], | 1163 ('p', 'patch', None, 'show patch')], |
1163 'hg log [-r A] [-r B] [-p] [file]'), | 1164 'hg log [-r REV1 [-r REV2]] [-p] [FILE]'), |
1164 "manifest": (manifest, [], 'hg manifest [rev]'), | 1165 "manifest": (manifest, [], 'hg manifest [REV]'), |
1165 "parents": (parents, [], 'hg parents [node]'), | 1166 "parents": (parents, [], 'hg parents [REV]'), |
1166 "^pull": | 1167 "^pull": |
1167 (pull, | 1168 (pull, |
1168 [('u', 'update', None, 'update working directory')], | 1169 [('u', 'update', None, 'update working directory')], |
1169 'hg pull [options] [source]'), | 1170 'hg pull [-u] [SOURCE]'), |
1170 "^push": (push, [], 'hg push <destination>'), | 1171 "^push": (push, [], 'hg push [DEST]'), |
1171 "rawcommit": | 1172 "rawcommit": |
1172 (rawcommit, | 1173 (rawcommit, |
1173 [('p', 'parent', [], 'parent'), | 1174 [('p', 'parent', [], 'parent'), |
1174 ('d', 'date', "", 'date code'), | 1175 ('d', 'date', "", 'date code'), |
1175 ('u', 'user', "", 'user'), | 1176 ('u', 'user', "", 'user'), |
1176 ('F', 'files', "", 'file list'), | 1177 ('F', 'files', "", 'file list'), |
1177 ('t', 'text', "", 'commit text'), | 1178 ('t', 'text', "", 'commit text'), |
1178 ('l', 'logfile', "", 'commit text file')], | 1179 ('l', 'logfile', "", 'commit text file')], |
1179 'hg rawcommit [options] [files]'), | 1180 'hg rawcommit [OPTION]... [FILE]...'), |
1180 "recover": (recover, [], "hg recover"), | 1181 "recover": (recover, [], "hg recover"), |
1181 "^remove|rm": (remove, [], "hg remove [files]"), | 1182 "^remove|rm": (remove, [], "hg remove FILE..."), |
1182 "^revert": | 1183 "^revert": |
1183 (revert, | 1184 (revert, |
1184 [("n", "nonrecursive", None, "don't recurse into subdirs"), | 1185 [("n", "nonrecursive", None, "don't recurse into subdirs"), |
1185 ("r", "rev", "", "revision")], | 1186 ("r", "rev", "", "revision")], |
1186 "hg revert [files|dirs]"), | 1187 "hg revert [-n] [-r REV] NAME..."), |
1187 "root": (root, [], "hg root"), | 1188 "root": (root, [], "hg root"), |
1188 "^serve": | 1189 "^serve": |
1189 (serve, | 1190 (serve, |
1190 [('A', 'accesslog', '', 'access log file'), | 1191 [('A', 'accesslog', '', 'access log file'), |
1191 ('E', 'errorlog', '', 'error log file'), | 1192 ('E', 'errorlog', '', 'error log file'), |
1192 ('p', 'port', 8000, 'listen port'), | 1193 ('p', 'port', 8000, 'listen port'), |
1193 ('a', 'address', '', 'interface address'), | 1194 ('a', 'address', '', 'interface address'), |
1194 ('n', 'name', os.getcwd(), 'repository name'), | 1195 ('n', 'name', os.getcwd(), 'repository name'), |
1195 ('', 'stdio', None, 'for remote clients'), | 1196 ('', 'stdio', None, 'for remote clients'), |
1196 ('t', 'templates', "", 'template map')], | 1197 ('t', 'templates', "", 'template map')], |
1197 "hg serve [options]"), | 1198 "hg serve [OPTION]..."), |
1198 "^status": (status, [], 'hg status'), | 1199 "^status": (status, [], 'hg status'), |
1199 "tag": | 1200 "tag": |
1200 (tag, | 1201 (tag, |
1201 [('l', 'local', None, 'make the tag local'), | 1202 [('l', 'local', None, 'make the tag local'), |
1202 ('t', 'text', "", 'commit text'), | 1203 ('t', 'text', "", 'commit text'), |
1203 ('d', 'date', "", 'date code'), | 1204 ('d', 'date', "", 'date code'), |
1204 ('u', 'user', "", 'user')], | 1205 ('u', 'user', "", 'user')], |
1205 'hg tag [options] <name> [rev]'), | 1206 'hg tag [OPTION]... NAME [REV]'), |
1206 "tags": (tags, [], 'hg tags'), | 1207 "tags": (tags, [], 'hg tags'), |
1207 "tip": (tip, [], 'hg tip'), | 1208 "tip": (tip, [], 'hg tip'), |
1208 "undo": (undo, [], 'hg undo'), | 1209 "undo": (undo, [], 'hg undo'), |
1209 "^update|up|checkout|co": | 1210 "^update|up|checkout|co": |
1210 (update, | 1211 (update, |
1211 [('m', 'merge', None, 'allow merging of conflicts'), | 1212 [('m', 'merge', None, 'allow merging of conflicts'), |
1212 ('C', 'clean', None, 'overwrite locally modified files')], | 1213 ('C', 'clean', None, 'overwrite locally modified files')], |
1213 'hg update [options] [node]'), | 1214 'hg update [-m] [-C] [REV]'), |
1214 "verify": (verify, [], 'hg verify'), | 1215 "verify": (verify, [], 'hg verify'), |
1215 "version": (show_version, [], 'hg version'), | 1216 "version": (show_version, [], 'hg version'), |
1216 } | 1217 } |
1217 | 1218 |
1218 globalopts = [('v', 'verbose', None, 'verbose'), | 1219 globalopts = [('v', 'verbose', None, 'verbose'), |