diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2013-11-11 17:44:57 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2013-11-22 13:49:25 +0000 |
commit | 65fc7474c12b7b0fccd57810ba4f06d2fbca895a (patch) | |
tree | f8b5791cce76424175ec7e5333ab42659db388dc | |
parent | 0b4e147009bffa7b720ee767633e3acf3bb68c3a (diff) | |
download | morph-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.
-rw-r--r-- | morphlib/gitindex.py | 4 | ||||
-rw-r--r-- | morphlib/gitindex_tests.py | 9 |
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()),[]) |