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>2022-08-05 10:37:28 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2022-08-05 11:09:31 +0300
commitc1c10144cffd232130df0e2a24e92b8c8705773f (patch)
tree2835e6c0b61174f6ec9f1a373004a31f4be63821
parent1a81f65d298cefd4f813946f5927f360fb5d0d87 (diff)
lstree: Inject the object hash used to parse tree entries
Inject the object hash used to parse tree entries so that the tree entry parser can easily support parsing both SHA1 and SHA256 tree entries. For the time being all callers just inject SHA1. They will be converted over time to inject the correct value.
-rw-r--r--cmd/gitaly-git2go/submodule_test.go2
-rw-r--r--internal/git/gitpipe/ls_tree.go2
-rw-r--r--internal/git/lstree/list_entries.go2
-rw-r--r--internal/git/lstree/parser.go10
-rw-r--r--internal/git/lstree/parser_test.go2
-rw-r--r--internal/gitaly/service/commit/list_files.go2
-rw-r--r--internal/gitaly/service/commit/list_last_commits_for_tree.go2
-rw-r--r--internal/gitaly/service/operations/submodules_test.go2
-rw-r--r--internal/gitaly/service/repository/license.go2
9 files changed, 14 insertions, 12 deletions
diff --git a/cmd/gitaly-git2go/submodule_test.go b/cmd/gitaly-git2go/submodule_test.go
index 7e6c2a5bd..c05bc0af5 100644
--- a/cmd/gitaly-git2go/submodule_test.go
+++ b/cmd/gitaly-git2go/submodule_test.go
@@ -119,7 +119,7 @@ func TestSubmodule(t *testing.T) {
fmt.Sprintf("%s^{tree}:", response.CommitID),
tc.command.Submodule,
)
- parser := lstree.NewParser(bytes.NewReader(entry))
+ parser := lstree.NewParser(bytes.NewReader(entry), git.ObjectHashSHA1)
parsedEntry, err := parser.NextEntry()
require.NoError(t, err)
require.Equal(t, tc.command.Submodule, parsedEntry.Path)
diff --git a/internal/git/gitpipe/ls_tree.go b/internal/git/gitpipe/ls_tree.go
index 10c6237c1..5d2ad775f 100644
--- a/internal/git/gitpipe/ls_tree.go
+++ b/internal/git/gitpipe/ls_tree.go
@@ -80,7 +80,7 @@ func LsTree(
return
}
- parser := lstree.NewParser(cmd)
+ parser := lstree.NewParser(cmd, git.ObjectHashSHA1)
for {
entry, err := parser.NextEntry()
if err != nil {
diff --git a/internal/git/lstree/list_entries.go b/internal/git/lstree/list_entries.go
index e68a5055a..28d38a0ad 100644
--- a/internal/git/lstree/list_entries.go
+++ b/internal/git/lstree/list_entries.go
@@ -60,7 +60,7 @@ func ListEntries(
return nil, fmt.Errorf("spawning git-ls-tree: %w", err)
}
- parser := NewParser(cmd)
+ parser := NewParser(cmd, git.ObjectHashSHA1)
var entries []*Entry
for {
entry, err := parser.NextEntry()
diff --git a/internal/git/lstree/parser.go b/internal/git/lstree/parser.go
index 2a35df472..7c1a58adb 100644
--- a/internal/git/lstree/parser.go
+++ b/internal/git/lstree/parser.go
@@ -14,13 +14,15 @@ var ErrParse = errors.New("failed to parse git ls-tree response")
// Parser holds the necessary state for parsing the ls-tree output
type Parser struct {
- reader *bufio.Reader
+ reader *bufio.Reader
+ objectHash git.ObjectHash
}
// NewParser returns a new Parser
-func NewParser(src io.Reader) *Parser {
+func NewParser(src io.Reader, objectHash git.ObjectHash) *Parser {
return &Parser{
- reader: bufio.NewReader(src),
+ reader: bufio.NewReader(src),
+ objectHash: objectHash,
}
}
@@ -61,7 +63,7 @@ func (p *Parser) NextEntry() (*Entry, error) {
return nil, err
}
- objectID, err := git.ObjectHashSHA1.FromHex(string(treeEntryID))
+ objectID, err := p.objectHash.FromHex(string(treeEntryID))
if err != nil {
return nil, err
}
diff --git a/internal/git/lstree/parser_test.go b/internal/git/lstree/parser_test.go
index 3eb9a9111..8d8b94c16 100644
--- a/internal/git/lstree/parser_test.go
+++ b/internal/git/lstree/parser_test.go
@@ -69,7 +69,7 @@ func TestParser(t *testing.T) {
t.Run(tc.desc, func(t *testing.T) {
treeData := gittest.Exec(t, cfg, "-C", repoPath, "ls-tree", "-z", tc.treeID.String())
- parser := NewParser(bytes.NewReader(treeData))
+ parser := NewParser(bytes.NewReader(treeData), gittest.DefaultObjectHash)
parsedEntries := Entries{}
for {
entry, err := parser.NextEntry()
diff --git a/internal/gitaly/service/commit/list_files.go b/internal/gitaly/service/commit/list_files.go
index e252688cd..9a1da2197 100644
--- a/internal/gitaly/service/commit/list_files.go
+++ b/internal/gitaly/service/commit/list_files.go
@@ -81,7 +81,7 @@ func (s *server) listFiles(repo git.RepositoryExecutor, revision string, stream
sender := chunk.New(&listFilesSender{stream: stream})
- for parser := lstree.NewParser(cmd); ; {
+ for parser := lstree.NewParser(cmd, git.ObjectHashSHA1); ; {
entry, err := parser.NextEntry()
if err == io.EOF {
break
diff --git a/internal/gitaly/service/commit/list_last_commits_for_tree.go b/internal/gitaly/service/commit/list_last_commits_for_tree.go
index 4a7300de1..7e1c35b83 100644
--- a/internal/gitaly/service/commit/list_last_commits_for_tree.go
+++ b/internal/gitaly/service/commit/list_last_commits_for_tree.go
@@ -123,7 +123,7 @@ func (s *server) newLSTreeParser(in *gitalypb.ListLastCommitsForTreeRequest, str
return nil, nil, err
}
- return cmd, lstree.NewParser(cmd), nil
+ return cmd, lstree.NewParser(cmd, git.ObjectHashSHA1), nil
}
func sendCommitsForTree(batch []*gitalypb.ListLastCommitsForTreeResponse_CommitForTree, stream gitalypb.CommitService_ListLastCommitsForTreeServer) error {
diff --git a/internal/gitaly/service/operations/submodules_test.go b/internal/gitaly/service/operations/submodules_test.go
index 442cc2964..43ab9856b 100644
--- a/internal/gitaly/service/operations/submodules_test.go
+++ b/internal/gitaly/service/operations/submodules_test.go
@@ -93,7 +93,7 @@ func TestSuccessfulUserUpdateSubmoduleRequest(t *testing.T) {
require.Equal(t, commitMessage, commit.Subject)
entry := gittest.Exec(t, cfg, "-C", repoPath, "ls-tree", "-z", fmt.Sprintf("%s^{tree}:", response.BranchUpdate.CommitId), testCase.submodule)
- parser := lstree.NewParser(bytes.NewReader(entry))
+ parser := lstree.NewParser(bytes.NewReader(entry), git.ObjectHashSHA1)
parsedEntry, err := parser.NextEntry()
require.NoError(t, err)
require.Equal(t, testCase.submodule, parsedEntry.Path)
diff --git a/internal/gitaly/service/repository/license.go b/internal/gitaly/service/repository/license.go
index 55b28c4b0..8fc277ca6 100644
--- a/internal/gitaly/service/repository/license.go
+++ b/internal/gitaly/service/repository/license.go
@@ -123,7 +123,7 @@ func (f *gitFiler) ReadDir(string) ([]filer.File, error) {
return nil, err
}
- tree := lstree.NewParser(cmd)
+ tree := lstree.NewParser(cmd, git.ObjectHashSHA1)
var files []filer.File
for {