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:
authorJames Fargher <jfargher@gitlab.com>2022-02-11 04:35:16 +0300
committerJames Fargher <proglottis@gmail.com>2022-02-22 00:25:50 +0300
commit823af13768eb697d85abe0ca763d18d4ef43c544 (patch)
treec8ea2991e57794e329117d2adfc5d923bcb2a707
parent3859fb168e4f05ec4212fbb36fa5ee5ef3c819ba (diff)
gitaly-git2go: Hoist gob encoding for all sub-commands
Now that gob is required for all git2go commands we can hoist the initialisation of the gob encoding so that later all errors can be encoded over gob instead of using stderr.
-rw-r--r--cmd/gitaly-git2go/apply.go6
-rw-r--r--cmd/gitaly-git2go/cherry_pick.go7
-rw-r--r--cmd/gitaly-git2go/commit.go6
-rw-r--r--cmd/gitaly-git2go/commit/commit.go7
-rw-r--r--cmd/gitaly-git2go/conflicts.go7
-rw-r--r--cmd/gitaly-git2go/main.go9
-rw-r--r--cmd/gitaly-git2go/merge.go7
-rw-r--r--cmd/gitaly-git2go/rebase.go7
-rw-r--r--cmd/gitaly-git2go/resolve_conflicts.go7
-rw-r--r--cmd/gitaly-git2go/revert.go7
-rw-r--r--cmd/gitaly-git2go/submodule.go7
11 files changed, 35 insertions, 42 deletions
diff --git a/cmd/gitaly-git2go/apply.go b/cmd/gitaly-git2go/apply.go
index 618b254a5..0c863d82c 100644
--- a/cmd/gitaly-git2go/apply.go
+++ b/cmd/gitaly-git2go/apply.go
@@ -53,9 +53,7 @@ func (cmd *applySubcommand) Flags() *flag.FlagSet {
}
// Run runs the subcommand.
-func (cmd *applySubcommand) Run(ctx context.Context, stdin io.Reader, stdout io.Writer) error {
- decoder := gob.NewDecoder(stdin)
-
+func (cmd *applySubcommand) Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var params git2go.ApplyParams
if err := decoder.Decode(&params); err != nil {
return fmt.Errorf("decode params: %w", err)
@@ -63,7 +61,7 @@ func (cmd *applySubcommand) Run(ctx context.Context, stdin io.Reader, stdout io.
params.Patches = &patchIterator{decoder: decoder}
commitID, err := cmd.apply(ctx, params)
- return gob.NewEncoder(stdout).Encode(git2go.Result{
+ return encoder.Encode(git2go.Result{
CommitID: commitID,
Err: git2go.SerializableError(err),
})
diff --git a/cmd/gitaly-git2go/cherry_pick.go b/cmd/gitaly-git2go/cherry_pick.go
index 747ac6fe5..0125e73e0 100644
--- a/cmd/gitaly-git2go/cherry_pick.go
+++ b/cmd/gitaly-git2go/cherry_pick.go
@@ -9,7 +9,6 @@ import (
"errors"
"flag"
"fmt"
- "io"
git "github.com/libgit2/git2go/v33"
"gitlab.com/gitlab-org/gitaly/v14/cmd/gitaly-git2go/git2goutil"
@@ -22,14 +21,14 @@ func (cmd *cherryPickSubcommand) Flags() *flag.FlagSet {
return flag.NewFlagSet("cherry-pick", flag.ExitOnError)
}
-func (cmd *cherryPickSubcommand) Run(ctx context.Context, r io.Reader, w io.Writer) error {
+func (cmd *cherryPickSubcommand) Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.CherryPickCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return err
}
commitID, err := cmd.cherryPick(ctx, &request)
- return gob.NewEncoder(w).Encode(git2go.Result{
+ return encoder.Encode(git2go.Result{
CommitID: commitID,
Err: git2go.SerializableError(err),
})
diff --git a/cmd/gitaly-git2go/commit.go b/cmd/gitaly-git2go/commit.go
index 33a8ff9a2..0f6b69cdb 100644
--- a/cmd/gitaly-git2go/commit.go
+++ b/cmd/gitaly-git2go/commit.go
@@ -5,8 +5,8 @@ package main
import (
"context"
+ "encoding/gob"
"flag"
- "io"
"gitlab.com/gitlab-org/gitaly/v14/cmd/gitaly-git2go/commit"
)
@@ -15,6 +15,6 @@ type commitSubcommand struct{}
func (commitSubcommand) Flags() *flag.FlagSet { return flag.NewFlagSet("commit", flag.ExitOnError) }
-func (commitSubcommand) Run(ctx context.Context, stdin io.Reader, stdout io.Writer) error {
- return commit.Run(ctx, stdin, stdout)
+func (commitSubcommand) Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
+ return commit.Run(ctx, decoder, encoder)
}
diff --git a/cmd/gitaly-git2go/commit/commit.go b/cmd/gitaly-git2go/commit/commit.go
index b4003a7de..0e62eee7c 100644
--- a/cmd/gitaly-git2go/commit/commit.go
+++ b/cmd/gitaly-git2go/commit/commit.go
@@ -8,7 +8,6 @@ import (
"encoding/gob"
"errors"
"fmt"
- "io"
git "github.com/libgit2/git2go/v33"
"gitlab.com/gitlab-org/gitaly/v14/cmd/gitaly-git2go/git2goutil"
@@ -16,14 +15,14 @@ import (
)
// Run runs the commit subcommand.
-func Run(ctx context.Context, stdin io.Reader, stdout io.Writer) error {
+func Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var params git2go.CommitParams
- if err := gob.NewDecoder(stdin).Decode(&params); err != nil {
+ if err := decoder.Decode(&params); err != nil {
return err
}
commitID, err := commit(ctx, params)
- return gob.NewEncoder(stdout).Encode(git2go.Result{
+ return encoder.Encode(git2go.Result{
CommitID: commitID,
Err: git2go.SerializableError(err),
})
diff --git a/cmd/gitaly-git2go/conflicts.go b/cmd/gitaly-git2go/conflicts.go
index 34e3eb14e..7ac05fa57 100644
--- a/cmd/gitaly-git2go/conflicts.go
+++ b/cmd/gitaly-git2go/conflicts.go
@@ -9,7 +9,6 @@ import (
"errors"
"flag"
"fmt"
- "io"
git "github.com/libgit2/git2go/v33"
"gitlab.com/gitlab-org/gitaly/v14/cmd/gitaly-git2go/git2goutil"
@@ -25,13 +24,13 @@ func (cmd *conflictsSubcommand) Flags() *flag.FlagSet {
return flag.NewFlagSet("conflicts", flag.ExitOnError)
}
-func (cmd *conflictsSubcommand) Run(_ context.Context, r io.Reader, w io.Writer) error {
+func (cmd *conflictsSubcommand) Run(_ context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.ConflictsCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return err
}
res := cmd.conflicts(request)
- return gob.NewEncoder(w).Encode(res)
+ return encoder.Encode(res)
}
func (conflictsSubcommand) conflicts(request git2go.ConflictsCommand) git2go.ConflictsResult {
diff --git a/cmd/gitaly-git2go/main.go b/cmd/gitaly-git2go/main.go
index 08652080f..67152d42b 100644
--- a/cmd/gitaly-git2go/main.go
+++ b/cmd/gitaly-git2go/main.go
@@ -5,9 +5,9 @@ package main
import (
"context"
+ "encoding/gob"
"flag"
"fmt"
- "io"
"os"
git "github.com/libgit2/git2go/v33"
@@ -16,7 +16,7 @@ import (
type subcmd interface {
Flags() *flag.FlagSet
- Run(ctx context.Context, stdin io.Reader, stdout io.Writer) error
+ Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error
}
var subcommands = map[string]subcmd{
@@ -47,6 +47,9 @@ func main() {
fatalf("missing subcommand")
}
+ decoder := gob.NewDecoder(os.Stdin)
+ encoder := gob.NewEncoder(os.Stdout)
+
subcmd, ok := subcommands[flags.Arg(1)]
if !ok {
fatalf("unknown subcommand: %q", flags.Arg(1))
@@ -65,7 +68,7 @@ func main() {
fatalf("enable fsync: %s", err)
}
- if err := subcmd.Run(context.Background(), os.Stdin, os.Stdout); err != nil {
+ if err := subcmd.Run(context.Background(), decoder, encoder); err != nil {
fatalf("%s: %s", subcmdFlags.Name(), err)
}
}
diff --git a/cmd/gitaly-git2go/merge.go b/cmd/gitaly-git2go/merge.go
index f343bb2a0..541cecf84 100644
--- a/cmd/gitaly-git2go/merge.go
+++ b/cmd/gitaly-git2go/merge.go
@@ -9,7 +9,6 @@ import (
"errors"
"flag"
"fmt"
- "io"
"time"
git "github.com/libgit2/git2go/v33"
@@ -24,9 +23,9 @@ func (cmd *mergeSubcommand) Flags() *flag.FlagSet {
return flags
}
-func (cmd *mergeSubcommand) Run(_ context.Context, r io.Reader, w io.Writer) error {
+func (cmd *mergeSubcommand) Run(_ context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.MergeCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return err
}
@@ -36,7 +35,7 @@ func (cmd *mergeSubcommand) Run(_ context.Context, r io.Reader, w io.Writer) err
commitID, err := merge(request)
- return gob.NewEncoder(w).Encode(git2go.Result{
+ return encoder.Encode(git2go.Result{
CommitID: commitID,
Err: git2go.SerializableError(err),
})
diff --git a/cmd/gitaly-git2go/rebase.go b/cmd/gitaly-git2go/rebase.go
index 344703c1c..8d6d44010 100644
--- a/cmd/gitaly-git2go/rebase.go
+++ b/cmd/gitaly-git2go/rebase.go
@@ -9,7 +9,6 @@ import (
"errors"
"flag"
"fmt"
- "io"
git "github.com/libgit2/git2go/v33"
"gitlab.com/gitlab-org/gitaly/v14/cmd/gitaly-git2go/git2goutil"
@@ -22,14 +21,14 @@ func (cmd *rebaseSubcommand) Flags() *flag.FlagSet {
return flag.NewFlagSet("rebase", flag.ExitOnError)
}
-func (cmd *rebaseSubcommand) Run(ctx context.Context, r io.Reader, w io.Writer) error {
+func (cmd *rebaseSubcommand) Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.RebaseCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return err
}
commitID, err := cmd.rebase(ctx, &request)
- return gob.NewEncoder(w).Encode(git2go.Result{
+ return encoder.Encode(git2go.Result{
CommitID: commitID,
Err: git2go.SerializableError(err),
})
diff --git a/cmd/gitaly-git2go/resolve_conflicts.go b/cmd/gitaly-git2go/resolve_conflicts.go
index eaf53eec3..6314e6a87 100644
--- a/cmd/gitaly-git2go/resolve_conflicts.go
+++ b/cmd/gitaly-git2go/resolve_conflicts.go
@@ -10,7 +10,6 @@ import (
"errors"
"flag"
"fmt"
- "io"
"strings"
"time"
@@ -26,9 +25,9 @@ func (cmd *resolveSubcommand) Flags() *flag.FlagSet {
return flag.NewFlagSet("resolve", flag.ExitOnError)
}
-func (cmd resolveSubcommand) Run(_ context.Context, r io.Reader, w io.Writer) error {
+func (cmd resolveSubcommand) Run(_ context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.ResolveCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return err
}
@@ -205,7 +204,7 @@ func (cmd resolveSubcommand) Run(_ context.Context, r io.Reader, w io.Writer) er
},
}
- return gob.NewEncoder(w).Encode(response)
+ return encoder.Encode(response)
}
func readConflictEntries(odb *git.Odb, c git.IndexConflict) (*conflict.Entry, *conflict.Entry, *conflict.Entry, error) {
diff --git a/cmd/gitaly-git2go/revert.go b/cmd/gitaly-git2go/revert.go
index 8abc2efc3..fdefa1fd2 100644
--- a/cmd/gitaly-git2go/revert.go
+++ b/cmd/gitaly-git2go/revert.go
@@ -9,7 +9,6 @@ import (
"errors"
"flag"
"fmt"
- "io"
git "github.com/libgit2/git2go/v33"
"gitlab.com/gitlab-org/gitaly/v14/cmd/gitaly-git2go/git2goutil"
@@ -22,14 +21,14 @@ func (cmd *revertSubcommand) Flags() *flag.FlagSet {
return flag.NewFlagSet("revert", flag.ExitOnError)
}
-func (cmd *revertSubcommand) Run(ctx context.Context, r io.Reader, w io.Writer) error {
+func (cmd *revertSubcommand) Run(ctx context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.RevertCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return err
}
commitID, err := cmd.revert(ctx, &request)
- return gob.NewEncoder(w).Encode(git2go.Result{
+ return encoder.Encode(git2go.Result{
CommitID: commitID,
Err: git2go.SerializableError(err),
})
diff --git a/cmd/gitaly-git2go/submodule.go b/cmd/gitaly-git2go/submodule.go
index dd0963cfb..ef993fd21 100644
--- a/cmd/gitaly-git2go/submodule.go
+++ b/cmd/gitaly-git2go/submodule.go
@@ -8,7 +8,6 @@ import (
"encoding/gob"
"flag"
"fmt"
- "io"
"time"
git "github.com/libgit2/git2go/v33"
@@ -22,10 +21,10 @@ func (cmd *submoduleSubcommand) Flags() *flag.FlagSet {
return flag.NewFlagSet("submodule", flag.ExitOnError)
}
-func (cmd *submoduleSubcommand) Run(_ context.Context, r io.Reader, w io.Writer) error {
+func (cmd *submoduleSubcommand) Run(_ context.Context, decoder *gob.Decoder, encoder *gob.Encoder) error {
var request git2go.SubmoduleCommand
- if err := gob.NewDecoder(r).Decode(&request); err != nil {
+ if err := decoder.Decode(&request); err != nil {
return fmt.Errorf("deserializing submodule command request: %w", err)
}
@@ -34,7 +33,7 @@ func (cmd *submoduleSubcommand) Run(_ context.Context, r io.Reader, w io.Writer)
return err
}
- return gob.NewEncoder(w).Encode(res)
+ return encoder.Encode(res)
}
func (cmd *submoduleSubcommand) run(request git2go.SubmoduleCommand) (*git2go.SubmoduleResult, error) {