Mercurial > hg
diff hgext/convert/subversion.py @ 5554:2147a734dcf9
convert: tell the source repository when a rev has been converted
This lets us roundtrip changes between svn and hg.
author | Bryan O'Sullivan <bos@serpentine.com> |
---|---|
date | Mon, 26 Nov 2007 17:23:20 -0800 |
parents | e01c748cb632 |
children | 6e1a61b14bbf |
line wrap: on
line diff
--- a/hgext/convert/subversion.py Mon Nov 26 14:01:31 2007 -0800 +++ b/hgext/convert/subversion.py Mon Nov 26 17:23:20 2007 -0800 @@ -154,6 +154,12 @@ self.head = self.revid(self.last_changed) self._changescache = None + if os.path.exists(os.path.join(url, '.svn/entries')): + self.wc = url + else: + self.wc = None + self.convertfp = None + def setrevmap(self, revmap): lastrevs = {} for revid in revmap.iterkeys(): @@ -298,6 +304,15 @@ self.ui.note('no tags found at revision %d\n' % start) return tags + def converted(self, rev, destrev): + if not self.wc: + return + if self.convertfp is None: + self.convertfp = open(os.path.join(self.wc, '.svn', 'hg-shamap'), + 'a') + self.convertfp.write('%s %d\n' % (destrev, self.revnum(rev))) + self.convertfp.flush() + # -- helper functions -- def revid(self, revnum, module=None): @@ -749,6 +764,9 @@ fp.close() util.set_exec(hook, True) + xport = transport.SvnRaTransport(url=geturl(path)) + self.uuid = svn.ra.get_uuid(xport.ra) + def wjoin(self, *names): return os.path.join(self.wc, *names) @@ -837,10 +855,13 @@ def addchild(self, parent, child): self.childmap[parent] = child + def revid(self, rev): + return u"svn:%s@%s" % (self.uuid, rev) + def putcommit(self, files, parents, commit): for parent in parents: try: - return self.childmap[parent] + return self.revid(self.childmap[parent]) except KeyError: pass entries = set(self.delete) @@ -873,7 +894,7 @@ revprop=True, revision=rev) for parent in parents: self.addchild(parent, rev) - return rev + return self.revid(rev) finally: os.unlink(messagefile)