+ if len(args) >= 2:
+ try:
+ if git.rev_parse(args[1]) == git.rev_parse('refs/heads/' + args[1]):
+ # we are for sure referring to a branch
+ parentbranch = 'refs/heads/' + args[1]
+ print 'Recording "%s" as parent branch.' % parentbranch
+ elif git.rev_parse(args[1]) and re.search('/', args[1]):
+ # FIXME: should the test be more strict ?
+ parentbranch = args[1]
+ else:
+ # Note: this includes refs to StGIT patches
+ print 'Don\'t know how to determine parent branch from "%s".' % args[1]
+ parentbranch = None
+ except git.GitException:
+ # should use a more specific exception to catch only non-git refs ?
+ print 'Don\'t know how to determine parent branch from "%s".' % args[1]
+ parentbranch = None
+
+ tree_id = git_id(args[1])
+ else:
+ # branch stack off current branch
+ parentbranch = git.get_head_file()
+
+ if parentbranch:
+ parentremote = git.identify_remote(parentbranch)
+ if parentremote:
+ print 'Using "%s" remote to pull parent from.' % parentremote
+ else:
+ print 'Recording as a local branch.'
+ else:
+ # no known parent branch, can't guess the remote
+ parentremote = None