summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--branch_mapper.py40
-rw-r--r--branch_updater.py4
-rw-r--r--tests/test_branch_mapper.py42
3 files changed, 29 insertions, 57 deletions
diff --git a/branch_mapper.py b/branch_mapper.py
index c995e5c..acc37c9 100644
--- a/branch_mapper.py
+++ b/branch_mapper.py
@@ -24,31 +24,25 @@ import re
class BranchMapper(object):
_GIT_TRUNK_RE = re.compile('(?:git-)*trunk')
- def git_to_bzr(self, ref_names):
- """Get the mapping from git reference names to Bazaar branch names.
-
- :return: a dictionary with git reference names as keys and
- the Bazaar branch names as values.
+ def git_to_bzr(self, ref_name):
+ """Map a git reference name to a Bazaar branch name.
"""
- bazaar_names = {}
- for ref_name in sorted(ref_names):
- parts = ref_name.split('/')
- if parts[0] == 'refs':
+ parts = ref_name.split('/')
+ if parts[0] == 'refs':
+ parts.pop(0)
+ category = parts.pop(0)
+ if category == 'heads':
+ git_name = '/'.join(parts)
+ bazaar_name = self._git_to_bzr_name(git_name)
+ else:
+ if category == 'remotes' and parts[0] == 'origin':
parts.pop(0)
- category = parts.pop(0)
- if category == 'heads':
- git_name = '/'.join(parts)
- bazaar_name = self._git_to_bzr_name(git_name)
- else:
- if category == 'remotes' and parts[0] == 'origin':
- parts.pop(0)
- git_name = '/'.join(parts)
- if category.endswith('s'):
- category = category[:-1]
- name_no_ext = self._git_to_bzr_name(git_name)
- bazaar_name = "%s.%s" % (name_no_ext, category)
- bazaar_names[ref_name] = bazaar_name
- return bazaar_names
+ git_name = '/'.join(parts)
+ if category.endswith('s'):
+ category = category[:-1]
+ name_no_ext = self._git_to_bzr_name(git_name)
+ bazaar_name = "%s.%s" % (name_no_ext, category)
+ return bazaar_name
def _git_to_bzr_name(self, git_name):
# Make a simple name more bzr-like, by mapping git 'master' to bzr 'trunk'.
diff --git a/branch_updater.py b/branch_updater.py
index 004f279..2c8e087 100644
--- a/branch_updater.py
+++ b/branch_updater.py
@@ -84,7 +84,9 @@ class BranchUpdater(object):
# Convert the reference names into Bazaar speak. If we haven't
# already put the 'trunk' first, do it now.
- git_to_bzr_map = self.name_mapper.git_to_bzr(ref_names)
+ git_to_bzr_map = {}
+ for ref_name in ref_names:
+ git_to_bzr_map[ref_name] = self.name_mapper.git_to_bzr(ref_name)
if ref_names and self.branch is None:
trunk = self.select_trunk(ref_names)
git_bzr_items = [(trunk, git_to_bzr_map[trunk])]
diff --git a/tests/test_branch_mapper.py b/tests/test_branch_mapper.py
index 0a50eec..00450c9 100644
--- a/tests/test_branch_mapper.py
+++ b/tests/test_branch_mapper.py
@@ -27,62 +27,38 @@ class TestBranchMapper(tests.TestCase):
def test_git_to_bzr(self):
m = branch_mapper.BranchMapper()
- git_refs = [
- 'refs/heads/master',
- 'refs/heads/foo',
- 'refs/tags/master',
- 'refs/tags/foo',
- 'refs/remotes/origin/master',
- 'refs/remotes/origin/foo',
- ]
- git_to_bzr_map = m.git_to_bzr(git_refs)
- self.assertEqual(git_to_bzr_map, {
+ for git, bzr in {
'refs/heads/master': 'trunk',
'refs/heads/foo': 'foo',
'refs/tags/master': 'trunk.tag',
'refs/tags/foo': 'foo.tag',
'refs/remotes/origin/master': 'trunk.remote',
'refs/remotes/origin/foo': 'foo.remote',
- })
+ }.items():
+ self.assertEqual(m.git_to_bzr(git), bzr)
def test_git_to_bzr_with_slashes(self):
m = branch_mapper.BranchMapper()
- git_refs = [
- 'refs/heads/master/slave',
- 'refs/heads/foo/bar',
- 'refs/tags/master/slave',
- 'refs/tags/foo/bar',
- 'refs/remotes/origin/master/slave',
- 'refs/remotes/origin/foo/bar',
- ]
- git_to_bzr_map = m.git_to_bzr(git_refs)
- self.assertEqual(git_to_bzr_map, {
+ for git, bzr in {
'refs/heads/master/slave': 'master/slave',
'refs/heads/foo/bar': 'foo/bar',
'refs/tags/master/slave': 'master/slave.tag',
'refs/tags/foo/bar': 'foo/bar.tag',
'refs/remotes/origin/master/slave': 'master/slave.remote',
'refs/remotes/origin/foo/bar': 'foo/bar.remote',
- })
+ }.items():
+ self.assertEqual(m.git_to_bzr(git), bzr)
def test_git_to_bzr_for_trunk(self):
# As 'master' in git is mapped to trunk in bzr, we need to handle
# 'trunk' in git in a sensible way.
m = branch_mapper.BranchMapper()
- git_refs = [
- 'refs/heads/trunk',
- 'refs/tags/trunk',
- 'refs/remotes/origin/trunk',
- 'refs/heads/git-trunk',
- 'refs/tags/git-trunk',
- 'refs/remotes/origin/git-trunk',
- ]
- git_to_bzr_map = m.git_to_bzr(git_refs)
- self.assertEqual(git_to_bzr_map, {
+ for git, bzr in {
'refs/heads/trunk': 'git-trunk',
'refs/tags/trunk': 'git-trunk.tag',
'refs/remotes/origin/trunk': 'git-trunk.remote',
'refs/heads/git-trunk': 'git-git-trunk',
'refs/tags/git-trunk': 'git-git-trunk.tag',
'refs/remotes/origin/git-trunk':'git-git-trunk.remote',
- })
+ }.items():
+ self.assertEqual(m.git_to_bzr(git), bzr)