diff options
| author | 2026-03-07 18:09:20 +0800 | |
|---|---|---|
| committer | 2026-03-07 18:17:54 +0800 | |
| commit | e667c3c52a535ee67fe895bb0240fbad6e920087 (patch) | |
| tree | 0815f7cc9b2c4a06d00722bce4c3ac57c515288b /repository | |
| parent | receivepack: Connect protocol with service (diff) | |
| signature | No signature | |
refstore/files: Accept timeout instead of reading from config
And split things up again.
Diffstat (limited to 'repository')
| -rw-r--r-- | repository/open.go | 2 | ||||
| -rw-r--r-- | repository/refs.go | 5 | ||||
| -rw-r--r-- | repository/refs_timeout.go | 16 |
3 files changed, 20 insertions, 3 deletions
diff --git a/repository/open.go b/repository/open.go index 3789cc43..f1bff5da 100644 --- a/repository/open.go +++ b/repository/open.go @@ -36,7 +36,7 @@ func Open(root *os.Root) (repo *Repository, err error) { repo.objects = objects repo.objectsLooseForWritingOnly = objectsLooseForWritingOnly - refs, err := openRefStore(root, algo) + refs, err := openRefStore(root, algo, detectPackedRefsTimeout(cfg)) if err != nil { return nil, err } diff --git a/repository/refs.go b/repository/refs.go index 7c978ed3..a695252d 100644 --- a/repository/refs.go +++ b/repository/refs.go @@ -3,6 +3,7 @@ package repository import ( "fmt" "os" + "time" "codeberg.org/lindenii/furgit/objectid" "codeberg.org/lindenii/furgit/refstore" @@ -10,13 +11,13 @@ import ( ) //nolint:ireturn -func openRefStore(root *os.Root, algo objectid.Algorithm) (out refstore.ReadingStore, err error) { +func openRefStore(root *os.Root, algo objectid.Algorithm, packedRefsTimeout time.Duration) (out refstore.ReadingStore, err error) { refRoot, err := root.OpenRoot(".") if err != nil { return nil, fmt.Errorf("repository: open root for refs: %w", err) } - store, err := reffiles.New(refRoot, algo) + store, err := reffiles.New(refRoot, algo, packedRefsTimeout) if err != nil { _ = refRoot.Close() diff --git a/repository/refs_timeout.go b/repository/refs_timeout.go new file mode 100644 index 00000000..275613ba --- /dev/null +++ b/repository/refs_timeout.go @@ -0,0 +1,16 @@ +package repository + +import ( + "time" + + "codeberg.org/lindenii/furgit/config" +) + +func detectPackedRefsTimeout(cfg *config.Config) time.Duration { + timeoutValue, err := cfg.Lookup("core", "", "packedrefstimeout").Int() + if err != nil { + return time.Second + } + + return time.Duration(timeoutValue) * time.Millisecond +} |
