Make it possible to key the package tags off of top level tree hash

Closes #2887

Signed-off-by: Roman Shaposhnik <rvs@zededa.com>
This commit is contained in:
Roman Shaposhnik 2018-01-30 18:58:51 -08:00
parent a7620b7604
commit 528e3e6850

View File

@ -84,7 +84,21 @@ func (g git) isWorkTree(pkg string) (bool, error) {
}
func (g git) treeHash(pkg, commit string) (string, error) {
out, err := g.commandStdout(os.Stderr, "ls-tree", "--full-tree", commit, "--", pkg)
// we have to check if pkg is at the top level of the git tree,
// if that's the case we need to use tree hash from the commit itself
out, err := g.commandStdout(nil, "rev-parse", "--prefix", pkg, "--show-toplevel")
if err != nil {
return "", err
}
if strings.TrimSpace(out) == pkg {
out, err = g.commandStdout(nil, "show", "--format=%T", "-s", commit)
if err != nil {
return "", err
}
return strings.TrimSpace(out), nil
}
out, err = g.commandStdout(os.Stderr, "ls-tree", "--full-tree", commit, "--", pkg)
if err != nil {
return "", err
}