From 4ce0db740a2def86625c31c695fcf2e51143bd7c Mon Sep 17 00:00:00 2001 From: J23 Date: Wed, 18 Dec 2024 14:17:07 +0800 Subject: [PATCH] merge-file: fix label name --- pkg/command/command_merge_file.go | 29 +++++++++++++++++++++++------ pkg/zeta/merge_file.go | 18 ++++++++++-------- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/pkg/command/command_merge_file.go b/pkg/command/command_merge_file.go index 8a25f67..d052a4b 100644 --- a/pkg/command/command_merge_file.go +++ b/pkg/command/command_merge_file.go @@ -30,6 +30,13 @@ func (c *MergeFile) Summary() string { return fmt.Sprintf(mergeFileSummaryFormat, W("Usage: ")) } +func (c *MergeFile) labelName(i int, n string) string { + if i < len(c.L) { + return c.L[i] + } + return n +} + func readText(p string, textConv bool) (string, error) { fd, err := os.Open(p) if err != nil { @@ -76,16 +83,17 @@ func (c *MergeFile) mergeExtra(g *Globals) error { fmt.Fprintf(os.Stderr, "merge-file: open error: %v\n", err) return err } - mergedText, conflict, err := diferenco.Merge(context.Background(), &diferenco.MergeOptions{ + opts := &diferenco.MergeOptions{ TextO: textO, TextA: textA, TextB: textB, - LabelO: c.O, - LabelA: c.F1, - LabelB: c.F1, A: a, Style: style, - }) + LabelA: c.labelName(0, c.F1), + LabelO: c.labelName(1, c.O), + LabelB: c.labelName(2, c.F2), + } + mergedText, conflict, err := diferenco.Merge(context.Background(), opts) if err != nil { fmt.Fprintf(os.Stderr, "merge-file: merge error: %v\n", err) return err @@ -117,7 +125,16 @@ func (c *MergeFile) Run(g *Globals) error { case c.ZDiff3: style = diferenco.STYLE_ZEALOUS_DIFF3 } - if err := r.MergeFile(context.Background(), &zeta.MergeFileOptions{O: c.O, A: c.F1, B: c.F2, Style: style, DiffAlgorithm: c.DiffAlgorithm, Stdout: c.Stdout}); err != nil { + opts := &zeta.MergeFileOptions{ + O: c.O, A: c.F1, B: c.F2, + Style: style, + DiffAlgorithm: c.DiffAlgorithm, + Stdout: c.Stdout, + LabelA: c.labelName(0, c.F1), + LabelO: c.labelName(1, c.O), + LabelB: c.labelName(2, c.F2), + } + if err := r.MergeFile(context.Background(), opts); err != nil { if !zeta.IsExitCode(err, 1) { diev("merge-file: error: %v", err) } diff --git a/pkg/zeta/merge_file.go b/pkg/zeta/merge_file.go index 76454f6..a933081 100644 --- a/pkg/zeta/merge_file.go +++ b/pkg/zeta/merge_file.go @@ -52,11 +52,12 @@ func (r *Repository) resolveMergeDriver() odb.MergeDriver { } type MergeFileOptions struct { - O, A, B string - Style int - DiffAlgorithm string - Stdout bool - TextConv bool + O, A, B string + LabelO, LabelA, LabelB string + Style int + DiffAlgorithm string + Stdout bool + TextConv bool } func (opts *MergeFileOptions) diffAlgorithmFromName(defaultDiffAlgorithm string) diferenco.Algorithm { @@ -102,13 +103,14 @@ func (r *Repository) MergeFile(ctx context.Context, opts *MergeFileOptions) erro if err != nil { return err } + merged, conflict, err := diferenco.Merge(ctx, &diferenco.MergeOptions{ TextO: textO, TextA: textA, TextB: textB, - LabelO: o.String()[0:8], - LabelA: a.String()[0:8], - LabelB: b.String()[0:8], + LabelO: opts.LabelO, + LabelA: opts.LabelA, + LabelB: opts.LabelB, A: diffAlgorithm, Style: opts.Style, })