diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 2109950ca85ca..577f3e7a2454d 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -1350,6 +1350,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 4a74c1a8944e5..9b5b12ec59607 100644 --- a/services/gitdiff/gitdiff.go +++ b/services/gitdiff/gitdiff.go @@ -358,6 +358,8 @@ type DiffFile struct { IsViewed bool // User specific HasChangedSinceLastReview bool // User specific Language string + Mode string + OldMode string } // GetType returns type of diff file. @@ -577,9 +579,19 @@ parsingLoop: break curFileLoop case strings.HasPrefix(line, "old mode ") || strings.HasPrefix(line, "new mode "): + + if strings.HasPrefix(line, "old mode ") { + curFile.OldMode = strings.ReplaceAll(line, "old mode ", "") + } + if strings.HasPrefix(line, "new mode ") { + curFile.Mode = strings.ReplaceAll(line, "new mode ", "") + } + if strings.HasSuffix(line, " 160000\n") { curFile.IsSubmodule = true } + case strings.HasPrefix(line, "new file mode "): + curFile.Mode = strings.ReplaceAll(line, "new file mode ", "") case strings.HasPrefix(line, "rename from "): curFile.IsRenamed = true curFile.Type = DiffFileRename diff --git a/templates/repo/diff/box.tmpl b/templates/repo/diff/box.tmpl index 4e6879650ddcc..5347a7f49a9bc 100644 --- a/templates/repo/diff/box.tmpl +++ b/templates/repo/diff/box.tmpl @@ -103,6 +103,9 @@ {{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 $showFileViewToggle}}