From c845f119b3ca42dcec89c1adf47f2bf313945794 Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Sun, 28 May 2023 15:15:44 +0300 Subject: [PATCH 01/10] Display file mode for new file and file mode changes --- options/locale/locale_en-US.ini | 1 + services/gitdiff/gitdiff.go | 26 ++++++++++++++++++++++---- templates/repo/diff/box.tmpl | 6 ++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 16dbb0948d47d..29439ec22ce53 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1414,6 +1414,7 @@ issues.action_check_all = Check/Uncheck all items issues.opened_by = opened %[1]s by %[3]s pulls.merged_by = by %[3]s was merged %[1]s pulls.merged_by_fake = by %[2]s was merged %[1]s +pulls.changed_file_mode = %[1]s → %[2]s issues.closed_by = by %[3]s was closed %[1]s issues.opened_by_fake = opened %[1]s by %[2]s issues.closed_by_fake = by %[2]s was closed %[1]s diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 73474cf248c16..8980bdefb412e 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -371,6 +371,8 @@ type DiffFile struct { IsViewed bool // User specific HasChangedSinceLastReview bool // User specific Language string + Mode string + OldMode string } // GetType returns type of diff file. @@ -501,6 +503,11 @@ func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader, ski } return diff, err } + + prepareValue := func(src string, prefix string) string { + return strings.TrimSpace(strings.TrimPrefix(src, prefix)) + } + parsingLoop: for { // 1. A patch file always begins with `diff --git ` + `a/path b/path` (possibly quoted) @@ -585,38 +592,49 @@ parsingLoop: } break parsingLoop } + switch { case strings.HasPrefix(line, cmdDiffHead): break curFileLoop case strings.HasPrefix(line, "old mode ") || strings.HasPrefix(line, "new mode "): + + if strings.HasPrefix(line, "old mode ") { + curFile.OldMode = prepareValue(line, "old mode ") + } + if strings.HasPrefix(line, "new mode ") { + curFile.Mode = prepareValue(line, "new mode ") + } + if strings.HasSuffix(line, " 160000\n") { curFile.IsSubmodule = true } + case strings.HasPrefix(line, "new file mode "): + curFile.Mode = strings.TrimPrefix(line, "new file mode ") case strings.HasPrefix(line, "rename from "): curFile.IsRenamed = true curFile.Type = DiffFileRename if curFile.IsAmbiguous { - curFile.OldName = line[len("rename from ") : len(line)-1] + curFile.OldName = prepareValue(line, "rename from ") } case strings.HasPrefix(line, "rename to "): curFile.IsRenamed = true curFile.Type = DiffFileRename if curFile.IsAmbiguous { - curFile.Name = line[len("rename to ") : len(line)-1] + curFile.Name = prepareValue(line, "rename to ") curFile.IsAmbiguous = false } case strings.HasPrefix(line, "copy from "): curFile.IsRenamed = true curFile.Type = DiffFileCopy if curFile.IsAmbiguous { - curFile.OldName = line[len("copy from ") : len(line)-1] + curFile.OldName = prepareValue(line, "copy from ") } case strings.HasPrefix(line, "copy to "): curFile.IsRenamed = true curFile.Type = DiffFileCopy if curFile.IsAmbiguous { - curFile.Name = line[len("copy to ") : len(line)-1] + curFile.Name = prepareValue(line, "copy to ") curFile.IsAmbiguous = false } case strings.HasPrefix(line, "new file"): diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 292a7dd2bd33e..8a250b9810bb7 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -113,6 +113,12 @@ {{if $file.IsVendored}} {{$.locale.Tr "repo.diff.vendored"}} {{end}} + {{if and $file.Mode $file.OldMode}} + {{$.locale.Tr "repo.pulls.changed_file_mode" $file.OldMode $file.Mode}} + {{end}} + {{if and $file.Mode (not $file.OldMode)}} + {{$.locale.Tr "repo.pulls.changed_file_mode" "0" $file.Mode}} + {{end}}
{{if $showFileViewToggle}} From 5ae2265aa2a38bb894cf2697c5d63154ec4439ed Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Sun, 28 May 2023 16:31:25 +0300 Subject: [PATCH 02/10] fix arrow --- options/locale/locale_en-US.ini | 1 - templates/repo/diff/box.tmpl | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 29439ec22ce53..16dbb0948d47d 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1414,7 +1414,6 @@ issues.action_check_all = Check/Uncheck all items issues.opened_by = opened %[1]s by %[3]s pulls.merged_by = by %[3]s was merged %[1]s pulls.merged_by_fake = by %[2]s was merged %[1]s -pulls.changed_file_mode = %[1]s → %[2]s issues.closed_by = by %[3]s was closed %[1]s issues.opened_by_fake = opened %[1]s by %[2]s issues.closed_by_fake = by %[2]s was closed %[1]s diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 8a250b9810bb7..9df95508b3cca 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -114,10 +114,10 @@ {{$.locale.Tr "repo.diff.vendored"}} {{end}} {{if and $file.Mode $file.OldMode}} - {{$.locale.Tr "repo.pulls.changed_file_mode" $file.OldMode $file.Mode}} + {{$file.OldMode}} → {{$file.Mode}} {{end}} {{if and $file.Mode (not $file.OldMode)}} - {{$.locale.Tr "repo.pulls.changed_file_mode" "0" $file.Mode}} + 0 → {{$file.Mode}} {{end}}
From 25e0b8fd202ce39f3f71a4969535775be01253b8 Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Sun, 28 May 2023 16:40:51 +0300 Subject: [PATCH 03/10] fix lint --- services/gitdiff/gitdiff.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 8980bdefb412e..48e20d9a4dfe2 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -504,8 +504,8 @@ func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader, ski return diff, err } - prepareValue := func(src string, prefix string) string { - return strings.TrimSpace(strings.TrimPrefix(src, prefix)) + prepareValue := func(s, p string) string { + return strings.TrimSpace(strings.TrimPrefix(s, p)) } parsingLoop: From ff78dc4d93e4737e2a9f2be3ef345af2669c3971 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 28 May 2023 18:32:18 +0200 Subject: [PATCH 04/10] Reduce margin --- templates/repo/diff/box.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 9df95508b3cca..bf0aed2cb251b 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -114,10 +114,10 @@ {{$.locale.Tr "repo.diff.vendored"}} {{end}} {{if and $file.Mode $file.OldMode}} - {{$file.OldMode}} → {{$file.Mode}} + {{$file.OldMode}} → {{$file.Mode}} {{end}} {{if and $file.Mode (not $file.OldMode)}} - 0 → {{$file.Mode}} + 0 → {{$file.Mode}} {{end}}
From 0a39e7861f6ccbbfd7a3ac98d9ad2ac1fc4670c2 Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 28 May 2023 18:35:00 +0200 Subject: [PATCH 05/10] Remove ui class --- templates/repo/diff/box.tmpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index bf0aed2cb251b..dcced0b5b1362 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -114,10 +114,10 @@ {{$.locale.Tr "repo.diff.vendored"}} {{end}} {{if and $file.Mode $file.OldMode}} - {{$file.OldMode}} → {{$file.Mode}} + {{$file.OldMode}} → {{$file.Mode}} {{end}} {{if and $file.Mode (not $file.OldMode)}} - 0 → {{$file.Mode}} + 0 → {{$file.Mode}} {{end}}
From ff0954aa905340d587c31f0c16e50e70c2b7c09d Mon Sep 17 00:00:00 2001 From: silverwind Date: Sun, 28 May 2023 19:23:08 +0200 Subject: [PATCH 06/10] Update templates/repo/diff/box.tmpl Co-authored-by: delvh --- templates/repo/diff/box.tmpl | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index dcced0b5b1362..31a8129810141 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -115,8 +115,7 @@ {{end}} {{if and $file.Mode $file.OldMode}} {{$file.OldMode}} → {{$file.Mode}} - {{end}} - {{if and $file.Mode (not $file.OldMode)}} + {{else if $file.Mode}} 0 → {{$file.Mode}} {{end}}
From 46fa371a1496f770e98e2a9f162d1d803701b17e Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Sun, 28 May 2023 23:17:43 +0300 Subject: [PATCH 07/10] revert to old way --- services/gitdiff/gitdiff.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 48e20d9a4dfe2..4cb77bfb7fb35 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -503,11 +503,6 @@ func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader, ski } return diff, err } - - prepareValue := func(s, p string) string { - return strings.TrimSpace(strings.TrimPrefix(s, p)) - } - parsingLoop: for { // 1. A patch file always begins with `diff --git ` + `a/path b/path` (possibly quoted) @@ -592,7 +587,6 @@ parsingLoop: } break parsingLoop } - switch { case strings.HasPrefix(line, cmdDiffHead): break curFileLoop @@ -600,41 +594,41 @@ parsingLoop: strings.HasPrefix(line, "new mode "): if strings.HasPrefix(line, "old mode ") { - curFile.OldMode = prepareValue(line, "old mode ") + curFile.OldMode = line[len("old mode ") : len(line)-1] } if strings.HasPrefix(line, "new mode ") { - curFile.Mode = prepareValue(line, "new mode ") + curFile.Mode = line[len("new mode ") : len(line)-1] } if strings.HasSuffix(line, " 160000\n") { curFile.IsSubmodule = true } case strings.HasPrefix(line, "new file mode "): - curFile.Mode = strings.TrimPrefix(line, "new file mode ") + curFile.Mode = line[len("new file mode ") : len(line)-1] case strings.HasPrefix(line, "rename from "): curFile.IsRenamed = true curFile.Type = DiffFileRename if curFile.IsAmbiguous { - curFile.OldName = prepareValue(line, "rename from ") + curFile.OldName = line[len("rename from ") : len(line)-1] } case strings.HasPrefix(line, "rename to "): curFile.IsRenamed = true curFile.Type = DiffFileRename if curFile.IsAmbiguous { - curFile.Name = prepareValue(line, "rename to ") + curFile.Name = line[len("rename to ") : len(line)-1] curFile.IsAmbiguous = false } case strings.HasPrefix(line, "copy from "): curFile.IsRenamed = true curFile.Type = DiffFileCopy if curFile.IsAmbiguous { - curFile.OldName = prepareValue(line, "copy from ") + curFile.OldName = line[len("copy from ") : len(line)-1] } case strings.HasPrefix(line, "copy to "): curFile.IsRenamed = true curFile.Type = DiffFileCopy if curFile.IsAmbiguous { - curFile.Name = prepareValue(line, "copy to ") + curFile.Name = line[len("copy to ") : len(line)-1] curFile.IsAmbiguous = false } case strings.HasPrefix(line, "new file"): From 0e3b68bab22e44422451231590b477c3fb7db11b Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Mon, 29 May 2023 04:17:13 +0300 Subject: [PATCH 08/10] Revert "revert to old way" This reverts commit 436539d01c41c201d76237255e9e63a0a6651d9e. --- services/gitdiff/gitdiff.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 4cb77bfb7fb35..48e20d9a4dfe2 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -503,6 +503,11 @@ func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader, ski } return diff, err } + + prepareValue := func(s, p string) string { + return strings.TrimSpace(strings.TrimPrefix(s, p)) + } + parsingLoop: for { // 1. A patch file always begins with `diff --git ` + `a/path b/path` (possibly quoted) @@ -587,6 +592,7 @@ parsingLoop: } break parsingLoop } + switch { case strings.HasPrefix(line, cmdDiffHead): break curFileLoop @@ -594,41 +600,41 @@ parsingLoop: strings.HasPrefix(line, "new mode "): if strings.HasPrefix(line, "old mode ") { - curFile.OldMode = line[len("old mode ") : len(line)-1] + curFile.OldMode = prepareValue(line, "old mode ") } if strings.HasPrefix(line, "new mode ") { - curFile.Mode = line[len("new mode ") : len(line)-1] + curFile.Mode = prepareValue(line, "new mode ") } if strings.HasSuffix(line, " 160000\n") { curFile.IsSubmodule = true } case strings.HasPrefix(line, "new file mode "): - curFile.Mode = line[len("new file mode ") : len(line)-1] + curFile.Mode = strings.TrimPrefix(line, "new file mode ") case strings.HasPrefix(line, "rename from "): curFile.IsRenamed = true curFile.Type = DiffFileRename if curFile.IsAmbiguous { - curFile.OldName = line[len("rename from ") : len(line)-1] + curFile.OldName = prepareValue(line, "rename from ") } case strings.HasPrefix(line, "rename to "): curFile.IsRenamed = true curFile.Type = DiffFileRename if curFile.IsAmbiguous { - curFile.Name = line[len("rename to ") : len(line)-1] + curFile.Name = prepareValue(line, "rename to ") curFile.IsAmbiguous = false } case strings.HasPrefix(line, "copy from "): curFile.IsRenamed = true curFile.Type = DiffFileCopy if curFile.IsAmbiguous { - curFile.OldName = line[len("copy from ") : len(line)-1] + curFile.OldName = prepareValue(line, "copy from ") } case strings.HasPrefix(line, "copy to "): curFile.IsRenamed = true curFile.Type = DiffFileCopy if curFile.IsAmbiguous { - curFile.Name = line[len("copy to ") : len(line)-1] + curFile.Name = prepareValue(line, "copy to ") curFile.IsAmbiguous = false } case strings.HasPrefix(line, "new file"): From 597f091d495ffd67000b94a01ad0c75520f03393 Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Mon, 29 May 2023 04:18:47 +0300 Subject: [PATCH 09/10] fix TestAPIViewPulls --- services/gitdiff/gitdiff.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go index 48e20d9a4dfe2..b6a75f60982f2 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -609,8 +609,6 @@ parsingLoop: if strings.HasSuffix(line, " 160000\n") { curFile.IsSubmodule = true } - case strings.HasPrefix(line, "new file mode "): - curFile.Mode = strings.TrimPrefix(line, "new file mode ") case strings.HasPrefix(line, "rename from "): curFile.IsRenamed = true curFile.Type = DiffFileRename @@ -640,6 +638,9 @@ parsingLoop: case strings.HasPrefix(line, "new file"): curFile.Type = DiffFileAdd curFile.IsCreated = true + if strings.HasPrefix(line, "new file mode ") { + curFile.Mode = prepareValue(line, "new file mode ") + } if strings.HasSuffix(line, " 160000\n") { curFile.IsSubmodule = true } From 03477d5dc75a5c311c673bddafce66fc88b71dfc Mon Sep 17 00:00:00 2001 From: Yevhen Pavlov Date: Mon, 29 May 2023 11:56:54 +0300 Subject: [PATCH 10/10] =?UTF-8?q?Remove=200=20=E2=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/repo/diff/box.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 31a8129810141..132f999808cc6 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -116,7 +116,7 @@ {{if and $file.Mode $file.OldMode}} {{$file.OldMode}} → {{$file.Mode}} {{else if $file.Mode}} - 0 → {{$file.Mode}} + {{$file.Mode}} {{end}}