Skip to content

Commit 952e30d

Browse files
authored
Merge branch 'main' into lunny/migrate_more_storages
2 parents 7cca792 + efaa995 commit 952e30d

File tree

6 files changed

+33
-33
lines changed

6 files changed

+33
-33
lines changed

modules/git/repo_commit.go

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ package git
77

88
import (
99
"bytes"
10+
"encoding/hex"
11+
"fmt"
1012
"io"
1113
"strconv"
1214
"strings"
@@ -209,9 +211,9 @@ func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (
209211
}()
210212
go func() {
211213
stderr := strings.Builder{}
212-
err := NewCommand(repo.Ctx, "log", revision, "--follow",
214+
err := NewCommand(repo.Ctx, "rev-list", revision,
213215
"--max-count="+strconv.Itoa(setting.Git.CommitsRangeSize*page),
214-
prettyLogFormat, "--", file).
216+
"--skip="+strconv.Itoa(skip), "--", file).
215217
Run(&RunOpts{
216218
Dir: repo.Path,
217219
Stdout: stdoutWriter,
@@ -224,32 +226,30 @@ func (repo *Repository) CommitsByFileAndRange(revision, file string, page int) (
224226
}
225227
}()
226228

227-
if skip > 0 {
228-
_, err := io.CopyN(io.Discard, stdoutReader, int64(skip*41))
229-
if err != nil {
229+
commits := []*Commit{}
230+
shaline := [41]byte{}
231+
var sha1 SHA1
232+
for {
233+
n, err := io.ReadFull(stdoutReader, shaline[:])
234+
if err != nil || n < 40 {
230235
if err == io.EOF {
231-
return []*Commit{}, nil
236+
err = nil
232237
}
233-
_ = stdoutReader.CloseWithError(err)
238+
return commits, err
239+
}
240+
n, err = hex.Decode(sha1[:], shaline[0:40])
241+
if n != 20 {
242+
err = fmt.Errorf("invalid sha %q", string(shaline[:40]))
243+
}
244+
if err != nil {
234245
return nil, err
235246
}
247+
commit, err := repo.getCommit(sha1)
248+
if err != nil {
249+
return nil, err
250+
}
251+
commits = append(commits, commit)
236252
}
237-
238-
stdout, err := io.ReadAll(stdoutReader)
239-
if err != nil {
240-
return nil, err
241-
}
242-
return repo.parsePrettyFormatLogToList(stdout)
243-
}
244-
245-
// CommitsByFileAndRangeNoFollow return the commits according revision file and the page
246-
func (repo *Repository) CommitsByFileAndRangeNoFollow(revision, file string, page int) ([]*Commit, error) {
247-
stdout, _, err := NewCommand(repo.Ctx, "log", revision, "--skip="+strconv.Itoa((page-1)*50),
248-
"--max-count="+strconv.Itoa(setting.Git.CommitsRangeSize), prettyLogFormat, "--", file).RunStdBytes(&RunOpts{Dir: repo.Path})
249-
if err != nil {
250-
return nil, err
251-
}
252-
return repo.parsePrettyFormatLogToList(stdout)
253253
}
254254

255255
// FilesCountBetween return the number of files changed between two commits

modules/templates/helper.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -972,11 +972,11 @@ type remoteAddress struct {
972972
Password string
973973
}
974974

975-
func mirrorRemoteAddress(ctx context.Context, m *repo_model.Repository, remoteName string) remoteAddress {
975+
func mirrorRemoteAddress(ctx context.Context, m *repo_model.Repository, remoteName string, ignoreOriginalURL bool) remoteAddress {
976976
a := remoteAddress{}
977977

978978
remoteURL := m.OriginalURL
979-
if remoteURL == "" {
979+
if ignoreOriginalURL || remoteURL == "" {
980980
var err error
981981
remoteURL, err = git.GetRemoteAddress(ctx, m.RepoPath(), remoteName)
982982
if err != nil {

routers/api/v1/repo/wiki.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,9 +427,9 @@ func ListPageRevisions(ctx *context.APIContext) {
427427
}
428428

429429
// get Commit Count
430-
commitsHistory, err := wikiRepo.CommitsByFileAndRangeNoFollow("master", pageFilename, page)
430+
commitsHistory, err := wikiRepo.CommitsByFileAndRange("master", pageFilename, page)
431431
if err != nil {
432-
ctx.Error(http.StatusInternalServerError, "CommitsByFileAndRangeNoFollow", err)
432+
ctx.Error(http.StatusInternalServerError, "CommitsByFileAndRange", err)
433433
return
434434
}
435435

routers/web/repo/wiki.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,12 +360,12 @@ func renderRevisionPage(ctx *context.Context) (*git.Repository, *git.TreeEntry)
360360
}
361361

362362
// get Commit Count
363-
commitsHistory, err := wikiRepo.CommitsByFileAndRangeNoFollow("master", pageFilename, page)
363+
commitsHistory, err := wikiRepo.CommitsByFileAndRange("master", pageFilename, page)
364364
if err != nil {
365365
if wikiRepo != nil {
366366
wikiRepo.Close()
367367
}
368-
ctx.ServerError("CommitsByFileAndRangeNoFollow", err)
368+
ctx.ServerError("CommitsByFileAndRange", err)
369369
return nil, nil
370370
}
371371
ctx.Data["Commits"] = git_model.ConvertFromGitCommit(commitsHistory, ctx.Repo.Repository)

templates/repo/header.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
</div>
3939
</div>
4040
{{if $.IsPullMirror}}
41-
{{$address := MirrorRemoteAddress $.Context . $.Mirror.GetRemoteName}}
41+
{{$address := MirrorRemoteAddress $.Context . $.Mirror.GetRemoteName false}}
4242
<div class="fork-flag">{{$.locale.Tr "repo.mirror_from"}} <a target="_blank" rel="noopener noreferrer" href="{{$address.Address}}">{{$address.Address}}</a></div>
4343
{{end}}
4444
{{if .IsFork}}<div class="fork-flag">{{$.locale.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{.BaseRepo.FullName}}</a></div>{{end}}

templates/repo/settings/options.tmpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
{{if .Repository.IsMirror}}
9292
<tbody>
9393
<tr>
94-
<td>{{(MirrorRemoteAddress $.Context .Repository .Mirror.GetRemoteName).Address}}</td>
94+
<td>{{(MirrorRemoteAddress $.Context .Repository .Mirror.GetRemoteName false).Address}}</td>
9595
<td>{{$.locale.Tr "repo.settings.mirror_settings.direction.pull"}}</td>
9696
<td>{{.Mirror.UpdatedUnix.AsTime}}</td>
9797
<td class="right aligned">
@@ -119,7 +119,7 @@
119119
<label for="interval">{{.locale.Tr "repo.mirror_interval" .MinimumMirrorInterval}}</label>
120120
<input id="interval" name="interval" value="{{.MirrorInterval}}">
121121
</div>
122-
{{$address := MirrorRemoteAddress $.Context .Repository .Mirror.GetRemoteName}}
122+
{{$address := MirrorRemoteAddress $.Context .Repository .Mirror.GetRemoteName false}}
123123
<div class="field {{if .Err_MirrorAddress}}error{{end}}">
124124
<label for="mirror_address">{{.locale.Tr "repo.mirror_address"}}</label>
125125
<input id="mirror_address" name="mirror_address" value="{{$address.Address}}" required>
@@ -168,7 +168,7 @@
168168
<tbody>
169169
{{range .PushMirrors}}
170170
<tr>
171-
{{$address := MirrorRemoteAddress $.Context $.Repository .GetRemoteName}}
171+
{{$address := MirrorRemoteAddress $.Context $.Repository .GetRemoteName true}}
172172
<td>{{$address.Address}}</td>
173173
<td>{{$.locale.Tr "repo.settings.mirror_settings.direction.push"}}</td>
174174
<td>{{if .LastUpdateUnix}}{{.LastUpdateUnix.AsTime}}{{else}}{{$.locale.Tr "never"}}{{end}} {{if .LastError}}<div class="ui red label tooltip" data-content="{{.LastError}}">{{$.locale.Tr "error"}}</div>{{end}}</td>

0 commit comments

Comments
 (0)