Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim Carlbäcker <kim.carlbacker@gmail.com>2017-09-14 01:35:49 +0300
committerKim Carlbäcker <kim.carlbacker@gmail.com>2017-09-14 01:35:49 +0300
commit62545b54ea7acd70a1d4d772fb41af5e54a42348 (patch)
tree8e95a60887959b7a28ec0126eca2c2bddd576334
parent7c418740a47d47e60890eeabc959e5da28d6f82c (diff)
parent5af44c6130d149f1f269c9cc0b6d80b8a3d1b117 (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.md2
-rw-r--r--internal/diff/diff.go18
-rw-r--r--internal/service/diff/commit_test.go1
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",