Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2021-07-19 11:33:08 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2021-07-20 09:48:15 +0300
commit74e714e40dcbcc4550e318db689873a6db25b77c (patch)
tree1aa9fa28d618903c5d3e0c6938bb02e410844066
parentea5021b4eab2de65dd44c153159d8b0e7cbb40af (diff)
git2go: Inject repository into subcommands
In order to support use of alternative object directories for a repository, we'll need to inject it into subcommands such that we can extract relevant information. Add a `repository.GitRepo` parameter to all subcommands to enable for this. No functional change is expected from this commit given that we do not yet use the repository.
-rw-r--r--cmd/gitaly-git2go/cherry_pick_test.go8
-rw-r--r--cmd/gitaly-git2go/conflicts/conflicts_test.go4
-rw-r--r--cmd/gitaly-git2go/merge_test.go17
-rw-r--r--cmd/gitaly-git2go/rebase_test.go8
-rw-r--r--cmd/gitaly-git2go/revert_test.go8
-rw-r--r--cmd/gitaly-git2go/submodule_test.go2
-rw-r--r--internal/git2go/apply.go5
-rw-r--r--internal/git2go/apply_test.go14
-rw-r--r--internal/git2go/cherry_pick.go5
-rw-r--r--internal/git2go/commit.go5
-rw-r--r--internal/git2go/commit_test.go2
-rw-r--r--internal/git2go/conflicts.go5
-rw-r--r--internal/git2go/executor.go7
-rw-r--r--internal/git2go/merge.go6
-rw-r--r--internal/git2go/rebase.go5
-rw-r--r--internal/git2go/resolve_conflicts.go5
-rw-r--r--internal/git2go/revert.go5
-rw-r--r--internal/git2go/set_config.go6
-rw-r--r--internal/git2go/submodule.go6
-rw-r--r--internal/gitaly/service/conflicts/list_conflict_files.go2
-rw-r--r--internal/gitaly/service/conflicts/resolve_conflicts.go2
-rw-r--r--internal/gitaly/service/operations/cherry_pick.go2
-rw-r--r--internal/gitaly/service/operations/commit_files.go2
-rw-r--r--internal/gitaly/service/operations/merge.go4
-rw-r--r--internal/gitaly/service/operations/rebase.go2
-rw-r--r--internal/gitaly/service/operations/revert.go2
-rw-r--r--internal/gitaly/service/operations/submodules.go2
-rw-r--r--internal/gitaly/service/remote/update_remote_mirror_test.go28
-rw-r--r--internal/gitaly/service/repository/config.go2
29 files changed, 99 insertions, 72 deletions
diff --git a/cmd/gitaly-git2go/cherry_pick_test.go b/cmd/gitaly-git2go/cherry_pick_test.go
index 59ec48468..1f4852fea 100644
--- a/cmd/gitaly-git2go/cherry_pick_test.go
+++ b/cmd/gitaly-git2go/cherry_pick_test.go
@@ -17,7 +17,7 @@ import (
)
func TestCherryPick_validation(t *testing.T) {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repo, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
@@ -71,7 +71,7 @@ func TestCherryPick_validation(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- _, err := executor.CherryPick(ctx, tc.request)
+ _, err := executor.CherryPick(ctx, repo, tc.request)
require.EqualError(t, err, tc.expectedErr)
})
}
@@ -145,7 +145,7 @@ func TestCherryPick(t *testing.T) {
},
}
for _, tc := range testcases {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repo, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
@@ -169,7 +169,7 @@ func TestCherryPick(t *testing.T) {
When: time.Date(2021, 1, 17, 14, 45, 51, 0, time.FixedZone("", +2*60*60)),
}
- response, err := executor.CherryPick(ctx, git2go.CherryPickCommand{
+ response, err := executor.CherryPick(ctx, repo, git2go.CherryPickCommand{
Repository: repoPath,
CommitterName: committer.Name,
CommitterMail: committer.Email,
diff --git a/cmd/gitaly-git2go/conflicts/conflicts_test.go b/cmd/gitaly-git2go/conflicts/conflicts_test.go
index cb9c381ef..b7d457aa8 100644
--- a/cmd/gitaly-git2go/conflicts/conflicts_test.go
+++ b/cmd/gitaly-git2go/conflicts/conflicts_test.go
@@ -176,7 +176,7 @@ func TestConflicts(t *testing.T) {
}
for _, tc := range testcases {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repo, repoPath := testcfg.BuildWithRepo(t)
executor := git2go.NewExecutor(cfg)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
@@ -189,7 +189,7 @@ func TestConflicts(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- response, err := executor.Conflicts(ctx, git2go.ConflictsCommand{
+ response, err := executor.Conflicts(ctx, repo, git2go.ConflictsCommand{
Repository: repoPath,
Ours: ours.String(),
Theirs: theirs.String(),
diff --git a/cmd/gitaly-git2go/merge_test.go b/cmd/gitaly-git2go/merge_test.go
index 740f3456a..0afd5dc1d 100644
--- a/cmd/gitaly-git2go/merge_test.go
+++ b/cmd/gitaly-git2go/merge_test.go
@@ -15,10 +15,11 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/git2go"
"gitlab.com/gitlab-org/gitaly/v14/internal/testhelper"
"gitlab.com/gitlab-org/gitaly/v14/internal/testhelper/testcfg"
+ "gitlab.com/gitlab-org/gitaly/v14/proto/go/gitalypb"
)
func TestMergeFailsWithMissingArguments(t *testing.T) {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repo, repoPath := testcfg.BuildWithRepo(t)
executor := git2go.NewExecutor(cfg)
testcases := []struct {
@@ -67,7 +68,7 @@ func TestMergeFailsWithMissingArguments(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- _, err := executor.Merge(ctx, tc.request)
+ _, err := executor.Merge(ctx, repo, tc.request)
require.Error(t, err)
require.Equal(t, tc.expectedErr, err.Error())
})
@@ -82,7 +83,7 @@ func TestMergeFailsWithInvalidRepositoryPath(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- _, err := executor.Merge(ctx, git2go.MergeCommand{
+ _, err := executor.Merge(ctx, &gitalypb.Repository{}, git2go.MergeCommand{
Repository: "/does/not/exist", AuthorName: "Foo", AuthorMail: "foo@example.com", Message: "Foo", Ours: "HEAD", Theirs: "HEAD",
})
require.Error(t, err)
@@ -177,7 +178,7 @@ func TestMergeTrees(t *testing.T) {
}
for _, tc := range testcases {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repoProto, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
@@ -191,7 +192,7 @@ func TestMergeTrees(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- response, err := executor.Merge(ctx, git2go.MergeCommand{
+ response, err := executor.Merge(ctx, repoProto, git2go.MergeCommand{
Repository: repoPath,
AuthorName: "John Doe",
AuthorMail: "john.doe@example.com",
@@ -241,7 +242,7 @@ func TestMerge_recursive(t *testing.T) {
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
- _, repoPath, cleanup := gittest.InitBareRepoAt(t, cfg, cfg.Storages[0])
+ repoProto, repoPath, cleanup := gittest.InitBareRepoAt(t, cfg, cfg.Storages[0])
defer cleanup()
base := cmdtesthelper.BuildCommit(t, repoPath, nil, map[string]string{"base": "base\n"})
@@ -298,7 +299,7 @@ func TestMerge_recursive(t *testing.T) {
// cases. We thus expect a merge conflict, which unfortunately
// demonstrates that restricting the recursion limit may cause us to
// fail resolution.
- _, err := executor.Merge(ctx, git2go.MergeCommand{
+ _, err := executor.Merge(ctx, repoProto, git2go.MergeCommand{
Repository: repoPath,
AuthorName: "John Doe",
AuthorMail: "john.doe@example.com",
@@ -313,7 +314,7 @@ func TestMerge_recursive(t *testing.T) {
// Otherwise, if we're merging an earlier criss-cross merge which has
// half of the limit many criss-cross patterns, we exactly hit the
// recursion limit and thus succeed.
- response, err := executor.Merge(ctx, git2go.MergeCommand{
+ response, err := executor.Merge(ctx, repoProto, git2go.MergeCommand{
Repository: repoPath,
AuthorName: "John Doe",
AuthorMail: "john.doe@example.com",
diff --git a/cmd/gitaly-git2go/rebase_test.go b/cmd/gitaly-git2go/rebase_test.go
index 01be70216..c6d64be98 100644
--- a/cmd/gitaly-git2go/rebase_test.go
+++ b/cmd/gitaly-git2go/rebase_test.go
@@ -20,7 +20,7 @@ var (
)
func TestRebase_validation(t *testing.T) {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repo, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
committer := git2go.NewSignature("Foo", "foo@example.com", time.Now())
executor := git2go.NewExecutor(cfg)
@@ -65,7 +65,7 @@ func TestRebase_validation(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- _, err := executor.Rebase(ctx, tc.request)
+ _, err := executor.Rebase(ctx, repo, tc.request)
require.EqualError(t, err, tc.expectedErr)
})
}
@@ -163,7 +163,7 @@ func TestRebase_rebase(t *testing.T) {
string(gittest.TestUser.Email),
time.Date(2021, 3, 1, 13, 45, 50, 0, time.FixedZone("", +2*60*60)))
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repoProto, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
@@ -181,7 +181,7 @@ func TestRebase_rebase(t *testing.T) {
UpstreamRevision: masterRevision,
}
- response, err := executor.Rebase(ctx, request)
+ response, err := executor.Rebase(ctx, repoProto, request)
if tc.expectedErr != "" {
require.EqualError(t, err, tc.expectedErr)
} else {
diff --git a/cmd/gitaly-git2go/revert_test.go b/cmd/gitaly-git2go/revert_test.go
index 3aa077767..3fa48edec 100644
--- a/cmd/gitaly-git2go/revert_test.go
+++ b/cmd/gitaly-git2go/revert_test.go
@@ -17,7 +17,7 @@ import (
)
func TestRevert_validation(t *testing.T) {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repo, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
@@ -66,7 +66,7 @@ func TestRevert_validation(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- _, err := executor.Revert(ctx, tc.request)
+ _, err := executor.Revert(ctx, repo, tc.request)
require.Error(t, err)
require.EqualError(t, err, tc.expectedErr)
})
@@ -169,7 +169,7 @@ func TestRevert_trees(t *testing.T) {
}
for _, tc := range testcases {
t.Run(tc.desc, func(t *testing.T) {
- cfg, _, repoPath := testcfg.BuildWithRepo(t)
+ cfg, repoProto, repoPath := testcfg.BuildWithRepo(t)
testhelper.ConfigureGitalyGit2GoBin(t, cfg)
executor := git2go.NewExecutor(cfg)
@@ -190,7 +190,7 @@ func TestRevert_trees(t *testing.T) {
Revert: revert,
}
- response, err := executor.Revert(ctx, request)
+ response, err := executor.Revert(ctx, repoProto, request)
if tc.expectedErr != "" {
require.EqualError(t, err, tc.expectedErr)
diff --git a/cmd/gitaly-git2go/submodule_test.go b/cmd/gitaly-git2go/submodule_test.go
index 388867bb0..bd00bdc20 100644
--- a/cmd/gitaly-git2go/submodule_test.go
+++ b/cmd/gitaly-git2go/submodule_test.go
@@ -97,7 +97,7 @@ func TestSubmodule(t *testing.T) {
ctx, cancel := testhelper.Context()
defer cancel()
- response, err := executor.Submodule(ctx, tc.command)
+ response, err := executor.Submodule(ctx, repo, tc.command)
if tc.expectedStderr != "" {
require.Error(t, err)
require.Contains(t, err.Error(), tc.expectedStderr)
diff --git a/internal/git2go/apply.go b/internal/git2go/apply.go
index 97c74d4a7..b0b81b835 100644
--- a/internal/git2go/apply.go
+++ b/internal/git2go/apply.go
@@ -7,6 +7,7 @@ import (
"io"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// ErrMergeConflict is returned when there is a merge conflict.
@@ -72,7 +73,7 @@ func (iter *slicePatchIterator) Err() error { return nil }
// Apply applies the provided patches and returns the OID of the commit with the patches
// applied.
-func (b Executor) Apply(ctx context.Context, params ApplyParams) (git.ObjectID, error) {
+func (b Executor) Apply(ctx context.Context, repo repository.GitRepo, params ApplyParams) (git.ObjectID, error) {
reader, writer := io.Pipe()
defer writer.Close()
@@ -102,7 +103,7 @@ func (b Executor) Apply(ctx context.Context, params ApplyParams) (git.ObjectID,
}()
var result Result
- output, err := b.run(ctx, reader, "apply", "-git-binary-path", b.gitBinaryPath)
+ output, err := b.run(ctx, repo, reader, "apply", "-git-binary-path", b.gitBinaryPath)
if err != nil {
return "", fmt.Errorf("run: %w", err)
}
diff --git a/internal/git2go/apply_test.go b/internal/git2go/apply_test.go
index e6d9680f8..614ea8931 100644
--- a/internal/git2go/apply_test.go
+++ b/internal/git2go/apply_test.go
@@ -39,7 +39,7 @@ func TestExecutor_Apply(t *testing.T) {
author := NewSignature("Test Author", "test.author@example.com", time.Now())
committer := NewSignature("Test Committer", "test.committer@example.com", time.Now())
- parentCommitSHA, err := executor.Commit(ctx, CommitParams{
+ parentCommitSHA, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
@@ -48,7 +48,7 @@ func TestExecutor_Apply(t *testing.T) {
})
require.NoError(t, err)
- noCommonAncestor, err := executor.Commit(ctx, CommitParams{
+ noCommonAncestor, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
@@ -57,7 +57,7 @@ func TestExecutor_Apply(t *testing.T) {
})
require.NoError(t, err)
- updateToA, err := executor.Commit(ctx, CommitParams{
+ updateToA, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
@@ -67,7 +67,7 @@ func TestExecutor_Apply(t *testing.T) {
})
require.NoError(t, err)
- updateToB, err := executor.Commit(ctx, CommitParams{
+ updateToB, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
@@ -77,7 +77,7 @@ func TestExecutor_Apply(t *testing.T) {
})
require.NoError(t, err)
- updateFromAToB, err := executor.Commit(ctx, CommitParams{
+ updateFromAToB, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
@@ -87,7 +87,7 @@ func TestExecutor_Apply(t *testing.T) {
})
require.NoError(t, err)
- otherFile, err := executor.Commit(ctx, CommitParams{
+ otherFile, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
@@ -196,7 +196,7 @@ func TestExecutor_Apply(t *testing.T) {
},
} {
t.Run(tc.desc, func(t *testing.T) {
- commitID, err := executor.Apply(ctx, ApplyParams{
+ commitID, err := executor.Apply(ctx, repo, ApplyParams{
Repository: repoPath,
Committer: committer,
ParentCommit: parentCommitSHA.String(),
diff --git a/internal/git2go/cherry_pick.go b/internal/git2go/cherry_pick.go
index 3ef0372e2..6a71a5c61 100644
--- a/internal/git2go/cherry_pick.go
+++ b/internal/git2go/cherry_pick.go
@@ -5,6 +5,7 @@ import (
"time"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// CherryPickCommand contains parameters to perform a cherry pick.
@@ -28,6 +29,6 @@ type CherryPickCommand struct {
}
// CherryPick performs a cherry pick via gitaly-git2go.
-func (b Executor) CherryPick(ctx context.Context, m CherryPickCommand) (git.ObjectID, error) {
- return b.runWithGob(ctx, "cherry-pick", m)
+func (b Executor) CherryPick(ctx context.Context, repo repository.GitRepo, m CherryPickCommand) (git.ObjectID, error) {
+ return b.runWithGob(ctx, repo, "cherry-pick", m)
}
diff --git a/internal/git2go/commit.go b/internal/git2go/commit.go
index 7ff7575bb..76c6b620d 100644
--- a/internal/git2go/commit.go
+++ b/internal/git2go/commit.go
@@ -7,6 +7,7 @@ import (
"fmt"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// IndexError is an error that was produced by performing an invalid operation on the index.
@@ -59,13 +60,13 @@ type CommitParams struct {
// Commit builds a commit from the actions, writes it to the object database and
// returns its object id.
-func (b Executor) Commit(ctx context.Context, params CommitParams) (git.ObjectID, error) {
+func (b Executor) Commit(ctx context.Context, repo repository.GitRepo, params CommitParams) (git.ObjectID, error) {
input := &bytes.Buffer{}
if err := gob.NewEncoder(input).Encode(params); err != nil {
return "", err
}
- output, err := b.run(ctx, input, "commit")
+ output, err := b.run(ctx, repo, input, "commit")
if err != nil {
return "", err
}
diff --git a/internal/git2go/commit_test.go b/internal/git2go/commit_test.go
index e761ea254..e16aa7a4e 100644
--- a/internal/git2go/commit_test.go
+++ b/internal/git2go/commit_test.go
@@ -468,7 +468,7 @@ func TestExecutor_Commit(t *testing.T) {
var parentCommit git.ObjectID
for i, step := range tc.steps {
message := fmt.Sprintf("commit %d", i+1)
- commitID, err := executor.Commit(ctx, CommitParams{
+ commitID, err := executor.Commit(ctx, repo, CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
diff --git a/internal/git2go/conflicts.go b/internal/git2go/conflicts.go
index 9c1a6c2e0..6b1e7b717 100644
--- a/internal/git2go/conflicts.go
+++ b/internal/git2go/conflicts.go
@@ -6,6 +6,7 @@ import (
"fmt"
"io"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -76,7 +77,7 @@ func (m ConflictsResult) SerializeTo(writer io.Writer) error {
}
// Conflicts performs a merge via gitaly-git2go and returns all resulting conflicts.
-func (b Executor) Conflicts(ctx context.Context, c ConflictsCommand) (ConflictsResult, error) {
+func (b Executor) Conflicts(ctx context.Context, repo repository.GitRepo, c ConflictsCommand) (ConflictsResult, error) {
if err := c.verify(); err != nil {
return ConflictsResult{}, fmt.Errorf("conflicts: %w: %s", ErrInvalidArgument, err.Error())
}
@@ -86,7 +87,7 @@ func (b Executor) Conflicts(ctx context.Context, c ConflictsCommand) (ConflictsR
return ConflictsResult{}, err
}
- stdout, err := b.run(ctx, nil, "conflicts", "-request", serialized)
+ stdout, err := b.run(ctx, repo, nil, "conflicts", "-request", serialized)
if err != nil {
return ConflictsResult{}, err
}
diff --git a/internal/git2go/executor.go b/internal/git2go/executor.go
index a7c867dfe..5a8269eab 100644
--- a/internal/git2go/executor.go
+++ b/internal/git2go/executor.go
@@ -13,6 +13,7 @@ import (
"gitlab.com/gitlab-org/gitaly/v14/internal/command"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
"gitlab.com/gitlab-org/gitaly/v14/internal/gitaly/config"
"gitlab.com/gitlab-org/gitaly/v14/internal/version"
)
@@ -53,7 +54,7 @@ func BinaryPath(binaryFolder string) string {
return path
}
-func (b Executor) run(ctx context.Context, stdin io.Reader, args ...string) (*bytes.Buffer, error) {
+func (b Executor) run(ctx context.Context, repo repository.GitRepo, stdin io.Reader, args ...string) (*bytes.Buffer, error) {
var stderr, stdout bytes.Buffer
cmd, err := command.New(ctx, exec.Command(b.binaryPath, args...), stdin, &stdout, &stderr)
if err != nil {
@@ -72,13 +73,13 @@ func (b Executor) run(ctx context.Context, stdin io.Reader, args ...string) (*by
// runWithGob runs the specified gitaly-git2go cmd with the request gob-encoded
// as input and returns the commit ID as string or an error.
-func (b Executor) runWithGob(ctx context.Context, cmd string, request interface{}) (git.ObjectID, error) {
+func (b Executor) runWithGob(ctx context.Context, repo repository.GitRepo, cmd string, request interface{}) (git.ObjectID, error) {
input := &bytes.Buffer{}
if err := gob.NewEncoder(input).Encode(request); err != nil {
return "", fmt.Errorf("%s: %w", cmd, err)
}
- output, err := b.run(ctx, input, cmd)
+ output, err := b.run(ctx, repo, input, cmd)
if err != nil {
return "", fmt.Errorf("%s: %w", cmd, err)
}
diff --git a/internal/git2go/merge.go b/internal/git2go/merge.go
index 3a0f6b24a..d449b7ccb 100644
--- a/internal/git2go/merge.go
+++ b/internal/git2go/merge.go
@@ -6,6 +6,8 @@ import (
"fmt"
"io"
"time"
+
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
const (
@@ -61,7 +63,7 @@ func (m MergeResult) SerializeTo(w io.Writer) error {
}
// Merge performs a merge via gitaly-git2go.
-func (b Executor) Merge(ctx context.Context, m MergeCommand) (MergeResult, error) {
+func (b Executor) Merge(ctx context.Context, repo repository.GitRepo, m MergeCommand) (MergeResult, error) {
if err := m.verify(); err != nil {
return MergeResult{}, fmt.Errorf("merge: %w: %s", ErrInvalidArgument, err.Error())
}
@@ -71,7 +73,7 @@ func (b Executor) Merge(ctx context.Context, m MergeCommand) (MergeResult, error
return MergeResult{}, err
}
- stdout, err := b.run(ctx, nil, "merge", "-request", serialized)
+ stdout, err := b.run(ctx, repo, nil, "merge", "-request", serialized)
if err != nil {
return MergeResult{}, err
}
diff --git a/internal/git2go/rebase.go b/internal/git2go/rebase.go
index 0b2994baa..32051fd03 100644
--- a/internal/git2go/rebase.go
+++ b/internal/git2go/rebase.go
@@ -4,6 +4,7 @@ import (
"context"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// RebaseCommand contains parameters to rebase a branch.
@@ -19,6 +20,6 @@ type RebaseCommand struct {
}
// Rebase performs the rebase via gitaly-git2go
-func (b Executor) Rebase(ctx context.Context, r RebaseCommand) (git.ObjectID, error) {
- return b.runWithGob(ctx, "rebase", r)
+func (b Executor) Rebase(ctx context.Context, repo repository.GitRepo, r RebaseCommand) (git.ObjectID, error) {
+ return b.runWithGob(ctx, repo, "rebase", r)
}
diff --git a/internal/git2go/resolve_conflicts.go b/internal/git2go/resolve_conflicts.go
index e4526ab6e..62096030c 100644
--- a/internal/git2go/resolve_conflicts.go
+++ b/internal/git2go/resolve_conflicts.go
@@ -7,6 +7,7 @@ import (
"fmt"
"gitlab.com/gitlab-org/gitaly/v14/internal/git/conflict"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// ResolveCommand contains arguments to perform a merge commit and resolve any
@@ -22,7 +23,7 @@ type ResolveResult struct {
}
// Resolve will attempt merging and resolving conflicts for the provided request
-func (b Executor) Resolve(ctx context.Context, r ResolveCommand) (ResolveResult, error) {
+func (b Executor) Resolve(ctx context.Context, repo repository.GitRepo, r ResolveCommand) (ResolveResult, error) {
if err := r.verify(); err != nil {
return ResolveResult{}, fmt.Errorf("resolve: %w: %s", ErrInvalidArgument, err.Error())
}
@@ -32,7 +33,7 @@ func (b Executor) Resolve(ctx context.Context, r ResolveCommand) (ResolveResult,
return ResolveResult{}, fmt.Errorf("resolve: %w", err)
}
- stdout, err := b.run(ctx, input, "resolve")
+ stdout, err := b.run(ctx, repo, input, "resolve")
if err != nil {
return ResolveResult{}, err
}
diff --git a/internal/git2go/revert.go b/internal/git2go/revert.go
index 470763dbf..33a7004ad 100644
--- a/internal/git2go/revert.go
+++ b/internal/git2go/revert.go
@@ -5,6 +5,7 @@ import (
"time"
"gitlab.com/gitlab-org/gitaly/v14/internal/git"
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// RevertCommand contains parameters required to execute a revert via gitaly-git2go.
@@ -28,6 +29,6 @@ type RevertCommand struct {
}
// Revert reverts a commit via gitaly-git2go.
-func (b Executor) Revert(ctx context.Context, r RevertCommand) (git.ObjectID, error) {
- return b.runWithGob(ctx, "revert", r)
+func (b Executor) Revert(ctx context.Context, repo repository.GitRepo, r RevertCommand) (git.ObjectID, error) {
+ return b.runWithGob(ctx, repo, "revert", r)
}
diff --git a/internal/git2go/set_config.go b/internal/git2go/set_config.go
index d0a4e2ba1..0375189ea 100644
--- a/internal/git2go/set_config.go
+++ b/internal/git2go/set_config.go
@@ -5,6 +5,8 @@ import (
"context"
"encoding/gob"
"fmt"
+
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// ConfigEntry interface value with defined type.
@@ -27,13 +29,13 @@ type SetConfingResult struct {
}
// SetConfig attempts to set all entries to config
-func (b Executor) SetConfig(ctx context.Context, s SetConfigCommand) error {
+func (b Executor) SetConfig(ctx context.Context, repo repository.GitRepo, s SetConfigCommand) error {
input := &bytes.Buffer{}
if err := gob.NewEncoder(input).Encode(s); err != nil {
return fmt.Errorf("resolve: %w", err)
}
- stdout, err := b.run(ctx, input, "set_config")
+ stdout, err := b.run(ctx, repo, input, "set_config")
if err != nil {
return err
}
diff --git a/internal/git2go/submodule.go b/internal/git2go/submodule.go
index 3c29ea409..804de88a1 100644
--- a/internal/git2go/submodule.go
+++ b/internal/git2go/submodule.go
@@ -5,6 +5,8 @@ import (
"fmt"
"io"
"time"
+
+ "gitlab.com/gitlab-org/gitaly/v14/internal/git/repository"
)
// Error strings present in the legacy Ruby implementation
@@ -62,7 +64,7 @@ func (s SubmoduleResult) SerializeTo(w io.Writer) error {
}
// Submodule attempts to commit the request submodule change
-func (b Executor) Submodule(ctx context.Context, s SubmoduleCommand) (SubmoduleResult, error) {
+func (b Executor) Submodule(ctx context.Context, repo repository.GitRepo, s SubmoduleCommand) (SubmoduleResult, error) {
if err := s.verify(); err != nil {
return SubmoduleResult{}, fmt.Errorf("submodule: %w", err)
}
@@ -72,7 +74,7 @@ func (b Executor) Submodule(ctx context.Context, s SubmoduleCommand) (SubmoduleR
return SubmoduleResult{}, err
}
- stdout, err := b.run(ctx, nil, "submodule", "-request", serialized)
+ stdout, err := b.run(ctx, repo, nil, "submodule", "-request", serialized)
if err != nil {
return SubmoduleResult{}, err
}
diff --git a/internal/gitaly/service/conflicts/list_conflict_files.go b/internal/gitaly/service/conflicts/list_conflict_files.go
index 9d7591f64..a64d38ff6 100644
--- a/internal/gitaly/service/conflicts/list_conflict_files.go
+++ b/internal/gitaly/service/conflicts/list_conflict_files.go
@@ -38,7 +38,7 @@ func (s *server) ListConflictFiles(request *gitalypb.ListConflictFilesRequest, s
return err
}
- conflicts, err := s.git2go.Conflicts(ctx, git2go.ConflictsCommand{
+ conflicts, err := s.git2go.Conflicts(ctx, repo, git2go.ConflictsCommand{
Repository: repoPath,
Ours: ours.String(),
Theirs: theirs.String(),
diff --git a/internal/gitaly/service/conflicts/resolve_conflicts.go b/internal/gitaly/service/conflicts/resolve_conflicts.go
index 137a0f431..4a69c1375 100644
--- a/internal/gitaly/service/conflicts/resolve_conflicts.go
+++ b/internal/gitaly/service/conflicts/resolve_conflicts.go
@@ -173,7 +173,7 @@ func (s *server) resolveConflicts(header *gitalypb.ResolveConflictsRequestHeader
return errors.New("Rugged::InvalidError: unable to parse OID - contains invalid characters")
}
- result, err := s.git2go.Resolve(ctx, git2go.ResolveCommand{
+ result, err := s.git2go.Resolve(ctx, sourceRepo, git2go.ResolveCommand{
MergeCommand: git2go.MergeCommand{
Repository: repoPath,
AuthorName: string(header.User.Name),
diff --git a/internal/gitaly/service/operations/cherry_pick.go b/internal/gitaly/service/operations/cherry_pick.go
index d1a2251fa..86bf6c593 100644
--- a/internal/gitaly/service/operations/cherry_pick.go
+++ b/internal/gitaly/service/operations/cherry_pick.go
@@ -50,7 +50,7 @@ func (s *Server) UserCherryPick(ctx context.Context, req *gitalypb.UserCherryPic
}
}
- newrev, err := s.git2go.CherryPick(ctx, git2go.CherryPickCommand{
+ newrev, err := s.git2go.CherryPick(ctx, localRepo, git2go.CherryPickCommand{
Repository: repoPath,
CommitterName: string(req.User.Name),
CommitterMail: string(req.User.Email),
diff --git a/internal/gitaly/service/operations/commit_files.go b/internal/gitaly/service/operations/commit_files.go
index 24f680ffb..292b01f71 100644
--- a/internal/gitaly/service/operations/commit_files.go
+++ b/internal/gitaly/service/operations/commit_files.go
@@ -297,7 +297,7 @@ func (s *Server) userCommitFiles(ctx context.Context, header *gitalypb.UserCommi
author = git2go.NewSignature(string(header.CommitAuthorName), string(header.CommitAuthorEmail), now)
}
- commitID, err := s.git2go.Commit(ctx, git2go.CommitParams{
+ commitID, err := s.git2go.Commit(ctx, localRepo, git2go.CommitParams{
Repository: repoPath,
Author: author,
Committer: committer,
diff --git a/internal/gitaly/service/operations/merge.go b/internal/gitaly/service/operations/merge.go
index e08a9d9cb..c56c76920 100644
--- a/internal/gitaly/service/operations/merge.go
+++ b/internal/gitaly/service/operations/merge.go
@@ -65,7 +65,7 @@ func (s *Server) UserMergeBranch(stream gitalypb.OperationService_UserMergeBranc
return helper.ErrInvalidArgument(err)
}
- merge, err := s.git2go.Merge(ctx, git2go.MergeCommand{
+ merge, err := s.git2go.Merge(ctx, repo, git2go.MergeCommand{
Repository: repoPath,
AuthorName: string(firstRequest.User.Name),
AuthorMail: string(firstRequest.User.Email),
@@ -282,7 +282,7 @@ func (s *Server) UserMergeToRef(ctx context.Context, request *gitalypb.UserMerge
}
// Now, we create the merge commit...
- merge, err := s.git2go.Merge(ctx, git2go.MergeCommand{
+ merge, err := s.git2go.Merge(ctx, repo, git2go.MergeCommand{
Repository: repoPath,
AuthorName: string(request.User.Name),
AuthorMail: string(request.User.Email),
diff --git a/internal/gitaly/service/operations/rebase.go b/internal/gitaly/service/operations/rebase.go
index 64b276e88..a3fde32a8 100644
--- a/internal/gitaly/service/operations/rebase.go
+++ b/internal/gitaly/service/operations/rebase.go
@@ -60,7 +60,7 @@ func (s *Server) UserRebaseConfirmable(stream gitalypb.OperationService_UserReba
}
}
- newrev, err := s.git2go.Rebase(ctx, git2go.RebaseCommand{
+ newrev, err := s.git2go.Rebase(ctx, repo, git2go.RebaseCommand{
Repository: repoPath,
Committer: committer,
BranchName: string(header.Branch),
diff --git a/internal/gitaly/service/operations/revert.go b/internal/gitaly/service/operations/revert.go
index 461894a39..543b45717 100644
--- a/internal/gitaly/service/operations/revert.go
+++ b/internal/gitaly/service/operations/revert.go
@@ -44,7 +44,7 @@ func (s *Server) UserRevert(ctx context.Context, req *gitalypb.UserRevertRequest
return nil, helper.ErrInvalidArgument(err)
}
- newrev, err := s.git2go.Revert(ctx, git2go.RevertCommand{
+ newrev, err := s.git2go.Revert(ctx, localRepo, git2go.RevertCommand{
Repository: repoPath,
AuthorName: string(req.User.Name),
AuthorMail: string(req.User.Email),
diff --git a/internal/gitaly/service/operations/submodules.go b/internal/gitaly/service/operations/submodules.go
index 6fc4906ba..2a7b86024 100644
--- a/internal/gitaly/service/operations/submodules.go
+++ b/internal/gitaly/service/operations/submodules.go
@@ -91,7 +91,7 @@ func (s *Server) userUpdateSubmodule(ctx context.Context, req *gitalypb.UserUpda
return nil, helper.ErrInvalidArgument(err)
}
- result, err := s.git2go.Submodule(ctx, git2go.SubmoduleCommand{
+ result, err := s.git2go.Submodule(ctx, repo, git2go.SubmoduleCommand{
Repository: repoPath,
AuthorMail: string(req.GetUser().GetEmail()),
AuthorName: string(req.GetUser().GetName()),
diff --git a/internal/gitaly/service/remote/update_remote_mirror_test.go b/internal/gitaly/service/remote/update_remote_mirror_test.go
index 496951bb4..e2c560531 100644
--- a/internal/gitaly/service/remote/update_remote_mirror_test.go
+++ b/internal/gitaly/service/remote/update_remote_mirror_test.go
@@ -449,7 +449,7 @@ func testUpdateRemoteMirrorFeatured(t *testing.T, ctx context.Context, cfg confi
},
} {
t.Run(tc.desc, func(t *testing.T) {
- _, mirrorRepoPath, cleanMirrorRepo := gittest.InitBareRepoAt(t, cfg, cfg.Storages[0])
+ mirrorRepoPb, mirrorRepoPath, cleanMirrorRepo := gittest.InitBareRepoAt(t, cfg, cfg.Storages[0])
defer cleanMirrorRepo()
sourceRepoPb, sourceRepoPath, cleanSourceRepo := gittest.InitBareRepoAt(t, cfg, cfg.Storages[0])
@@ -464,16 +464,28 @@ func testUpdateRemoteMirrorFeatured(t *testing.T, ctx context.Context, cfg confi
executor := git2go.NewExecutor(cfg)
// construct the starting state of the repositories
- for repoPath, references := range map[string]refs{
- sourceRepoPath: tc.sourceRefs,
- mirrorRepoPath: tc.mirrorRefs,
+ for _, c := range []struct {
+ repoProto *gitalypb.Repository
+ repoPath string
+ references refs
+ }{
+ {
+ repoProto: sourceRepoPb,
+ repoPath: sourceRepoPath,
+ references: tc.sourceRefs,
+ },
+ {
+ repoProto: mirrorRepoPb,
+ repoPath: mirrorRepoPath,
+ references: tc.mirrorRefs,
+ },
} {
- for reference, commits := range references {
+ for reference, commits := range c.references {
var commitOID git.ObjectID
for _, commit := range commits {
var err error
- commitOID, err = executor.Commit(ctx, git2go.CommitParams{
- Repository: repoPath,
+ commitOID, err = executor.Commit(ctx, c.repoProto, git2go.CommitParams{
+ Repository: c.repoPath,
Author: commitSignature,
Committer: commitSignature,
Message: commit,
@@ -482,7 +494,7 @@ func testUpdateRemoteMirrorFeatured(t *testing.T, ctx context.Context, cfg confi
require.NoError(t, err)
}
- gittest.Exec(t, cfg, "-C", repoPath, "update-ref", reference, commitOID.String())
+ gittest.Exec(t, cfg, "-C", c.repoPath, "update-ref", reference, commitOID.String())
}
}
for repoPath, symRefs := range map[string]map[string]string{
diff --git a/internal/gitaly/service/repository/config.go b/internal/gitaly/service/repository/config.go
index 6fbf0f21d..d2375096d 100644
--- a/internal/gitaly/service/repository/config.go
+++ b/internal/gitaly/service/repository/config.go
@@ -133,7 +133,7 @@ func (s *server) setConfigGit2Go(ctx context.Context, req *gitalypb.SetConfigReq
return nil, helper.ErrInternalf("preimage vote on config: %v", err)
}
- if err := s.git2go.SetConfig(ctx, git2go.SetConfigCommand{Repository: path, Entries: entries}); err != nil {
+ if err := s.git2go.SetConfig(ctx, reqRepo, git2go.SetConfigCommand{Repository: path, Entries: entries}); err != nil {
return nil, status.Errorf(codes.Internal, "SetConfig git2go error")
}