diff options
author | James Fargher <jfargher@gitlab.com> | 2022-02-11 04:35:16 +0300 |
---|---|---|
committer | James Fargher <proglottis@gmail.com> | 2022-02-22 00:25:50 +0300 |
commit | 823af13768eb697d85abe0ca763d18d4ef43c544 (patch) | |
tree | c8ea2991e57794e329117d2adfc5d923bcb2a707 | |
parent | 3859fb168e4f05ec4212fbb36fa5ee5ef3c819ba (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.go | 6 | ||||
-rw-r--r-- | cmd/gitaly-git2go/cherry_pick.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/commit.go | 6 | ||||
-rw-r--r-- | cmd/gitaly-git2go/commit/commit.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/conflicts.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/main.go | 9 | ||||
-rw-r--r-- | cmd/gitaly-git2go/merge.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/rebase.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/resolve_conflicts.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/revert.go | 7 | ||||
-rw-r--r-- | cmd/gitaly-git2go/submodule.go | 7 |
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(¶ms); 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(¶ms); err != nil { + if err := decoder.Decode(¶ms); 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) { |