summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2013-11-11 17:44:57 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2013-11-22 13:49:25 +0000
commit65fc7474c12b7b0fccd57810ba4f06d2fbca895a (patch)
treef8b5791cce76424175ec7e5333ab42659db388dc /morphlib
parent0b4e147009bffa7b720ee767633e3acf3bb68c3a (diff)
downloadmorph-65fc7474c12b7b0fccd57810ba4f06d2fbca895a.tar.gz
gitindex: Add GitIndex.set_to_tree(treeish) method
This is used to set the state of the index to that of a previously known commit. This is needed for the build without commit logic, so that commits generated are that of the last commit in the repository and anything uncommitted.
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/gitindex.py4
-rw-r--r--morphlib/gitindex_tests.py9
2 files changed, 13 insertions, 0 deletions
diff --git a/morphlib/gitindex.py b/morphlib/gitindex.py
index d8de8824..7cac2311 100644
--- a/morphlib/gitindex.py
+++ b/morphlib/gitindex.py
@@ -97,3 +97,7 @@ class GitIndex(object):
for code, to_path, from_path in self._get_status():
if code not in (STATUS_UNTRACKED, STATUS_IGNORED):
yield code, to_path, from_path
+
+ def set_to_tree(self, treeish):
+ '''Modify the index to contain the contents of the treeish.'''
+ self._run_git('read-tree', treeish)
diff --git a/morphlib/gitindex_tests.py b/morphlib/gitindex_tests.py
index db1e0e9b..2dcb5003 100644
--- a/morphlib/gitindex_tests.py
+++ b/morphlib/gitindex_tests.py
@@ -54,3 +54,12 @@ class GitIndexTests(unittest.TestCase):
self.assertEqual(sorted(idx.get_uncommitted_changes()),
[('D ', 'foo', None)])
# 'D ' means not in the index, but in the working tree
+
+ def test_set_to_tree_alt_index(self):
+ gd = morphlib.gitdir.GitDirectory(self.dirname)
+ idx = gd.get_index(os.path.join(self.tempdir, 'index'))
+ # Read the HEAD commit into the index, which is the same as the
+ # working tree, so there are no uncommitted changes reported
+ # by status
+ idx.set_to_tree(gd.HEAD)
+ self.assertEqual(list(idx.get_uncommitted_changes()),[])