summaryrefslogtreecommitdiff
path: root/src/edit/git.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/edit/git.go')
-rw-r--r--src/edit/git.go14
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
}