Skip to content

Commit b5c32d6

Browse files
committed
check EmptySHA in GetFilesChangedSinceCommit
1 parent 7636f7a commit b5c32d6

File tree

4 files changed

+19
-31
lines changed

4 files changed

+19
-31
lines changed

modules/actions/workflows.go

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -255,15 +255,7 @@ func matchPushEvent(commit *git.Commit, pushPayload *api.PushPayload, evt *jobpa
255255
matchTimes++
256256
}
257257
case "paths":
258-
var (
259-
filesChanged []string
260-
err error
261-
)
262-
if pushPayload.Before != git.EmptySHA {
263-
filesChanged, err = commit.GetFilesChangedSinceCommit(pushPayload.Before)
264-
} else {
265-
filesChanged, err = commit.GetFilesChanged()
266-
}
258+
filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
267259
if err != nil {
268260
log.Error("GetFilesChanged [commit_sha1: %s]: %v", commit.ID.String(), err)
269261
} else {
@@ -276,15 +268,7 @@ func matchPushEvent(commit *git.Commit, pushPayload *api.PushPayload, evt *jobpa
276268
}
277269
}
278270
case "paths-ignore":
279-
var (
280-
filesChanged []string
281-
err error
282-
)
283-
if pushPayload.Before != git.EmptySHA {
284-
filesChanged, err = commit.GetFilesChangedSinceCommit(pushPayload.Before)
285-
} else {
286-
filesChanged, err = commit.GetFilesChanged()
287-
}
271+
filesChanged, err := commit.GetFilesChangedSinceCommit(pushPayload.Before)
288272
if err != nil {
289273
log.Error("GetFilesChanged [commit_sha1: %s]: %v", commit.ID.String(), err)
290274
} else {

modules/git/commit.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,12 +302,15 @@ func (c *Commit) SearchCommits(opts SearchCommitsOptions) ([]*Commit, error) {
302302

303303
// GetFilesChangedSinceCommit get all changed file names between pastCommit to current revision
304304
func (c *Commit) GetFilesChangedSinceCommit(pastCommit string) ([]string, error) {
305+
if pastCommit == EmptySHA {
306+
return c.GetFilesChanged()
307+
}
305308
return c.repo.GetFilesChangedBetween(pastCommit, c.ID.String())
306309
}
307310

308311
// GetFilesChanged get the changed file names of the commit
309312
func (c *Commit) GetFilesChanged() ([]string, error) {
310-
return c.repo.GetCommitFilesChanged(c)
313+
return c.repo.GetCommitFilesChanged(c.ID.String())
311314
}
312315

313316
// FileChangedSinceCommit Returns true if the file given has changed since the the past commit

modules/git/repo_compare.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -296,17 +296,22 @@ func (repo *Repository) GetFilesChangedBetween(base, head string) ([]string, err
296296
}
297297

298298
// GetCommitFilesChanged get the changed file names of the specified commit
299-
func (repo *Repository) GetCommitFilesChanged(commit *Commit) ([]string, error) {
300-
var (
301-
stdout string
302-
err error
303-
)
299+
func (repo *Repository) GetCommitFilesChanged(commitID string) ([]string, error) {
300+
id, err := repo.ConvertToSHA1(commitID)
301+
if err != nil {
302+
return nil, err
303+
}
304+
commit, err := repo.getCommit(id)
305+
if err != nil {
306+
return nil, err
307+
}
308+
var stdout string
304309
if len(commit.Parents) == 0 {
305310
// if the commit is the root commit, diff-tree cannot show the changed files
306311
// we need to use ls-tree in this case
307-
stdout, _, err = NewCommand(repo.Ctx, "ls-tree", "--name-only", "-r").AddDynamicArguments(commit.ID.String()).RunStdString(&RunOpts{Dir: repo.Path})
312+
stdout, _, err = NewCommand(repo.Ctx, "ls-tree", "--name-only", "-r").AddDynamicArguments(commitID).RunStdString(&RunOpts{Dir: repo.Path})
308313
} else {
309-
stdout, _, err = NewCommand(repo.Ctx, "diff-tree", "--no-commit-id", "--name-only", "-r").AddDynamicArguments(commit.ID.String()).RunStdString(&RunOpts{Dir: repo.Path})
314+
stdout, _, err = NewCommand(repo.Ctx, "diff-tree", "--no-commit-id", "--name-only", "-r").AddDynamicArguments(commitID).RunStdString(&RunOpts{Dir: repo.Path})
310315
}
311316
if err != nil {
312317
return nil, err

modules/git/repo_compare_test.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,7 @@ func TestGetCommitFilesChanged(t *testing.T) {
149149
}
150150

151151
for _, tc := range testCases {
152-
id, err := repo.ConvertToSHA1(tc.CommitID)
153-
assert.NoError(t, err)
154-
commit, err := repo.getCommit(id)
155-
assert.NoError(t, err)
156-
changedFiles, err := repo.GetCommitFilesChanged(commit)
152+
changedFiles, err := repo.GetCommitFilesChanged(tc.CommitID)
157153
assert.NoError(t, err)
158154
assert.ElementsMatch(t, changedFiles, tc.ExpectedFiles)
159155
}

0 commit comments

Comments
 (0)