diff options
author | John Cai <jcai@gitlab.com> | 2019-09-19 20:44:23 +0300 |
---|---|---|
committer | John Cai <jcai@gitlab.com> | 2019-09-20 01:00:35 +0300 |
commit | 4183925cf27f5027bba7d328f77f3067655b3f32 (patch) | |
tree | 7857ee6e2fb862017765554d29f836685d0c57e6 | |
parent | e6df3d9ff81a70946827edc4ca7c2acf87804901 (diff) |
use SafeCmd
Replaces usage of Cmd with SafeCmd in WriteRef, SearchFilesByContent,
SearchFilesByName, removeOriginInRepo
-rw-r--r-- | changelogs/unreleased/jc-safe-command-write-ref.yml | 5 | ||||
-rw-r--r-- | internal/service/repository/search_files.go | 32 | ||||
-rw-r--r-- | internal/service/repository/util.go | 2 | ||||
-rw-r--r-- | internal/service/repository/write_ref.go | 2 |
4 files changed, 26 insertions, 15 deletions
diff --git a/changelogs/unreleased/jc-safe-command-write-ref.yml b/changelogs/unreleased/jc-safe-command-write-ref.yml new file mode 100644 index 000000000..63f7d3639 --- /dev/null +++ b/changelogs/unreleased/jc-safe-command-write-ref.yml @@ -0,0 +1,5 @@ +--- +title: Use SafeCmd in WriteRef +merge_request: 1506 +author: +type: other diff --git a/internal/service/repository/search_files.go b/internal/service/repository/search_files.go index a0c6fe991..f61434fa4 100644 --- a/internal/service/repository/search_files.go +++ b/internal/service/repository/search_files.go @@ -31,18 +31,17 @@ func (s *server) SearchFilesByContent(req *gitalypb.SearchFilesByContentRequest, } ctx := stream.Context() - cmd, err := git.Command(ctx, repo, "grep", - "--ignore-case", - "-I", // Don't match binary, there is no long-name for this one - "--line-number", - "--null", - "--before-context", surroundContext, - "--after-context", surroundContext, - "--perl-regexp", - "-e", // next arg is pattern, keep this last - req.GetQuery(), - string(req.GetRef()), - ) + cmd, err := git.SafeCmd(ctx, repo, + nil, + git.SubCmd{Name: "grep", Flags: []git.Option{ + git.Flag{Name: "--ignore-case"}, + git.Flag{Name: "-I"}, + git.Flag{Name: "--line-number"}, + git.Flag{Name: "--null"}, + git.ValueFlag{Name: "--before-context", Value: surroundContext}, + git.ValueFlag{Name: "--after-context", Value: surroundContext}, + git.Flag{Name: "--perl-regexp"}, + git.Flag{Name: "-e"}}, Args: []string{req.GetQuery(), string(req.GetRef())}}) if err != nil { return status.Errorf(codes.Internal, "SearchFilesByContent: cmd start failed: %v", err) @@ -108,7 +107,14 @@ func (s *server) SearchFilesByName(req *gitalypb.SearchFilesByNameRequest, strea } ctx := stream.Context() - cmd, err := git.Command(ctx, repo, "ls-tree", "--full-tree", "--name-status", "-r", string(req.GetRef()), req.GetQuery()) + cmd, err := git.SafeCmd( + ctx, + repo, + nil, + git.SubCmd{Name: "ls-tree", Flags: []git.Option{ + git.Flag{Name: "--full-tree"}, + git.Flag{Name: "--name-status"}, + git.Flag{Name: "-r"}}, Args: []string{string(req.GetRef()), req.GetQuery()}}) if err != nil { return status.Errorf(codes.Internal, "SearchFilesByName: cmd start failed: %v", err) } diff --git a/internal/service/repository/util.go b/internal/service/repository/util.go index 0a585caa0..16839fa44 100644 --- a/internal/service/repository/util.go +++ b/internal/service/repository/util.go @@ -9,7 +9,7 @@ import ( ) func removeOriginInRepo(ctx context.Context, repository *gitalypb.Repository) error { - cmd, err := git.Command(ctx, repository, "remote", "remove", "origin") + cmd, err := git.SafeCmd(ctx, repository, nil, git.SubCmd{Name: "remote", Args: []string{"remove", "origin"}}) if err != nil { return fmt.Errorf("remote cmd start: %v", err) diff --git a/internal/service/repository/write_ref.go b/internal/service/repository/write_ref.go index 3e5d0739d..1a874bcac 100644 --- a/internal/service/repository/write_ref.go +++ b/internal/service/repository/write_ref.go @@ -30,7 +30,7 @@ func writeRef(ctx context.Context, req *gitalypb.WriteRefRequest) error { } func updateSymbolicRef(ctx context.Context, req *gitalypb.WriteRefRequest) error { - cmd, err := git.Command(ctx, req.GetRepository(), "symbolic-ref", string(req.GetRef()), string(req.GetRevision())) + cmd, err := git.SafeCmd(ctx, req.GetRepository(), nil, git.SubCmd{Name: "symbolic-ref", Args: []string{string(req.GetRef()), string(req.GetRevision())}}) if err != nil { return fmt.Errorf("error when creating symbolic-ref command: %v", err) } |