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:
authorKarthik Nayak <knayak@gitlab.com>2023-05-04 10:03:59 +0300
committerKarthik Nayak <knayak@gitlab.com>2023-05-31 14:56:59 +0300
commitdcf08678c91e0f64f92c6cc9bf8bdb8d8c891be6 (patch)
tree7915799cbd31a0027acd534193894d8ae0148ecf
parent6c6be4c5f5f7158698dd5d143a6f6b7457c853f8 (diff)
localrepo: Add mode information to `MergeTreeConflictError`
The `MergeTreeConflictError` doesn't contain the mode information of the conflict files. Let's add this information as its needed by `ListConflictFiles`.
-rw-r--r--internal/git/localrepo/merge.go7
-rw-r--r--internal/git/localrepo/merge_test.go20
2 files changed, 27 insertions, 0 deletions
diff --git a/internal/git/localrepo/merge.go b/internal/git/localrepo/merge.go
index 874a94d9b..4b09f1b01 100644
--- a/internal/git/localrepo/merge.go
+++ b/internal/git/localrepo/merge.go
@@ -163,6 +163,11 @@ func parseMergeTreeError(objectHash git.ObjectHash, cfg mergeTreeConfig, output
return "", fmt.Errorf("parsing conflicting file info: %s", infoLine)
}
+ mode, err := strconv.ParseInt(info[0], 8, 32)
+ if err != nil {
+ return "", fmt.Errorf("parsing mode: %w", err)
+ }
+
mergeTreeConflictError.ConflictingFileInfo[i].OID, err = objectHash.FromHex(info[1])
if err != nil {
return "", fmt.Errorf("hex to oid: %w", err)
@@ -177,6 +182,7 @@ func parseMergeTreeError(objectHash git.ObjectHash, cfg mergeTreeConfig, output
return "", fmt.Errorf("invalid value for stage: %d", stage)
}
+ mergeTreeConflictError.ConflictingFileInfo[i].Mode = int32(mode)
mergeTreeConflictError.ConflictingFileInfo[i].Stage = MergeStage(stage)
mergeTreeConflictError.ConflictingFileInfo[i].FileName = infoAndFilename[1]
}
@@ -213,6 +219,7 @@ func parseMergeTreeError(objectHash git.ObjectHash, cfg mergeTreeConfig, output
// ConflictingFileInfo holds the conflicting file info output from git-merge-tree(1).
type ConflictingFileInfo struct {
FileName string
+ Mode int32
OID git.ObjectID
Stage MergeStage
}
diff --git a/internal/git/localrepo/merge_test.go b/internal/git/localrepo/merge_test.go
index 6e5dc5b70..3106e16d4 100644
--- a/internal/git/localrepo/merge_test.go
+++ b/internal/git/localrepo/merge_test.go
@@ -175,11 +175,13 @@ func TestMergeTree(t *testing.T) {
FileName: "file2",
OID: blob1,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob2,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
},
ConflictInfoMessage: []ConflictInfoMessage{
@@ -251,16 +253,19 @@ func TestMergeTree(t *testing.T) {
FileName: "file1",
OID: blob1,
Stage: MergeStageAncestor,
+ Mode: 0o100644,
},
{
FileName: "file1",
OID: blob2,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file1",
OID: blob3,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
},
ConflictInfoMessage: []ConflictInfoMessage{
@@ -321,11 +326,13 @@ func TestMergeTree(t *testing.T) {
FileName: "file2",
OID: blob2,
Stage: MergeStageAncestor,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob2,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
},
ConflictInfoMessage: []ConflictInfoMessage{
@@ -393,21 +400,25 @@ func TestMergeTree(t *testing.T) {
FileName: "file2",
OID: blob2a,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob3a,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
{
FileName: "file3",
OID: blob2b,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file3",
OID: blob3b,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
},
ConflictInfoMessage: []ConflictInfoMessage{
@@ -491,26 +502,31 @@ func TestMergeTree(t *testing.T) {
FileName: "file1",
OID: blob,
Stage: MergeStageAncestor,
+ Mode: 0o100644,
},
{
FileName: "file1",
OID: blob2a,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file1",
OID: blob3a,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob2b,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob3b,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
},
ConflictInfoMessage: []ConflictInfoMessage{
@@ -588,21 +604,25 @@ func TestMergeTree(t *testing.T) {
FileName: "file1",
OID: blob,
Stage: MergeStageAncestor,
+ Mode: 0o100644,
},
{
FileName: "file1",
OID: blob3a,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob2b,
Stage: MergeStageOurs,
+ Mode: 0o100644,
},
{
FileName: "file2",
OID: blob3b,
Stage: MergeStageTheirs,
+ Mode: 0o100644,
},
},
ConflictInfoMessage: []ConflictInfoMessage{