-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
// Copyright 2026 Shota FUJI <pockawoooh@gmail.com>
// SPDX-License-Identifier: MIT
package tests
import (
"fmt"
"net/url"
"path/filepath"
"time"
"github.com/go-git/go-billy/v5/osfs"
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing/cache"
"github.com/go-git/go-git/v5/plumbing/object"
"github.com/go-git/go-git/v5/storage/filesystem"
)
func SignatureAlice() *object.Signature {
return &object.Signature{
Name: "Alice",
Email: "alice@example.com",
When: time.Unix(0, 0),
}
}
func CreateRepository(baseDir string, name string) (*git.Repository, *git.Worktree, error) {
fs := osfs.New(filepath.Join(baseDir, name), osfs.WithBoundOS())
dotgit, err := fs.Chroot(".git")
if err != nil {
return nil, nil, err
}
storage := filesystem.NewStorage(dotgit, cache.NewObjectLRUDefault())
repo, err := git.InitWithOptions(storage, fs, git.InitOptions{
DefaultBranch: "refs/heads/trunk",
})
if err != nil {
return nil, nil, fmt.Errorf("Unable to create Git repository: %s", err)
}
wt, err := repo.Worktree()
if err != nil {
return nil, nil, fmt.Errorf("Unable to get Git worktree: %s", err)
}
return repo, wt, nil
}
func CreateBare(baseDir string, name string) error {
storage := filesystem.NewStorage(
osfs.New(filepath.Join(baseDir, fmt.Sprintf("%s.git", name)), osfs.WithBoundOS()),
cache.NewObjectLRUDefault(),
)
target := url.URL{
Scheme: "file",
Path: filepath.Join(baseDir, name),
}
_, err := git.Clone(storage, nil, &git.CloneOptions{
URL: target.String(),
ReferenceName: "refs/heads/trunk",
})
return err
}