#!/bin/sh """": # -*-python-*- bup_python="$(dirname "$0")/../cmd/bup-python" || exit $? exec "$bup_python" "$0" ${1+"$@"} """ # end of bup preamble from __future__ import absolute_import import os, sys from bup.helpers import handle_ctrl_c, readpipe from bup import options optspec = """ subtree-hash ROOT_HASH [PATH_ITEM...] -- """ handle_ctrl_c() o = options.Options(optspec) (opt, flags, extra) = o.parse(sys.argv[1:]) if len(extra) < 1: o.fatal('must specify a root hash') tree_hash = extra[0] path = extra[1:] while path: target_name = path[0] subtree_items = readpipe(['git', 'ls-tree', '-z', tree_hash]) target_hash = None for entry in subtree_items.split('\0'): if not entry: break info, name = entry.split('\t', 1) if name == target_name: _, _, target_hash = info.split(' ') break if not target_hash: print >> sys.stderr, "Can't find %r in %s" % (target_name, tree_hash) break tree_hash = target_hash path = path[1:] if path: sys.exit(1) print tree_hash