summaryrefslogtreecommitdiffstats
path: root/services/gitdiff
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-10-22 00:08:44 +0100
committerGitHub <noreply@github.com>2020-10-21 19:08:44 -0400
commit327f18c3b28225dcfcaa0409b880136f7e1d1bf6 (patch)
tree52db7ee62a56ac13e568820266c4f06599b536e2 /services/gitdiff
parentf6ee7ce9b6da6abcb32f3d7d90f34dbe3b01bb41 (diff)
downloadgitea-327f18c3b28225dcfcaa0409b880136f7e1d1bf6.tar.gz
gitea-327f18c3b28225dcfcaa0409b880136f7e1d1bf6.zip
Fix initial commit page & binary munching problem (#13249)
* Fix initial commit page Unfortunately as a result of properly fixing ParsePatch the hack that used git show <initial_commit_id> to get the diff for this failed. This PR fixes this using the "super-secret" empty tree ref to make the diff against. Signed-off-by: Andrew Thornton <art27@cantab.net> * Also fix #13248 Signed-off-by: Andrew Thornton <art27@cantab.net> * Update services/gitdiff/gitdiff.go Co-authored-by: 6543 <6543@obermui.de>
Diffstat (limited to 'services/gitdiff')
-rw-r--r--services/gitdiff/gitdiff.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go
index 164e1c0ca5..7acf8324c3 100644
--- a/services/gitdiff/gitdiff.go
+++ b/services/gitdiff/gitdiff.go
@@ -530,6 +530,8 @@ parsingLoop:
break parsingLoop
}
switch {
+ case strings.HasPrefix(line, cmdDiffHead):
+ break curFileLoop
case strings.HasPrefix(line, "old mode ") ||
strings.HasPrefix(line, "new mode "):
if strings.HasSuffix(line, " 160000\n") {
@@ -850,7 +852,14 @@ func GetDiffRangeWithWhitespaceBehavior(repoPath, beforeCommitID, afterCommitID
defer cancel()
var cmd *exec.Cmd
if (len(beforeCommitID) == 0 || beforeCommitID == git.EmptySHA) && commit.ParentCount() == 0 {
- cmd = exec.CommandContext(ctx, git.GitExecutable, "show", afterCommitID)
+ diffArgs := []string{"diff", "--src-prefix=\\a/", "--dst-prefix=\\b/", "-M"}
+ if len(whitespaceBehavior) != 0 {
+ diffArgs = append(diffArgs, whitespaceBehavior)
+ }
+ // append empty tree ref
+ diffArgs = append(diffArgs, "4b825dc642cb6eb9a060e54bf8d69288fbee4904")
+ diffArgs = append(diffArgs, afterCommitID)
+ cmd = exec.CommandContext(ctx, git.GitExecutable, diffArgs...)
} else {
actualBeforeCommitID := beforeCommitID
if len(actualBeforeCommitID) == 0 {