aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2016-04-12 10:02:04 +0200
committerGuido Günther <agx@sigxcpu.org>2016-04-12 10:02:04 +0200
commit1aa9fc33ac52a16b94723dece6db055760f8f1d6 (patch)
tree982fcaff42ba29af9240a724b2f22094f1d5c728
parent6681989dce6241ccc25bddc5bf4302c70ba2ef06 (diff)
Add tree filter helpers to DebianGitRepository
-rw-r--r--gbp/deb/git.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/gbp/deb/git.py b/gbp/deb/git.py
index 65ba4f56..a4bb85f9 100644
--- a/gbp/deb/git.py
+++ b/gbp/deb/git.py
@@ -28,6 +28,30 @@ class DebianGitRepository(GitRepository):
super(DebianGitRepository, self).__init__(path)
self.pristine_tar = DebianPristineTar(self)
+ def tree_drop_dirs(self, tree, dirs):
+ """
+ Drop the given top level dirs from the given git tree
+ returning a new tree object.
+ """
+ objs = self.list_tree(tree)
+ new_tree_objs = []
+
+ for m, t, s, n in objs:
+ if not (n in dirs and t == 'tree'):
+ new_tree_objs.append((m, t, s, n))
+ new_tree = self.make_tree(new_tree_objs)
+ return new_tree
+
+ def tree_get_dir(self, tree, dir):
+ """
+ Get the SHA1 of directory in a given tree
+ """
+ toplevel = self.list_tree(tree)
+ for m, t, s, n in toplevel:
+ if n == dir and t == 'tree':
+ return s
+ return None
+
def find_version(self, format, version):
"""
Check if a certain version is stored in this repo and return the SHA1