mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-29 15:13:53 +03:00
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>
This commit is contained in:
parent
f6ee7ce9b6
commit
327f18c3b2
1 changed files with 10 additions and 1 deletions
|
@ -530,6 +530,8 @@ parsingLoop:
|
||||||
break parsingLoop
|
break parsingLoop
|
||||||
}
|
}
|
||||||
switch {
|
switch {
|
||||||
|
case strings.HasPrefix(line, cmdDiffHead):
|
||||||
|
break curFileLoop
|
||||||
case strings.HasPrefix(line, "old mode ") ||
|
case strings.HasPrefix(line, "old mode ") ||
|
||||||
strings.HasPrefix(line, "new mode "):
|
strings.HasPrefix(line, "new mode "):
|
||||||
if strings.HasSuffix(line, " 160000\n") {
|
if strings.HasSuffix(line, " 160000\n") {
|
||||||
|
@ -850,7 +852,14 @@ func GetDiffRangeWithWhitespaceBehavior(repoPath, beforeCommitID, afterCommitID
|
||||||
defer cancel()
|
defer cancel()
|
||||||
var cmd *exec.Cmd
|
var cmd *exec.Cmd
|
||||||
if (len(beforeCommitID) == 0 || beforeCommitID == git.EmptySHA) && commit.ParentCount() == 0 {
|
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 {
|
} else {
|
||||||
actualBeforeCommitID := beforeCommitID
|
actualBeforeCommitID := beforeCommitID
|
||||||
if len(actualBeforeCommitID) == 0 {
|
if len(actualBeforeCommitID) == 0 {
|
||||||
|
|
Loading…
Reference in a new issue