Skip to content

Commit 9c54fcf

Browse files
committed
Merge branch 'main' of https://github.com/go-gitea/gitea into feature-incoming-email
2 parents 5066d29 + 20e3ffd commit 9c54fcf

File tree

8 files changed

+50
-25
lines changed

8 files changed

+50
-25
lines changed

docs/content/doc/advanced/external-renderers.en-us.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,5 +192,5 @@ And so you could write some CSS:
192192
Add your stylesheet to your custom directory e.g `custom/public/css/my-style-XXXXX.css` and import it using a custom header file `custom/templates/custom/header.tmpl`:
193193

194194
```html
195-
<link type="text/css" href="{{AppSubUrl}}/assets/css/my-style-XXXXX.css" />
195+
<link rel="stylesheet" href="{{AppSubUrl}}/assets/css/my-style-XXXXX.css" />
196196
```

models/fixtures/repository.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
fork_id: 0
2525
is_template: false
2626
template_id: 0
27-
size: 0
27+
size: 6708
2828
is_fsck_enabled: true
2929
close_issues_via_commit_in_any_branch: false
3030

models/repo/update.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ func ChangeRepositoryName(doer *user_model.User, repo *Repository, newRepoName s
184184
return committer.Commit()
185185
}
186186

187-
// UpdateRepoSize updates the repository size, calculating it using util.GetDirectorySize
187+
// UpdateRepoSize updates the repository size, calculating it using getDirectorySize
188188
func UpdateRepoSize(ctx context.Context, repoID, size int64) error {
189189
_, err := db.GetEngine(ctx).ID(repoID).Cols("size").NoAutoTime().Update(&Repository{
190190
Size: size,

modules/markup/external/external.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
package external
55

66
import (
7+
"bytes"
78
"fmt"
89
"io"
910
"os"
@@ -132,11 +133,13 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
132133
if !p.IsInputFile {
133134
cmd.Stdin = input
134135
}
136+
var stderr bytes.Buffer
135137
cmd.Stdout = output
138+
cmd.Stderr = &stderr
136139
process.SetSysProcAttribute(cmd)
137140

138141
if err := cmd.Run(); err != nil {
139-
return fmt.Errorf("%s render run command %s %v failed: %w", p.Name(), commands[0], args, err)
142+
return fmt.Errorf("%s render run command %s %v failed: %w\nStderr: %s", p.Name(), commands[0], args, err, stderr.String())
140143
}
141144
return nil
142145
}

modules/repository/create.go

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"fmt"
99
"os"
1010
"path"
11+
"path/filepath"
1112
"strings"
1213

1314
"code.gitea.io/gitea/models"
@@ -285,9 +286,36 @@ func CreateRepository(doer, u *user_model.User, opts CreateRepoOptions) (*repo_m
285286
return repo, nil
286287
}
287288

288-
// UpdateRepoSize updates the repository size, calculating it using util.GetDirectorySize
289+
const notRegularFileMode = os.ModeSymlink | os.ModeNamedPipe | os.ModeSocket | os.ModeDevice | os.ModeCharDevice | os.ModeIrregular
290+
291+
// getDirectorySize returns the disk consumption for a given path
292+
func getDirectorySize(path string) (int64, error) {
293+
var size int64
294+
err := filepath.WalkDir(path, func(_ string, info os.DirEntry, err error) error {
295+
if err != nil {
296+
if os.IsNotExist(err) { // ignore the error because the file maybe deleted during traversing.
297+
return nil
298+
}
299+
return err
300+
}
301+
if info.IsDir() {
302+
return nil
303+
}
304+
f, err := info.Info()
305+
if err != nil {
306+
return err
307+
}
308+
if (f.Mode() & notRegularFileMode) == 0 {
309+
size += f.Size()
310+
}
311+
return err
312+
})
313+
return size, err
314+
}
315+
316+
// UpdateRepoSize updates the repository size, calculating it using getDirectorySize
289317
func UpdateRepoSize(ctx context.Context, repo *repo_model.Repository) error {
290-
size, err := util.GetDirectorySize(repo.RepoPath())
318+
size, err := getDirectorySize(repo.RepoPath())
291319
if err != nil {
292320
return fmt.Errorf("updateSize: %w", err)
293321
}

modules/repository/create_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,13 @@ func TestUpdateRepositoryVisibilityChanged(t *testing.T) {
168168
assert.NoError(t, err)
169169
assert.True(t, act.IsPrivate)
170170
}
171+
172+
func TestGetDirectorySize(t *testing.T) {
173+
assert.NoError(t, unittest.PrepareTestDatabase())
174+
repo, err := repo_model.GetRepositoryByID(db.DefaultContext, 1)
175+
assert.NoError(t, err)
176+
177+
size, err := getDirectorySize(repo.RepoPath())
178+
assert.NoError(t, err)
179+
assert.EqualValues(t, size, repo.Size)
180+
}

modules/util/path.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,6 @@ func EnsureAbsolutePath(path, absoluteBase string) string {
2222
return filepath.Join(absoluteBase, path)
2323
}
2424

25-
const notRegularFileMode os.FileMode = os.ModeSymlink | os.ModeNamedPipe | os.ModeSocket | os.ModeDevice | os.ModeCharDevice | os.ModeIrregular
26-
27-
// GetDirectorySize returns the disk consumption for a given path
28-
func GetDirectorySize(path string) (int64, error) {
29-
var size int64
30-
err := filepath.Walk(path, func(_ string, info os.FileInfo, err error) error {
31-
if info != nil && (info.Mode()&notRegularFileMode) == 0 {
32-
size += info.Size()
33-
}
34-
return err
35-
})
36-
return size, err
37-
}
38-
3925
// IsDir returns true if given path is a directory,
4026
// or returns false when it's a file or does not exist.
4127
func IsDir(dir string) (bool, error) {

services/mailer/incoming/incoming_test.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ func TestGetContentFromMailReader(t *testing.T) {
8989

9090
env, err := enmime.ReadEnvelope(strings.NewReader(mailString))
9191
assert.NoError(t, err)
92-
content, err := getContentFromMailReader(env)
93-
assert.NoError(t, err)
92+
content := getContentFromMailReader(env)
9493
assert.Equal(t, "mail content", content.Content)
9594
assert.Len(t, content.Attachments, 1)
9695
assert.Equal(t, "attachment.txt", content.Attachments[0].Name)
@@ -111,8 +110,7 @@ func TestGetContentFromMailReader(t *testing.T) {
111110

112111
env, err = enmime.ReadEnvelope(strings.NewReader(mailString))
113112
assert.NoError(t, err)
114-
content, err = getContentFromMailReader(env)
115-
assert.NoError(t, err)
113+
content = getContentFromMailReader(env)
116114
assert.Equal(t, "mail content", content.Content)
117115
assert.Empty(t, content.Attachments)
118116

@@ -133,7 +131,7 @@ func TestGetContentFromMailReader(t *testing.T) {
133131

134132
env, err = enmime.ReadEnvelope(strings.NewReader(mailString))
135133
assert.NoError(t, err)
136-
content, err = getContentFromMailReader(env)
134+
content = getContentFromMailReader(env)
137135
assert.NoError(t, err)
138136
assert.Equal(t, "mail content without signature", content.Content)
139137
assert.Empty(t, content.Attachments)

0 commit comments

Comments
 (0)