@@ -136,14 +136,18 @@ func (t *TemporaryUploadRepository) LsFiles(filenames ...string) ([]string, erro
136
136
137
137
// RemoveFilesFromIndex removes the given files from the index
138
138
func (t * TemporaryUploadRepository ) RemoveFilesFromIndex (filenames ... string ) error {
139
+ objFmt , err := t .gitRepo .GetObjectFormat ()
140
+ if err != nil {
141
+ return fmt .Errorf ("unable to get object format for temporary repo: %q, error: %w" , t .repo .FullName (), err )
142
+ }
139
143
stdOut := new (bytes.Buffer )
140
144
stdErr := new (bytes.Buffer )
141
145
stdIn := new (bytes.Buffer )
142
146
for _ , file := range filenames {
143
147
if file != "" {
144
- stdIn . WriteString ( "0 0000000000000000000000000000000000000000 \t " )
145
- stdIn . WriteString ( file )
146
- stdIn . WriteByte ( '\000' )
148
+ // man git-update-index: input syntax (1): mode SP sha1 TAB path
149
+ // mode=0 means "remove from index", then hash part "does not matter as long as it is well formatted."
150
+ _ , _ = fmt . Fprintf ( stdIn , "0 %s \t %s \x00 " , objFmt . EmptyObjectID (), file )
147
151
}
148
152
}
149
153
@@ -154,8 +158,7 @@ func (t *TemporaryUploadRepository) RemoveFilesFromIndex(filenames ...string) er
154
158
Stdout : stdOut ,
155
159
Stderr : stdErr ,
156
160
}); err != nil {
157
- log .Error ("Unable to update-index for temporary repo: %s (%s) Error: %v\n stdout: %s\n stderr: %s" , t .repo .FullName (), t .basePath , err , stdOut .String (), stdErr .String ())
158
- return fmt .Errorf ("Unable to update-index for temporary repo: %s Error: %w\n stdout: %s\n stderr: %s" , t .repo .FullName (), err , stdOut .String (), stdErr .String ())
161
+ return fmt .Errorf ("unable to update-index for temporary repo: %q, error: %w\n stdout: %s\n stderr: %s" , t .repo .FullName (), err , stdOut .String (), stdErr .String ())
159
162
}
160
163
return nil
161
164
}
0 commit comments