@@ -133,13 +133,6 @@ func (r *BlameReader) Close() error {
133133
134134// CreateBlameReader creates reader for given repository, commit and file
135135func CreateBlameReader (ctx context.Context , objectFormat ObjectFormat , repoPath string , commit * Commit , file string , bypassBlameIgnore bool ) (rd * BlameReader , err error ) {
136- reader , stdout , err := os .Pipe ()
137- if err != nil {
138- return nil , err
139- }
140-
141- cmd := NewCommandNoGlobals ("blame" , "--porcelain" )
142-
143136 var ignoreRevsFileName string
144137 var ignoreRevsFileCleanup func ()
145138 defer func () {
@@ -148,6 +141,8 @@ func CreateBlameReader(ctx context.Context, objectFormat ObjectFormat, repoPath
148141 }
149142 }()
150143
144+ cmd := NewCommandNoGlobals ("blame" , "--porcelain" )
145+
151146 if DefaultFeatures ().CheckVersionAtLeast ("2.23" ) && ! bypassBlameIgnore {
152147 ignoreRevsFileName , ignoreRevsFileCleanup , err = tryCreateBlameIgnoreRevsFile (commit )
153148 if err != nil {
@@ -163,6 +158,11 @@ func CreateBlameReader(ctx context.Context, objectFormat ObjectFormat, repoPath
163158 cmd .AddDynamicArguments (commit .ID .String ()).AddDashesAndList (file )
164159
165160 done := make (chan error , 1 )
161+ // use err1 to not override err
162+ reader , stdout , err1 := os .Pipe ()
163+ if err1 != nil {
164+ return nil , err1
165+ }
166166 go func () {
167167 stderr := bytes.Buffer {}
168168 // TODO: it doesn't work for directories (the directories shouldn't be "blamed"), and the "err" should be returned by "Read" but not by "Close"
0 commit comments