257 r = repo.file(relpath(repo, [file])[0]) |
257 r = repo.file(relpath(repo, [file])[0]) |
258 n = r.tip() |
258 n = r.tip() |
259 if rev: n = r.lookup(rev) |
259 if rev: n = r.lookup(rev) |
260 sys.stdout.write(r.read(n)) |
260 sys.stdout.write(r.read(n)) |
261 |
261 |
|
262 def clone(ui, source, dest = None, **opts): |
|
263 """make a copy of an existing repository""" |
|
264 paths = {} |
|
265 for name, path in ui.configitems("paths"): |
|
266 paths[name] = path |
|
267 |
|
268 if source in paths: source = paths[source] |
|
269 |
|
270 if dest is None: |
|
271 dest = os.getcwd() |
|
272 elif not os.path.exists(dest): |
|
273 os.makedirs(dest) |
|
274 |
|
275 link = 0 |
|
276 if not source.startswith("http://"): |
|
277 source = os.path.realpath(source) |
|
278 d1 = os.stat(dest).st_dev |
|
279 d2 = os.stat(source).st_dev |
|
280 if d1 == d2: link = 1 |
|
281 |
|
282 os.chdir(dest) |
|
283 |
|
284 if link: |
|
285 ui.debug("copying by hardlink\n") |
|
286 os.system("cp -al %s/.hg .hg" % source) |
|
287 try: |
|
288 os.remove(".hg/dirstate") |
|
289 except: pass |
|
290 |
|
291 repo = hg.repository(ui, ".") |
|
292 |
|
293 else: |
|
294 repo = hg.repository(ui, ".", create=1) |
|
295 other = hg.repository(ui, source) |
|
296 cg = repo.getchangegroup(other) |
|
297 repo.addchangegroup(cg) |
|
298 |
|
299 f = repo.opener("hgrc", "w") |
|
300 f.write("[paths]\n") |
|
301 f.write("default = %s\n" % source) |
|
302 |
|
303 if not opts['no-update']: |
|
304 update(ui, repo) |
|
305 |
262 def commit(ui, repo, *files, **opts): |
306 def commit(ui, repo, *files, **opts): |
263 """commit the specified files or all outstanding changes""" |
307 """commit the specified files or all outstanding changes""" |
264 text = opts['text'] |
308 text = opts['text'] |
265 if not text and opts['logfile']: |
309 if not text and opts['logfile']: |
266 try: text = open(opts['logfile']).read() |
310 try: text = open(opts['logfile']).read() |
442 if len(files) > 0: |
486 if len(files) > 0: |
443 addremove(ui, repo, *files) |
487 addremove(ui, repo, *files) |
444 repo.commit(files, text) |
488 repo.commit(files, text) |
445 |
489 |
446 def init(ui, source=None, **opts): |
490 def init(ui, source=None, **opts): |
447 """create a new repository or copy an existing one""" |
491 """create a new repository or (deprecated, use clone) copy an existing one""" |
448 |
492 |
449 if source: |
493 if source: |
450 paths = {} |
494 ui.warn("this use of init is deprecated: use \"hg clone\" instead\n") |
451 for name, path in ui.configitems("paths"): |
495 opts['no-update'] = not opts['update'] |
452 paths[name] = path |
496 clone(ui, source, None, **opts) |
453 |
|
454 if source in paths: source = paths[source] |
|
455 |
|
456 link = 0 |
|
457 if not source.startswith("http://"): |
|
458 d1 = os.stat(os.getcwd()).st_dev |
|
459 d2 = os.stat(source).st_dev |
|
460 if d1 == d2: link = 1 |
|
461 |
|
462 if link: |
|
463 ui.debug("copying by hardlink\n") |
|
464 os.system("cp -al %s/.hg .hg" % source) |
|
465 try: |
|
466 os.remove(".hg/dirstate") |
|
467 except: pass |
|
468 |
|
469 repo = hg.repository(ui, ".") |
|
470 |
|
471 else: |
|
472 repo = hg.repository(ui, ".", create=1) |
|
473 other = hg.repository(ui, source) |
|
474 cg = repo.getchangegroup(other) |
|
475 repo.addchangegroup(cg) |
|
476 |
|
477 f = repo.opener("hgrc", "w") |
|
478 f.write("[paths]\n") |
|
479 f.write("default = %s\n" % source) |
|
480 |
|
481 if opts['update']: |
|
482 update(ui, repo) |
|
483 else: |
497 else: |
484 repo = hg.repository(ui, ".", create=1) |
498 repo = hg.repository(ui, ".", create=1) |
485 |
499 |
486 def log(ui, repo, f): |
500 def log(ui, repo, f): |
487 """show the revision history of a single file""" |
501 """show the revision history of a single file""" |
705 ('u', 'user', None, 'show user'), |
719 ('u', 'user', None, 'show user'), |
706 ('n', 'number', None, 'show revision number'), |
720 ('n', 'number', None, 'show revision number'), |
707 ('c', 'changeset', None, 'show changeset')], |
721 ('c', 'changeset', None, 'show changeset')], |
708 'hg annotate [-u] [-c] [-n] [-r id] [files]'), |
722 'hg annotate [-u] [-c] [-n] [-r id] [files]'), |
709 "cat": (cat, [], 'hg cat <file> [rev]'), |
723 "cat": (cat, [], 'hg cat <file> [rev]'), |
|
724 "clone": (clone, [('U', 'no-update', None, 'skip update after cloning')], |
|
725 'hg clone [options] <source> [dest]'), |
710 "commit|ci": (commit, |
726 "commit|ci": (commit, |
711 [('t', 'text', "", 'commit text'), |
727 [('t', 'text', "", 'commit text'), |
712 ('A', 'addremove', None, 'run add/remove during commit'), |
728 ('A', 'addremove', None, 'run add/remove during commit'), |
713 ('l', 'logfile', "", 'commit text file'), |
729 ('l', 'logfile', "", 'commit text file'), |
714 ('d', 'date', "", 'data'), |
730 ('d', 'date', "", 'data'), |
771 'hg update [options] [node]'), |
787 'hg update [options] [node]'), |
772 "verify": (verify, [], 'hg verify'), |
788 "verify": (verify, [], 'hg verify'), |
773 "version": (show_version, [], 'hg version'), |
789 "version": (show_version, [], 'hg version'), |
774 } |
790 } |
775 |
791 |
776 norepo = "init version help debugindex debugindexdot" |
792 norepo = "clone init version help debugindex debugindexdot" |
777 |
793 |
778 def find(cmd): |
794 def find(cmd): |
779 for e in table.keys(): |
795 for e in table.keys(): |
780 if re.match("(%s)$" % e, cmd): |
796 if re.match("(%s)$" % e, cmd): |
781 return table[e] |
797 return table[e] |