aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/gogits/git-module/commit.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/gogits/git-module/commit.go')
-rw-r--r--vendor/github.com/gogits/git-module/commit.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/vendor/github.com/gogits/git-module/commit.go b/vendor/github.com/gogits/git-module/commit.go
index 6cc6b5fd..64831d7f 100644
--- a/vendor/github.com/gogits/git-module/commit.go
+++ b/vendor/github.com/gogits/git-module/commit.go
@@ -271,10 +271,7 @@ func NewCommitFileStatus() *CommitFileStatus {
// GetCommitFileStatus returns file status of commit in given repository.
func GetCommitFileStatus(repoPath, commitID string) (*CommitFileStatus, error) {
stdout, w := io.Pipe()
- defer stdout.Close()
-
- stderr := new(bytes.Buffer)
-
+ done := make(chan struct{})
fileStatus := NewCommitFileStatus()
go func() {
scanner := bufio.NewScanner(stdout)
@@ -293,12 +290,17 @@ func GetCommitFileStatus(repoPath, commitID string) (*CommitFileStatus, error) {
fileStatus.Modified = append(fileStatus.Modified, fields[1])
}
}
+ done <- struct{}{}
}()
- if err := NewCommand("log", "-1", "--name-status", "--pretty=format:''", commitID).RunInDirPipeline(repoPath, w, stderr); err != nil {
+ stderr := new(bytes.Buffer)
+ err := NewCommand("log", "-1", "--name-status", "--pretty=format:''", commitID).RunInDirPipeline(repoPath, w, stderr)
+ w.Close() // Close writer to exit parsing goroutine
+ if err != nil {
return nil, concatenateError(err, stderr.String())
}
+ <-done
return fileStatus, nil
}