Re: [PATCH 0/2] RFC: implement new zdiff3 conflict style
- From
Elijah Newren <newren@gmail.com>
- Date
- Jun 15, 2021, 21:45 UTC
- Message-ID
- <CABPp-BF2KnktDTtTfp=hRS36HN-xYC8=P1eYcqaBhJvAJcTCAw@mail.gmail.com>
- In-Reply-To
- <55d0eb59-10a0-1dff-f195-4d660c6028e0@kdbg.org>
On Tue, Jun 15, 2021 at 2:36 PM Johannes Sixt <j6t@kdbg.org> wrote:
Show 11 quoted lines
> > Am 15.06.21 um 07:16 schrieb Elijah Newren via GitGitGadget: > > Implement a zealous diff3, or "zdiff3". This new mode is identical to > > ordinary diff3 except that it allows compaction of common lines between the > > two sides of history, if those common lines occur at the beginning or end of > > a conflict hunk. > > As a data point, I tried this series (cf9d93e547 en/zdiff3) on my > criss-cross merge test case that started this adventure, and it produces > the very same output as diff3; cf. > https://lore.kernel.org/git/60883e1b-787f-5ec2-a9af-f2f6757d3c43@kdbg.org/
That's good to hear; your two sides had no common text at the beginning or end of the conflict hunk, so I wouldn't expect zdiff3 to change that particular example.
The XDL_MERGE_FAVOR_BASE idea (cf. https://lore.kernel.org/git/20210611190235.1970106-1-newren@gmail.com/), though would I think simplify the diff3 conflict markers in your example to
<<<<<<< HEAD
CClustering ComputeSSLClusters(double threshPercent, const
CDataInfo* scale) const override;
void ComputeDist(DistFunc distFunc, CDoubleArray& dist,
double& minDist, double& maxDist) const;
double EstimateNodeDist2() const override;
std::vector<double> EstimateNeighborMinDist() const override;
||||||| merged common ancestors
CClustering ComputeClusters(const double* dist, double threshold,
const CDataInfo* scale) const override;
virtual void ComputeDist(DistFunc distFunc, CDoubleArray& dist,
double& minDist, double& maxDist);
virtual void ComputeUMatrix();
virtual void ComputeKNearest(int K, const double*,
Neighborhood& result) const;
=======
CClustering ComputeSSLClusters(double threshPercent,
const CDoubleArray& compWeights, const CDataInfo* scale) const override;
static void ComputeDist(const CNetNodeHolder& vecs, CDoubleArray& dist,
double& minDist, double& maxDist);>>>>>>> no-compweights-in-cnet
That seems like it might be nicer, but I don't do many criss-cross merges myself so it'd be nice to get opinions of others like you who do.