summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2012-02-28 14:52:38 +0100
committerJelmer Vernooij <jelmer@samba.org>2012-02-28 14:52:38 +0100
commita15065627e01a9c6625feacf79b9a445892212a1 (patch)
treedcbcacc1ce3c90c39b08376fc61f16199c4c64d1
parent55ad1a3e3a63b6b906b21d66af72c4e048faa7f3 (diff)
downloadpython-fastimport-a15065627e01a9c6625feacf79b9a445892212a1.tar.gz
Remove bzr-specific reftracker and idmapfile modules.
-rw-r--r--NEWS3
-rw-r--r--fastimport/idmapfile.py64
-rw-r--r--fastimport/reftracker.py66
-rw-r--r--fastimport/tests/__init__.py1
-rw-r--r--fastimport/tests/test_head_tracking.py259
5 files changed, 3 insertions, 390 deletions
diff --git a/NEWS b/NEWS
index 1091c14..552926d 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
0.9.2 UNRELEASED
+ * Remove reftracker and idmapfile, which are bzr-specific.
+ (Jelmer Vernooij, #693507)
+
0.9.1 2012-02-28
* Update FSF address in headers. (Dan Callaghan, #868800)
diff --git a/fastimport/idmapfile.py b/fastimport/idmapfile.py
deleted file mode 100644
index 669dbce..0000000
--- a/fastimport/idmapfile.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2008 Canonical Ltd
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""Routines for saving and loading the id-map file."""
-
-import os
-
-
-def save_id_map(filename, revision_ids):
- """Save the mapping of commit ids to revision ids to a file.
-
- Throws the usual exceptions if the file cannot be opened,
- written to or closed.
-
- :param filename: name of the file to save the data to
- :param revision_ids: a dictionary of commit ids to revision ids.
- """
- f = open(filename, 'wb')
- try:
- for commit_id, rev_id in revision_ids.iteritems():
- f.write("%s %s\n" % (commit_id, rev_id))
- f.flush()
- finally:
- f.close()
-
-
-def load_id_map(filename):
- """Load the mapping of commit ids to revision ids from a file.
-
- If the file does not exist, an empty result is returned.
- If the file does exists but cannot be opened, read or closed,
- the normal exceptions are thrown.
-
- NOTE: It is assumed that commit-ids do not have embedded spaces.
-
- :param filename: name of the file to save the data to
- :result: map, count where:
- map = a dictionary of commit ids to revision ids;
- count = the number of keys in map
- """
- result = {}
- count = 0
- if os.path.exists(filename):
- f = open(filename)
- try:
- for line in f:
- parts = line[:-1].split(' ', 1)
- result[parts[0]] = parts[1]
- count += 1
- finally:
- f.close()
- return result, count
diff --git a/fastimport/reftracker.py b/fastimport/reftracker.py
deleted file mode 100644
index 44136c7..0000000
--- a/fastimport/reftracker.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2009 Canonical Ltd
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-"""Tracker of refs."""
-
-
-class RefTracker(object):
-
- def __init__(self):
- # Head tracking: last ref, last id per ref & map of commit ids to ref*s*
- self.last_ref = None
- self.last_ids = {}
- self.heads = {}
-
- def dump_stats(self, note):
- self._show_stats_for(self.last_ids, "last-ids", note=note)
- self._show_stats_for(self.heads, "heads", note=note)
-
- def clear(self):
- self.last_ids.clear()
- self.heads.clear()
-
- def track_heads(self, cmd):
- """Track the repository heads given a CommitCommand.
-
- :param cmd: the CommitCommand
- :return: the list of parents in terms of commit-ids
- """
- # Get the true set of parents
- if cmd.from_ is not None:
- parents = [cmd.from_]
- else:
- last_id = self.last_ids.get(cmd.ref)
- if last_id is not None:
- parents = [last_id]
- else:
- parents = []
- parents.extend(cmd.merges)
-
- # Track the heads
- self.track_heads_for_ref(cmd.ref, cmd.id, parents)
- return parents
-
- def track_heads_for_ref(self, cmd_ref, cmd_id, parents=None):
- if parents is not None:
- for parent in parents:
- if parent in self.heads:
- del self.heads[parent]
- self.heads.setdefault(cmd_id, set()).add(cmd_ref)
- self.last_ids[cmd_ref] = cmd_id
- self.last_ref = cmd_ref
-
-
diff --git a/fastimport/tests/__init__.py b/fastimport/tests/__init__.py
index 3bedc42..49fbbac 100644
--- a/fastimport/tests/__init__.py
+++ b/fastimport/tests/__init__.py
@@ -26,7 +26,6 @@ def test_suite():
'test_errors',
'test_filter_processor',
'test_helpers',
- 'test_head_tracking',
'test_parser',
]
module_names = ['fastimport.tests.' + name for name in names]
diff --git a/fastimport/tests/test_head_tracking.py b/fastimport/tests/test_head_tracking.py
deleted file mode 100644
index 27b8ffe..0000000
--- a/fastimport/tests/test_head_tracking.py
+++ /dev/null
@@ -1,259 +0,0 @@
-# Copyright (C) 2009 Canonical Ltd
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-"""Test tracking of heads"""
-
-from cStringIO import StringIO
-
-from fastimport import (
- commands,
- parser,
- )
-
-import testtools
-
-from fastimport.reftracker import (
- RefTracker,
- )
-
-
-# A sample input stream that only adds files to a branch
-_SAMPLE_MAINLINE = \
-"""blob
-mark :1
-data 9
-Welcome!
-commit refs/heads/master
-mark :100
-committer a <b@c> 1234798653 +0000
-data 4
-test
-M 644 :1 doc/README.txt
-blob
-mark :2
-data 17
-Life
-is
-good ...
-commit refs/heads/master
-mark :101
-committer a <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :100
-M 644 :2 NEWS
-blob
-mark :3
-data 19
-Welcome!
-my friend
-blob
-mark :4
-data 11
-== Docs ==
-commit refs/heads/master
-mark :102
-committer d <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :101
-M 644 :3 doc/README.txt
-M 644 :4 doc/index.txt
-"""
-
-# A sample input stream that adds files to two branches
-_SAMPLE_TWO_HEADS = \
-"""blob
-mark :1
-data 9
-Welcome!
-commit refs/heads/master
-mark :100
-committer a <b@c> 1234798653 +0000
-data 4
-test
-M 644 :1 doc/README.txt
-blob
-mark :2
-data 17
-Life
-is
-good ...
-commit refs/heads/mybranch
-mark :101
-committer a <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :100
-M 644 :2 NEWS
-blob
-mark :3
-data 19
-Welcome!
-my friend
-blob
-mark :4
-data 11
-== Docs ==
-commit refs/heads/master
-mark :102
-committer d <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :100
-M 644 :3 doc/README.txt
-M 644 :4 doc/index.txt
-"""
-
-# A sample input stream that adds files to two branches
-_SAMPLE_TWO_BRANCHES_MERGED = \
-"""blob
-mark :1
-data 9
-Welcome!
-commit refs/heads/master
-mark :100
-committer a <b@c> 1234798653 +0000
-data 4
-test
-M 644 :1 doc/README.txt
-blob
-mark :2
-data 17
-Life
-is
-good ...
-commit refs/heads/mybranch
-mark :101
-committer a <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :100
-M 644 :2 NEWS
-blob
-mark :3
-data 19
-Welcome!
-my friend
-blob
-mark :4
-data 11
-== Docs ==
-commit refs/heads/master
-mark :102
-committer d <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :100
-M 644 :3 doc/README.txt
-M 644 :4 doc/index.txt
-commit refs/heads/master
-mark :103
-committer d <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :102
-merge :101
-D doc/index.txt
-"""
-
-# A sample input stream that contains a reset
-_SAMPLE_RESET = \
-"""blob
-mark :1
-data 9
-Welcome!
-commit refs/heads/master
-mark :100
-committer a <b@c> 1234798653 +0000
-data 4
-test
-M 644 :1 doc/README.txt
-reset refs/remotes/origin/master
-from :100
-"""
-
-# A sample input stream that contains a reset and more commits
-_SAMPLE_RESET_WITH_MORE_COMMITS = \
-"""blob
-mark :1
-data 9
-Welcome!
-commit refs/heads/master
-mark :100
-committer a <b@c> 1234798653 +0000
-data 4
-test
-M 644 :1 doc/README.txt
-reset refs/remotes/origin/master
-from :100
-commit refs/remotes/origin/master
-mark :101
-committer d <b@c> 1234798653 +0000
-data 8
-test
-ing
-from :100
-D doc/README.txt
-"""
-
-class TestHeadTracking(testtools.TestCase):
-
- def assertHeads(self, input, expected):
- s = StringIO(input)
- p = parser.ImportParser(s)
- reftracker = RefTracker()
- for cmd in p.iter_commands():
- if isinstance(cmd, commands.CommitCommand):
- reftracker.track_heads(cmd)
- # eat the file commands
- list(cmd.iter_files())
- elif isinstance(cmd, commands.ResetCommand):
- if cmd.from_ is not None:
- reftracker.track_heads_for_ref(cmd.ref, cmd.from_)
- self.assertEqual(reftracker.heads, expected)
-
- def test_mainline(self):
- self.assertHeads(_SAMPLE_MAINLINE, {
- ':102': set(['refs/heads/master']),
- })
-
- def test_two_heads(self):
- self.assertHeads(_SAMPLE_TWO_HEADS, {
- ':101': set(['refs/heads/mybranch']),
- ':102': set(['refs/heads/master']),
- })
-
- def test_two_branches_merged(self):
- self.assertHeads(_SAMPLE_TWO_BRANCHES_MERGED, {
- ':103': set(['refs/heads/master']),
- })
-
- def test_reset(self):
- self.assertHeads(_SAMPLE_RESET, {
- ':100': set(['refs/heads/master', 'refs/remotes/origin/master']),
- })
-
- def test_reset_with_more_commits(self):
- self.assertHeads(_SAMPLE_RESET_WITH_MORE_COMMITS, {
- ':101': set(['refs/remotes/origin/master']),
- })