<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/tests/merge/trees/recursive.c, branch ethomson/https_proxy</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/'/>
<entry>
<title>Add failing test case for virtual commit merge base issue</title>
<updated>2018-02-04T10:29:41+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2018-01-22T23:56:22+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=b8823c2b1c2962edd7b2bf550266d4f136100182'/>
<id>b8823c2b1c2962edd7b2bf550266d4f136100182</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge::trees::recursive: test for virtual base building</title>
<updated>2018-02-04T10:29:41+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2018-01-21T16:50:40+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=afcaf35eda87028705012e9deab75bf282be72f3'/>
<id>afcaf35eda87028705012e9deab75bf282be72f3</id>
<content type='text'>
Virtual base building: ensure that the virtual base is created and
revwalked in the same way as git.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Virtual base building: ensure that the virtual base is created and
revwalked in the same way as git.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge: reverse merge bases for recursive merge</title>
<updated>2018-02-04T10:29:41+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2018-01-21T18:05:45+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=b924df1eadfaf33285d8020c50cb18ddde1a8165'/>
<id>b924df1eadfaf33285d8020c50cb18ddde1a8165</id>
<content type='text'>
When the commits being merged have multiple merge bases, reverse the
order when creating the virtual merge base.  This is for compatibility
with git's merge-recursive algorithm, and ensures that we build
identical trees.

Git does this to try to use older merge bases first.  Per 8918b0c:

&gt; It seems to be the only sane way to do it: when a two-head merge is
&gt; done, and the merge-base and one of the two branches agree, the
&gt; merge assumes that the other branch has something new.
&gt;
&gt; If we start creating virtual commits from newer merge-bases, and go
&gt; back to older merge-bases, and then merge with newer commits again,
&gt; chances are that a patch is lost, _because_ the merge-base and the
&gt; head agree on it. Unlikely, yes, but it happened to me.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the commits being merged have multiple merge bases, reverse the
order when creating the virtual merge base.  This is for compatibility
with git's merge-recursive algorithm, and ensures that we build
identical trees.

Git does this to try to use older merge bases first.  Per 8918b0c:

&gt; It seems to be the only sane way to do it: when a two-head merge is
&gt; done, and the merge-base and one of the two branches agree, the
&gt; merge assumes that the other branch has something new.
&gt;
&gt; If we start creating virtual commits from newer merge-bases, and go
&gt; back to older merge-bases, and then merge with newer commits again,
&gt; chances are that a patch is lost, _because_ the merge-base and the
&gt; head agree on it. Unlikely, yes, but it happened to me.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge: recursive uses larger conflict markers</title>
<updated>2018-01-21T11:47:43+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2018-01-20T19:41:28+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=185b0d0823869bf180bb1d3541dd1dc0ca2447fe'/>
<id>185b0d0823869bf180bb1d3541dd1dc0ca2447fe</id>
<content type='text'>
Git uses longer conflict markers in the recursive merge base - two more
than the default (thus, 9 character long conflict markers).  This allows
users to tell the difference between the recursive merge conflicts and
conflicts between the ours and theirs branches.

This was introduced in git d694a17986a28bbc19e2a6c32404ca24572e400f.

Update our tests to expect this as well.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Git uses longer conflict markers in the recursive merge base - two more
than the default (thus, 9 character long conflict markers).  This allows
users to tell the difference between the recursive merge conflicts and
conflicts between the ours and theirs branches.

This was introduced in git d694a17986a28bbc19e2a6c32404ca24572e400f.

Update our tests to expect this as well.
</pre>
</div>
</content>
</entry>
<entry>
<title>recursive merge: add a recursion limit</title>
<updated>2015-11-25T21:25:47+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2015-11-21T00:01:42+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=5b9c63c3f673cbc209e53627be2a0e87c17ccb3c'/>
<id>5b9c63c3f673cbc209e53627be2a0e87c17ccb3c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge: handle conflicts in recursive base building</title>
<updated>2015-11-25T20:38:39+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@microsoft.com</email>
</author>
<published>2015-11-20T22:33:49+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=78859c63442bb367a4d426ec8ee31c82a28a93d7'/>
<id>78859c63442bb367a4d426ec8ee31c82a28a93d7</id>
<content type='text'>
When building a recursive merge base, allow conflicts to occur.
Use the file (with conflict markers) as the common ancestor.

The user has already seen and dealt with this conflict by virtue
of having a criss-cross merge.  If they resolved this conflict
identically in both branches, then there will be no conflict in the
result.  This is the best case scenario.

If they did not resolve the conflict identically in the two branches,
then we will generate a new conflict.  If the user is simply using
standard conflict output then the results will be fairly sensible.
But if the user is using a mergetool or using diff3 output, then the
common ancestor will be a conflict file (itself with diff3 output,
haha!).  This is quite terrible, but it matches git's behavior.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When building a recursive merge base, allow conflicts to occur.
Use the file (with conflict markers) as the common ancestor.

The user has already seen and dealt with this conflict by virtue
of having a criss-cross merge.  If they resolved this conflict
identically in both branches, then there will be no conflict in the
result.  This is the best case scenario.

If they did not resolve the conflict identically in the two branches,
then we will generate a new conflict.  If the user is simply using
standard conflict output then the results will be fairly sensible.
But if the user is using a mergetool or using diff3 output, then the
common ancestor will be a conflict file (itself with diff3 output,
haha!).  This is quite terrible, but it matches git's behavior.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge tests: add complex recursive example</title>
<updated>2015-11-25T20:38:33+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2015-11-09T16:55:26+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=34a51428a121800509c2bea94137a17802e37982'/>
<id>34a51428a121800509c2bea94137a17802e37982</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge: add recursive test with conflicting contents</title>
<updated>2015-11-25T20:37:51+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2015-10-27T23:00:30+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=b1eef912cffb9e3ce9792b6aee816c1a45c85fb0'/>
<id>b1eef912cffb9e3ce9792b6aee816c1a45c85fb0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge: add recursive test with three merge bases</title>
<updated>2015-11-25T20:37:39+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2015-10-27T19:23:35+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=fccad82ee8f431e06097b3a1282228b40ae7128f'/>
<id>fccad82ee8f431e06097b3a1282228b40ae7128f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>merge: improve test names in recursive merge tests</title>
<updated>2015-11-25T20:37:33+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2015-10-26T21:44:36+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=99d9d9a470ca9b693f6dbee05f1cfcd98a5d148d'/>
<id>99d9d9a470ca9b693f6dbee05f1cfcd98a5d148d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
