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:
authorJohn Cai <jcai@gitlab.com>2019-02-12 20:51:46 +0300
committerJohn Cai <jcai@gitlab.com>2019-02-12 20:51:46 +0300
commit0f4df3af4088231385754e20f30114d2ca647dd4 (patch)
tree22ffb41a9c66bd95334aae5ee514649da9d3280f
parent23f32e3ac37a6834debaa1bb9d12ce6e772e44aa (diff)
Revert "Merge branch 'commitstats-go' into 'master'"revert-rewrite-find-commits-in-go
This reverts commit 6cdf9a73866edc5aff7c1f15f059a156948821d2, reversing changes made to 587fd17585f436c868cdaf32bcc8b2b10bd2b499.
-rw-r--r--internal/service/commit/stats.go71
-rw-r--r--internal/service/commit/stats_test.go40
-rw-r--r--ruby/lib/gitaly_server/commit_service.rb2
3 files changed, 15 insertions, 98 deletions
diff --git a/internal/service/commit/stats.go b/internal/service/commit/stats.go
index c9b32b171..b1b9628f1 100644
--- a/internal/service/commit/stats.go
+++ b/internal/service/commit/stats.go
@@ -1,85 +1,28 @@
package commit
import (
- "bufio"
"context"
- "fmt"
- "strconv"
- "strings"
"gitlab.com/gitlab-org/gitaly-proto/go/gitalypb"
- "gitlab.com/gitlab-org/gitaly/internal/git"
- "gitlab.com/gitlab-org/gitaly/internal/git/log"
"gitlab.com/gitlab-org/gitaly/internal/helper"
+ "gitlab.com/gitlab-org/gitaly/internal/rubyserver"
)
func (s *server) CommitStats(ctx context.Context, in *gitalypb.CommitStatsRequest) (*gitalypb.CommitStatsResponse, error) {
- if err := git.ValidateRevision(in.Revision); err != nil {
- return nil, helper.ErrInvalidArgument(err)
- }
-
- resp, err := commitStats(ctx, in)
- if err != nil {
- return nil, helper.ErrInternal(err)
- }
-
- return resp, nil
-}
-
-func commitStats(ctx context.Context, in *gitalypb.CommitStatsRequest) (*gitalypb.CommitStatsResponse, error) {
- commit, err := log.GetCommit(ctx, in.Repository, string(in.Revision))
+ client, err := s.CommitServiceClient(ctx)
if err != nil {
return nil, err
}
- if commit == nil {
- return nil, fmt.Errorf("commit not found: %q", in.Revision)
- }
- cmd, err := git.Command(ctx, in.Repository, "diff", "--numstat", commit.Id+"^", commit.Id)
- if err != nil {
+ repo := in.GetRepository()
+ if _, err := helper.GetRepoPath(repo); err != nil {
return nil, err
}
- scanner := bufio.NewScanner(cmd)
- var added, deleted int32
-
- for scanner.Scan() {
- split := strings.SplitN(scanner.Text(), "\t", 3)
- if len(split) != 3 {
- return nil, fmt.Errorf("invalid numstat line %q", scanner.Text())
- }
-
- if split[0] == "-" && split[1] == "-" {
- // binary file
- continue
- }
-
- add64, err := strconv.ParseInt(split[0], 10, 32)
- if err != nil {
- return nil, err
- }
-
- added += int32(add64)
-
- del64, err := strconv.ParseInt(split[1], 10, 32)
- if err != nil {
- return nil, err
- }
-
- deleted += int32(del64)
- }
-
- if err := scanner.Err(); err != nil {
- return nil, err
- }
-
- if err := cmd.Wait(); err != nil {
+ clientCtx, err := rubyserver.SetHeaders(ctx, repo)
+ if err != nil {
return nil, err
}
- return &gitalypb.CommitStatsResponse{
- Oid: commit.Id,
- Additions: added,
- Deletions: deleted,
- }, nil
+ return client.CommitStats(clientCtx, in)
}
diff --git a/internal/service/commit/stats_test.go b/internal/service/commit/stats_test.go
index 53af68217..f9c7e847a 100644
--- a/internal/service/commit/stats_test.go
+++ b/internal/service/commit/stats_test.go
@@ -5,7 +5,6 @@ import (
"testing"
"github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitaly-proto/go/gitalypb"
"gitlab.com/gitlab-org/gitaly/internal/testhelper"
"google.golang.org/grpc/codes"
@@ -25,53 +24,30 @@ func TestCommitStatsSuccess(t *testing.T) {
defer cleanupFn()
tests := []struct {
- desc string
- revision string
+ revision []byte
oid string
additions, deletions int32
}{
{
- desc: "multiple changes, multiple files",
- revision: "test-do-not-touch",
+ revision: []byte("test-do-not-touch"),
oid: "899d3d27b04690ac1cd9ef4d8a74fde0667c57f1",
additions: 27,
deletions: 59,
},
{
- desc: "multiple changes, multiple files, reference by commit ID",
- revision: "899d3d27b04690ac1cd9ef4d8a74fde0667c57f1",
+ revision: []byte("899d3d27b04690ac1cd9ef4d8a74fde0667c57f1"),
oid: "899d3d27b04690ac1cd9ef4d8a74fde0667c57f1",
additions: 27,
deletions: 59,
},
- {
- desc: "merge commit",
- revision: "60ecb67",
- oid: "60ecb67744cb56576c30214ff52294f8ce2def98",
- additions: 1,
- deletions: 0,
- },
- {
- desc: "binary file",
- revision: "ae73cb0",
- oid: "ae73cb07c9eeaf35924a10f713b364d32b2dd34f",
- additions: 0,
- deletions: 0,
- },
}
for _, tc := range tests {
- t.Run(tc.desc, func(t *testing.T) {
- resp, err := client.CommitStats(ctx, &gitalypb.CommitStatsRequest{
- Repository: testRepo,
- Revision: []byte(tc.revision),
- })
- require.NoError(t, err)
-
- assert.Equal(t, tc.oid, resp.GetOid())
- assert.Equal(t, tc.additions, resp.GetAdditions())
- assert.Equal(t, tc.deletions, resp.GetDeletions())
- })
+ resp, err := client.CommitStats(ctx, &gitalypb.CommitStatsRequest{Repository: testRepo, Revision: tc.revision})
+ assert.NoError(t, err)
+ assert.Equal(t, tc.oid, resp.GetOid())
+ assert.Equal(t, tc.additions, resp.GetAdditions())
+ assert.Equal(t, tc.deletions, resp.GetDeletions())
}
}
diff --git a/ruby/lib/gitaly_server/commit_service.rb b/ruby/lib/gitaly_server/commit_service.rb
index e4916ec70..0abf22f50 100644
--- a/ruby/lib/gitaly_server/commit_service.rb
+++ b/ruby/lib/gitaly_server/commit_service.rb
@@ -3,8 +3,6 @@ module GitalyServer
include Utils
include Gitlab::EncodingHelper
- # TODO remove in gitlab 12.0, this is implemented in Go now:
- # https://gitlab.com/gitlab-org/gitaly/issues/1471
def commit_stats(request, call)
repo = Gitlab::Git::Repository.from_gitaly(request.repository, call)
revision = request.revision unless request.revision.empty?