]> arthur.barton.de Git - bup.git/blob - t/subtree-hash
94cd3b36d1f7e77c59a57fd344dbd1fd79132b53
[bup.git] / t / subtree-hash
1 #!/usr/bin/env python
2
3 from subprocess import check_output
4 import argparse
5 import sys
6
7 parser = argparse.ArgumentParser()
8 parser.add_argument("ROOT_HASH", help="root tree for the search")
9 parser.add_argument("PATH_ITEM", help="path component", nargs='*')
10 opts = parser.parse_args()
11 tree_hash = opts.ROOT_HASH
12 path = opts.PATH_ITEM
13
14 while path:
15     target_name = path[0]
16     subtree_items = check_output(['git', 'ls-tree', '-z', tree_hash])
17     target_hash = None
18     for entry in subtree_items.split('\0'):
19         if not entry:
20             break
21         info, name = entry.split('\t', 1)
22         if name == target_name:
23             _, _, target_hash = info.split(' ')
24             break
25     if not target_hash:
26         print >> sys.stderr, "Can't find %r in %s" % (target_name, tree_hash)
27         break
28     tree_hash = target_hash
29     path = path[1:]
30
31 if path:
32     sys.exit(1)
33
34 print tree_hash