Mercurial > hgsubversion
comparison svncommands.py @ 331:75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
The 'hg svn url' command has been killed; the replacement is
'.hg/hgrc'. More stuff related to its disappearance has been stripped,
including two tests.
HgChangeReceiver now takes a UUID argument, which it uses to ensure
that remote repositories remain unchanged. This is a temporary
solution, and I'm not entirely satisfied with how it's done either.
Access to the UUID file has been isolated in a HgChangeReceiver
property.
Some more tests have been updated to use ui.pushbuffer()/popbuffer(),
and to pass through the Mercurial API.
Moved the arguments to wrappers.pull() to the UI configuration.
Also, remove HgChangeReceiver.opts in favour of a 'usebranchnames'
instance & configuration variable. The name is taken from the
ConvertExtension.
| author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
|---|---|
| date | Fri, 15 May 2009 19:18:43 +0200 |
| parents | 1d48d9a34c19 |
| children |
comparison
equal
deleted
inserted
replaced
| 330:5f8f2fd4fd54 | 331:75f082b5897e |
|---|---|
| 28 ui_=ui, | 28 ui_=ui, |
| 29 subdir=svn.subdir, | 29 subdir=svn.subdir, |
| 30 author_host=author_host, | 30 author_host=author_host, |
| 31 tag_locations=tag_locations, | 31 tag_locations=tag_locations, |
| 32 authors=authors, | 32 authors=authors, |
| 33 filemap=filemap) | 33 filemap=filemap, |
| 34 if os.path.exists(hg_editor.uuid_file): | 34 uuid=svn.uuid) |
| 35 uuid = open(hg_editor.uuid_file).read() | 35 start = max(hg_editor.last_known_revision(), skipto_rev) |
| 36 assert uuid == svn.uuid | 36 initializing_repo = (hg_editor.last_known_revision() <= 0) |
| 37 start = hg_editor.last_known_revision() | |
| 38 else: | |
| 39 open(hg_editor.uuid_file, 'w').write(svn.uuid) | |
| 40 open(hg_editor.svn_url_file, 'w').write(svn_url) | |
| 41 initializing_repo = True | |
| 42 start = skipto_rev | |
| 43 | 37 |
| 44 if initializing_repo and start > 0: | 38 if initializing_repo and start > 0: |
| 45 raise hgutil.Abort('Revision skipping at repository initialization ' | 39 raise hgutil.Abort('Revision skipping at repository initialization ' |
| 46 'remains unimplemented.') | 40 'remains unimplemented.') |
| 47 | 41 |
| 63 | 57 |
| 64 def rebuildmeta(ui, repo, hg_repo_path, args, **opts): | 58 def rebuildmeta(ui, repo, hg_repo_path, args, **opts): |
| 65 """rebuild hgsubversion metadata using values stored in revisions | 59 """rebuild hgsubversion metadata using values stored in revisions |
| 66 """ | 60 """ |
| 67 if len(args) != 1: | 61 if len(args) != 1: |
| 68 raise hgutil.Abort('You must pass the svn URI used to create this repo.') | 62 url = repo.ui.expandpath(dest or 'default-push', dest or 'default') |
| 63 else: | |
| 64 url = args[0] | |
| 65 if not (url.startswith('svn+') or url.startswith('svn:')): | |
| 66 raise hgutil.Abort('No valid Subversion URI found; please specify one.') | |
| 69 uuid = None | 67 uuid = None |
| 70 url = args[0].rstrip('/') | 68 url = util.normalize_url(url.rstrip('/')) |
| 71 user, passwd = util.getuserpass(opts) | 69 user, passwd = util.getuserpass(opts) |
| 72 svn = svnwrap.SubversionRepo(url, user, passwd) | 70 svn = svnwrap.SubversionRepo(url, user, passwd) |
| 73 subdir = svn.subdir | 71 subdir = svn.subdir |
| 74 svnmetadir = os.path.join(repo.path, 'svn') | 72 svnmetadir = os.path.join(repo.path, 'svn') |
| 75 if not os.path.exists(svnmetadir): | 73 if not os.path.exists(svnmetadir): |
| 93 assert revpath.startswith(subdir), ('That does not look like the ' | 91 assert revpath.startswith(subdir), ('That does not look like the ' |
| 94 'right location in the repo.') | 92 'right location in the repo.') |
| 95 if uuid is None: | 93 if uuid is None: |
| 96 uuid = convinfo[4:40] | 94 uuid = convinfo[4:40] |
| 97 assert uuid == svn.uuid, 'UUIDs did not match!' | 95 assert uuid == svn.uuid, 'UUIDs did not match!' |
| 98 urlfile = open(os.path.join(svnmetadir, 'url'), 'w') | |
| 99 urlfile.write(url) | |
| 100 urlfile.close() | |
| 101 uuidfile = open(os.path.join(svnmetadir, 'uuid'), 'w') | 96 uuidfile = open(os.path.join(svnmetadir, 'uuid'), 'w') |
| 102 uuidfile.write(uuid) | 97 uuidfile.write(uuid) |
| 103 uuidfile.close() | 98 uuidfile.close() |
| 104 commitpath = revpath[len(subdir)+1:] | 99 commitpath = revpath[len(subdir)+1:] |
| 105 if commitpath.startswith('branches'): | 100 if commitpath.startswith('branches'): |
