|
@@ -138,9 +138,12 @@ func (r *Repository) Log(fromHash string) (object.CommitIter, error) {
|
138
|
138
|
})
|
139
|
139
|
}
|
140
|
140
|
|
141
|
|
-func (r *Repository) LineCountsDeltasIgnoreManagerCommits(
|
|
141
|
+func (r *Repository) GetModifiedAndRemovedFiles(
|
142
|
142
|
from *object.Commit, to *object.Commit,
|
143
|
|
-) (lineCountsDeltas map[string]int, err error) {
|
|
143
|
+) (modified []string, removed []string, err error) {
|
|
144
|
+ modified = make([]string, 0)
|
|
145
|
+ removed = make([]string, 0)
|
|
146
|
+
|
144
|
147
|
// We expect "from" to be the oldest commit, and "to" to be the most recent
|
145
|
148
|
// one. Because Log() works the other way (in anti-chronological order),
|
146
|
149
|
// we call it with "to" and not "from" because, that way, we'll go from "to"
|
|
@@ -150,7 +153,6 @@ func (r *Repository) LineCountsDeltasIgnoreManagerCommits(
|
150
|
153
|
return
|
151
|
154
|
}
|
152
|
155
|
|
153
|
|
- lineCountsDeltas = make(map[string]int)
|
154
|
156
|
err = iter.ForEach(func(commit *object.Commit) error {
|
155
|
157
|
if commit.Author.Email == r.cfg.CommitsAuthor.Email {
|
156
|
158
|
return nil
|
|
@@ -166,9 +168,16 @@ func (r *Repository) LineCountsDeltasIgnoreManagerCommits(
|
166
|
168
|
}
|
167
|
169
|
|
168
|
170
|
for _, stat := range stats {
|
169
|
|
- // We're getting recent -> old additions and deletions. Because we
|
170
|
|
- // want the opposite (old -> recent), we must invert the sign of both.
|
171
|
|
- lineCountsDeltas[stat.Name] = stat.Deletion - stat.Addition
|
|
171
|
+ _, err := commit.File(stat.Name)
|
|
172
|
+ if err != nil && err != object.ErrFileNotFound {
|
|
173
|
+ return err
|
|
174
|
+ }
|
|
175
|
+
|
|
176
|
+ if err == object.ErrFileNotFound {
|
|
177
|
+ removed = append(removed, stat.Name)
|
|
178
|
+ } else {
|
|
179
|
+ modified = append(modified, stat.Name)
|
|
180
|
+ }
|
172
|
181
|
}
|
173
|
182
|
|
174
|
183
|
return nil
|
|
@@ -177,29 +186,30 @@ func (r *Repository) LineCountsDeltasIgnoreManagerCommits(
|
177
|
186
|
return
|
178
|
187
|
}
|
179
|
188
|
|
180
|
|
-func GetFilesLineCountsAtCommit(commit *object.Commit) (map[string]int, error) {
|
|
189
|
+func (r *Repository) GetFilesContentsAtCommit(commit *object.Commit) (map[string][]byte, error) {
|
|
190
|
+ var content string
|
|
191
|
+
|
181
|
192
|
tree, err := commit.Tree()
|
182
|
193
|
if err != nil {
|
183
|
194
|
return nil, err
|
184
|
195
|
}
|
185
|
196
|
|
186
|
|
- lineCounts := make(map[string]int)
|
|
197
|
+ filesContents := make(map[string][]byte)
|
187
|
198
|
|
188
|
199
|
files := tree.Files()
|
189
|
200
|
|
190
|
|
- var lines []string
|
191
|
201
|
err = files.ForEach(func(file *object.File) error {
|
192
|
|
- lines, err = file.Lines()
|
|
202
|
+ content, err = file.Contents()
|
193
|
203
|
if err != nil {
|
194
|
204
|
return err
|
195
|
205
|
}
|
196
|
206
|
|
197
|
|
- lineCounts[file.Name] = len(lines)
|
|
207
|
+ filesContents[file.Name] = []byte(content)
|
198
|
208
|
|
199
|
209
|
return nil
|
200
|
210
|
})
|
201
|
211
|
|
202
|
|
- return lineCounts, err
|
|
212
|
+ return filesContents, err
|
203
|
213
|
}
|
204
|
214
|
|
205
|
215
|
// getAuth returns the authentication structure instance needed to authenticate
|