]> source.dussan.org Git - gitea.git/commitdiff
Display human-readable text instead of cryptic filemodes (#26352)
authordelvh <dev.lh@web.de>
Sun, 6 Aug 2023 19:52:34 +0000 (21:52 +0200)
committerGitHub <noreply@github.com>
Sun, 6 Aug 2023 19:52:34 +0000 (21:52 +0200)
Now, you don't need to be a git expert anymore to know what these
numbers mean.

## Before

![grafik](https://github.com/go-gitea/gitea/assets/51889757/9a964bf6-10fd-40a6-aeb2-ac8f437f8c32)

## After

![grafik](https://github.com/go-gitea/gitea/assets/51889757/84573cb9-55b6-4dde-9866-95f71b657554)

or when the mode actually changed:

![grafik](https://github.com/go-gitea/gitea/assets/51889757/0f327538-ebdc-40e7-8c99-f9e21b67f638)

options/locale/locale_en-US.ini
services/gitdiff/gitdiff.go
templates/repo/diff/box.tmpl

index b2eeab617e48a832c90b15b4951db4555d1a0061..64bc0c7cc1f44cdd6e7d909648d85bb43c151d50 100644 (file)
@@ -3505,3 +3505,12 @@ variables.update.success = The variable has been edited.
 type-1.display_name = Individual Project
 type-2.display_name = Repository Project
 type-3.display_name = Organization Project
+
+[git.filemode]
+changed_filemode = %[1]s → %[2]s
+# Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
+directory = Directory
+normal_file = Normal file
+executable_file = Executable file
+symbolic_link = Symbolic link
+submodule = Submodule
index 9e1db6fd4353cb096665a1f6b225acd5f9469441..4cb2b1303df4b95e8551f9903641f08f2ff4dd56 100644 (file)
@@ -427,6 +427,23 @@ func (diffFile *DiffFile) ShouldBeHidden() bool {
        return diffFile.IsGenerated || diffFile.IsViewed
 }
 
+func (diffFile *DiffFile) ModeTranslationKey(mode string) string {
+       switch mode {
+       case "040000":
+               return "git.filemode.directory"
+       case "100644":
+               return "git.filemode.normal_file"
+       case "100755":
+               return "git.filemode.executable_file"
+       case "120000":
+               return "git.filemode.symbolic_link"
+       case "160000":
+               return "git.filemode.submodule"
+       default:
+               return mode
+       }
+}
+
 func getCommitFileLineCount(commit *git.Commit, filePath string) int {
        blob, err := commit.GetBlobByPath(filePath)
        if err != nil {
index c4dd1f658d92c6302fdc6ef8ac2d257865f734da..324166b03c1da00746b88c1facc88451163500c0 100644 (file)
                                                                        <span class="ui label">{{$.locale.Tr "repo.diff.vendored"}}</span>
                                                                {{end}}
                                                                {{if and $file.Mode $file.OldMode}}
-                                                                       <span class="gt-ml-4 gt-mono">{{$file.OldMode}} → {{$file.Mode}}</span>
+                                                                       {{$old := $.locale.Tr ($file.ModeTranslationKey $file.OldMode)}}
+                                                                       {{$new := $.locale.Tr ($file.ModeTranslationKey $file.Mode)}}
+                                                                       <span class="gt-ml-4 gt-mono">{{$.locale.Tr "git.filemode.changed_filemode" $old $new}}</span>
                                                                {{else if $file.Mode}}
-                                                                       <span class="gt-ml-4 gt-mono">{{$file.Mode}}</span>
+                                                                       <span class="gt-ml-4 gt-mono">{{$.locale.Tr ($file.ModeTranslationKey $file.Mode)}}</span>
                                                                {{end}}
                                                        </div>
                                                        <div class="diff-file-header-actions gt-df gt-ac gt-gap-2 gt-fw">