diff options
Diffstat (limited to 'src/edit/git.go')
-rw-r--r-- | src/edit/git.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/edit/git.go b/src/edit/git.go index 5679e49..edeb111 100644 --- a/src/edit/git.go +++ b/src/edit/git.go @@ -91,6 +91,10 @@ type GitFile struct { Size int64 } +func (f GitFile) Cat() ([]byte, error) { + return exec.Command("git", "cat-file", "blob", f.Hash).Output() +} + type GitTree map[string]GitFile var ( @@ -162,19 +166,23 @@ func GitLsTree() (GitTree, error) { // the root tree, we have to +1. ret := make(GitTree, len(lines)) // Add the root tree - ret[""] = GitFile{ + ret["/"] = GitFile{ Mode: int32(40000), Type: "tree", Hash: treeish, Size: -1, } // Parse the lines from git ls-tree - for _, line := range lines[:len(ret)] { + for _, line := range lines { + if len(line) == 0 { + continue + } name, file, err := parseGitTreeLine(line) if err != nil { + panic(err) return nil, err } - ret[name] = file + ret["/"+name] = file } return ret, nil } |