diff options
author | Kim Carlbäcker <kim.carlbacker@gmail.com> | 2017-09-14 01:35:49 +0300 |
---|---|---|
committer | Kim Carlbäcker <kim.carlbacker@gmail.com> | 2017-09-14 01:35:49 +0300 |
commit | 62545b54ea7acd70a1d4d772fb41af5e54a42348 (patch) | |
tree | 8e95a60887959b7a28ec0126eca2c2bddd576334 | |
parent | 7c418740a47d47e60890eeabc959e5da28d6f82c (diff) | |
parent | 5af44c6130d149f1f269c9cc0b6d80b8a3d1b117 (diff) |
Merge branch 'fix/consume-diff-binary-notice' into 'master'
Consume diff binary notice as a patch
Closes #558
See merge request !349
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | internal/diff/diff.go | 18 | ||||
-rw-r--r-- | internal/service/diff/commit_test.go | 1 |
3 files changed, 8 insertions, 13 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index bdc1f749f..d9aef8311 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ UNRELEASED https://gitlab.com/gitlab-org/gitaly/merge_requests/339 - Fix diff parsing when the last 10 bytes of a stream contain newlines https://gitlab.com/gitlab-org/gitaly/merge_requests/348 +- Consume diff binary notice as a patch + https://gitlab.com/gitlab-org/gitaly/merge_requests/349 v0.39.0 - Reimplement FindAllTags RPC in Ruby diff --git a/internal/diff/diff.go b/internal/diff/diff.go index ef5aca2bd..e6b68b9ab 100644 --- a/internal/diff/diff.go +++ b/internal/diff/diff.go @@ -134,13 +134,11 @@ func (parser *Parser) Parse() bool { if bytes.HasPrefix(line, []byte("diff --git")) { break - } else if bytes.HasPrefix(line, []byte("Binary")) { - parser.consumeBinaryNotice() } else if bytes.HasPrefix(line, []byte("@@")) { parser.consumeChunkLine() } else if helper.ByteSliceHasAnyPrefix(line, "---", "+++") { parser.consumeLine(true) - } else if helper.ByteSliceHasAnyPrefix(line, "-", "+", " ", "\\") { + } else if helper.ByteSliceHasAnyPrefix(line, "-", "+", " ", "\\", "Binary") { parser.consumeChunkLine() } else { parser.consumeLine(false) @@ -339,22 +337,16 @@ func (parser *Parser) consumeChunkLine() { return } + if bytes.HasPrefix(line, []byte("Binary")) { + parser.currentDiff.Binary = true + } + parser.currentDiff.Patch = append(parser.currentDiff.Patch, line...) parser.currentDiff.lineCount++ parser.linesProcessed++ parser.bytesProcessed += len(line) } -func (parser *Parser) consumeBinaryNotice() { - _, err := parser.patchReader.ReadBytes('\n') - if err != nil && err != io.EOF { - parser.err = fmt.Errorf("read binary notice: %v", err) - return - } - - parser.currentDiff.Binary = true -} - func (parser *Parser) consumeLine(updateStats bool) { line, err := parser.patchReader.ReadBytes('\n') if err != nil && err != io.EOF { diff --git a/internal/service/diff/commit_test.go b/internal/service/diff/commit_test.go index 8ea4c8de9..3817ff3f6 100644 --- a/internal/service/diff/commit_test.go +++ b/internal/service/diff/commit_test.go @@ -71,6 +71,7 @@ func TestSuccessfulCommitDiffRequest(t *testing.T) { FromPath: []byte("gitaly/logo-white.png"), ToPath: []byte("gitaly/logo-white.png"), Binary: true, + Patch: []byte("Binary files /dev/null and b/gitaly/logo-white.png differ\n"), }, { FromID: "ead5a0eee1391308803cfebd8a2a8530495645eb", |