equal
deleted
inserted
replaced
329 ui.warn("abort: destination '%s' already exists\n" % dest) |
329 ui.warn("abort: destination '%s' already exists\n" % dest) |
330 return 1 |
330 return 1 |
331 |
331 |
332 class dircleanup: |
332 class dircleanup: |
333 def __init__(self, dir): |
333 def __init__(self, dir): |
|
334 import shutil |
|
335 self.rmtree = shutil.rmtree |
334 self.dir = dir |
336 self.dir = dir |
335 os.mkdir(dir) |
337 os.mkdir(dir) |
336 def close(self): |
338 def close(self): |
337 self.dir = None |
339 self.dir = None |
338 def __del__(self): |
340 def __del__(self): |
339 if self.dir: |
341 if self.dir: |
340 import shutil |
342 self.rmtree(self.dir, True) |
341 shutil.rmtree(self.dir, True) |
|
342 |
343 |
343 d = dircleanup(dest) |
344 d = dircleanup(dest) |
344 |
345 |
345 link = 0 |
346 link = 0 |
346 abspath = source |
347 abspath = source |
347 if not (source.startswith("http://") or |
348 if not (source.startswith("http://") or |
348 source.startswith("hg://") or |
349 source.startswith("hg://") or |
|
350 source.startswith("ssh://") or |
349 source.startswith("old-http://")): |
351 source.startswith("old-http://")): |
350 abspath = os.path.abspath(source) |
352 abspath = os.path.abspath(source) |
351 d1 = os.stat(dest).st_dev |
353 d1 = os.stat(dest).st_dev |
352 d2 = os.stat(source).st_dev |
354 d2 = os.stat(source).st_dev |
353 if d1 == d2: link = 1 |
355 if d1 == d2: link = 1 |
362 repo = hg.repository(ui, dest) |
364 repo = hg.repository(ui, dest) |
363 |
365 |
364 else: |
366 else: |
365 repo = hg.repository(ui, dest, create=1) |
367 repo = hg.repository(ui, dest, create=1) |
366 other = hg.repository(ui, source) |
368 other = hg.repository(ui, source) |
367 fetch = repo.findincoming(other) |
369 repo.pull(other) |
368 if fetch: |
|
369 cg = other.changegroup(fetch) |
|
370 repo.addchangegroup(cg) |
|
371 |
370 |
372 f = repo.opener("hgrc", "w") |
371 f = repo.opener("hgrc", "w") |
373 f.write("[paths]\n") |
372 f.write("[paths]\n") |
374 f.write("default = %s\n" % abspath) |
373 f.write("default = %s\n" % abspath) |
375 |
374 |
692 show_changeset(ui, repo, changenode=n) |
691 show_changeset(ui, repo, changenode=n) |
693 |
692 |
694 def pull(ui, repo, source="default", **opts): |
693 def pull(ui, repo, source="default", **opts): |
695 """pull changes from the specified source""" |
694 """pull changes from the specified source""" |
696 source = ui.expandpath(source) |
695 source = ui.expandpath(source) |
697 |
|
698 ui.status('pulling from %s\n' % (source)) |
696 ui.status('pulling from %s\n' % (source)) |
699 |
697 |
700 other = hg.repository(ui, source) |
698 other = hg.repository(ui, source) |
701 fetch = repo.findincoming(other) |
699 r = repo.pull(other) |
702 if not fetch: |
700 if not r: |
703 ui.status("no changes found\n") |
|
704 return |
|
705 |
|
706 cg = other.changegroup(fetch) |
|
707 r = repo.addchangegroup(cg) |
|
708 if cg and not r: |
|
709 if opts['update']: |
701 if opts['update']: |
710 return update(ui, repo) |
702 return update(ui, repo) |
711 else: |
703 else: |
712 ui.status("(run 'hg update' to get a working copy)\n") |
704 ui.status("(run 'hg update' to get a working copy)\n") |
713 |
705 |