+17
-16
worktree_commit.go
+17
-16
worktree_commit.go
···
45
45
if err != nil {
46
46
return plumbing.ZeroHash, err
47
47
}
48
-
49
-
t, err := w.r.getTreeFromCommitHash(head.Hash())
48
+
headCommit, err := w.r.CommitObject(head.Hash())
50
49
if err != nil {
51
50
return plumbing.ZeroHash, err
52
51
}
53
52
54
-
treeHash = t.Hash
55
-
opts.Parents = []plumbing.Hash{head.Hash()}
56
-
} else {
57
-
idx, err := w.r.Storer.Index()
58
-
if err != nil {
59
-
return plumbing.ZeroHash, err
53
+
opts.Parents = nil
54
+
if len(headCommit.ParentHashes) != 0 {
55
+
opts.Parents = []plumbing.Hash{headCommit.ParentHashes[0]}
60
56
}
57
+
}
61
58
62
-
h := &buildTreeHelper{
63
-
fs: w.Filesystem,
64
-
s: w.r.Storer,
65
-
}
59
+
idx, err := w.r.Storer.Index()
60
+
if err != nil {
61
+
return plumbing.ZeroHash, err
62
+
}
66
63
67
-
treeHash, err = h.BuildTree(idx, opts)
68
-
if err != nil {
69
-
return plumbing.ZeroHash, err
70
-
}
64
+
h := &buildTreeHelper{
65
+
fs: w.Filesystem,
66
+
s: w.r.Storer,
67
+
}
68
+
69
+
treeHash, err = h.BuildTree(idx, opts)
70
+
if err != nil {
71
+
return plumbing.ZeroHash, err
71
72
}
72
73
73
74
commit, err := w.buildCommitObject(msg, opts, treeHash)
+22
-1
worktree_commit_test.go
+22
-1
worktree_commit_test.go
···
131
131
_, err = w.Commit("foo\n", &CommitOptions{Author: defaultSignature()})
132
132
c.Assert(err, IsNil)
133
133
134
+
util.WriteFile(fs, "bar", []byte("bar"), 0644)
135
+
136
+
_, err = w.Add("bar")
137
+
c.Assert(err, IsNil)
138
+
134
139
amendedHash, err := w.Commit("bar\n", &CommitOptions{Amend: true})
135
140
c.Assert(err, IsNil)
136
141
137
142
headRef, err := w.r.Head()
143
+
c.Assert(err, IsNil)
144
+
138
145
c.Assert(amendedHash, Equals, headRef.Hash())
146
+
139
147
commit, err := w.r.CommitObject(headRef.Hash())
140
148
c.Assert(err, IsNil)
141
149
c.Assert(commit.Message, Equals, "bar\n")
150
+
c.Assert(commit.NumParents(), Equals, 1)
142
151
143
-
assertStorageStatus(c, s.Repository, 13, 11, 11, amendedHash)
152
+
stats, err := commit.Stats()
153
+
c.Assert(err, IsNil)
154
+
c.Assert(stats, HasLen, 2)
155
+
c.Assert(stats[0], Equals, object.FileStat{
156
+
Name: "bar",
157
+
Addition: 1,
158
+
})
159
+
c.Assert(stats[1], Equals, object.FileStat{
160
+
Name: "foo",
161
+
Addition: 1,
162
+
})
163
+
164
+
assertStorageStatus(c, s.Repository, 14, 12, 11, amendedHash)
144
165
}
145
166
146
167
func (s *WorktreeSuite) TestAddAndCommitWithSkipStatus(c *C) {