equal
deleted
inserted
replaced
20 |
20 |
21 def parseurl(url, revs): |
21 def parseurl(url, revs): |
22 '''parse url#branch, returning url, branch + revs''' |
22 '''parse url#branch, returning url, branch + revs''' |
23 |
23 |
24 if '#' not in url: |
24 if '#' not in url: |
25 return url, (revs or None) |
25 return url, (revs or None), None |
26 |
26 |
27 url, rev = url.split('#', 1) |
27 url, rev = url.split('#', 1) |
28 return url, revs + [rev] |
28 return url, revs + [rev], rev |
29 |
29 |
30 schemes = { |
30 schemes = { |
31 'bundle': bundlerepo, |
31 'bundle': bundlerepo, |
32 'file': _local, |
32 'file': _local, |
33 'http': httprepo, |
33 'http': httprepo, |
104 update: update working directory after clone completes, if |
104 update: update working directory after clone completes, if |
105 destination is local repository |
105 destination is local repository |
106 """ |
106 """ |
107 |
107 |
108 origsource = source |
108 origsource = source |
109 source, rev = parseurl(ui.expandpath(source), rev) |
109 source, rev, checkout = parseurl(ui.expandpath(source), rev) |
110 |
110 |
111 if isinstance(source, str): |
111 if isinstance(source, str): |
112 src_repo = repository(ui, source) |
112 src_repo = repository(ui, source) |
113 else: |
113 else: |
114 src_repo = source |
114 src_repo = source |
147 dir_cleanup = DirCleanup(dest) |
147 dir_cleanup = DirCleanup(dest) |
148 |
148 |
149 abspath = origsource |
149 abspath = origsource |
150 copy = False |
150 copy = False |
151 if src_repo.local() and islocal(dest): |
151 if src_repo.local() and islocal(dest): |
152 abspath = os.path.abspath(origsource) |
152 abspath = os.path.abspath(util.drop_scheme('file', origsource)) |
153 copy = not pull and not rev |
153 copy = not pull and not rev |
154 |
154 |
155 if copy: |
155 if copy: |
156 try: |
156 try: |
157 # we use a lock here because if we race with commit, we |
157 # we use a lock here because if we race with commit, we |
224 fp.write("[paths]\n") |
224 fp.write("[paths]\n") |
225 fp.write("default = %s\n" % abspath) |
225 fp.write("default = %s\n" % abspath) |
226 fp.close() |
226 fp.close() |
227 |
227 |
228 if update: |
228 if update: |
229 try: |
229 if not checkout: |
230 checkout = dest_repo.lookup("default") |
230 try: |
231 except: |
231 checkout = dest_repo.lookup("default") |
232 checkout = dest_repo.changelog.tip() |
232 except: |
|
233 checkout = dest_repo.changelog.tip() |
233 _update(dest_repo, checkout) |
234 _update(dest_repo, checkout) |
234 |
235 |
235 return src_repo, dest_repo |
236 return src_repo, dest_repo |
236 finally: |
237 finally: |
237 del src_lock, dest_lock, dir_cleanup |
238 del src_lock, dest_lock, dir_cleanup |