mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 10:56:10 +01:00 
			
		
		
		
	Display file mode for new file and file mode changes (#24966)
This MR introduces the addition of file mode display support for both new file creation and file mode changes, following a similar approach as GitLab. GitLab:  Gitea:  Replaces: https://github.com/go-gitea/gitea/pull/23159 Closes: https://github.com/go-gitea/gitea/issues/23021 --------- Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: Giteabot <teabot@gitea.io>
This commit is contained in:
		| @@ -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(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) | ||||
| @@ -585,11 +592,20 @@ 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 | ||||
| 				} | ||||
| @@ -597,31 +613,34 @@ parsingLoop: | ||||
| 				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"): | ||||
| 				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 | ||||
| 				} | ||||
|   | ||||
| @@ -113,6 +113,11 @@ | ||||
| 									{{if $file.IsVendored}} | ||||
| 										<span class="ui label gt-ml-3">{{$.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> | ||||
| 									{{else if $file.Mode}} | ||||
| 										<span class="gt-ml-4 gt-mono">{{$file.Mode}}</span> | ||||
| 									{{end}} | ||||
| 								</div> | ||||
| 								<div class="diff-file-header-actions gt-df gt-ac"> | ||||
| 									{{if $showFileViewToggle}} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user