Thomas Rast <tr...@inf.ethz.ch> writes:

> Jeff King <p...@peff.net> writes:
>
>> On Thu, Jun 20, 2013 at 03:06:01PM +0200, Thomas Rast wrote:
>>
>>> +test_expect_success 'pulling into void does not overwrite staged files' '
>>> +   git init cloned-staged-colliding &&
>>> +   (
>>> +           cd cloned-staged-colliding &&
>>> +           echo "alternate content" >file &&
>>> +           git add file &&
>>> +           test_must_fail git pull .. master &&
>>> +           echo "alternate content" >expect &&
>>> +           test_cmp expect file &&
>>> +           git cat-file blob :file >file.index &&
>>> +           test_cmp expect file.index
>>> +   )
>>> +'
>>
>> I naively would have expected this to leave us in a conflicted state
>> over "file".  But I guess read-tree just rejects it, because we are not
>> doing a real three-way merge.  I'm not sure it is that big a deal; this
>> is more about safety than about creating a conflicted/resolvable state.
>
> Note that the test_must_fail essentially tests that the merge is rejected.

Bah, no it doesn't, a conflicting merge also returns a nonzero status.
Sigh.

If you meant we should actually conflict, I'm not sure what options
there would be other than actually calling a merge driver.  And we could
actually do this like so (it'll obviously break the tests):

diff --git i/git-pull.sh w/git-pull.sh
index 1f84383..b3d36a8 100755
--- i/git-pull.sh
+++ w/git-pull.sh
@@ -276,7 +276,7 @@ then
        # lose index/worktree changes that the user already made on
        # the unborn branch.
        empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
-       git read-tree -m -u $empty_tree HEAD || exit 1
+       git merge-recursive $empty_tree -- $(git write-tree) HEAD || exit 1
        exit
 fi
 


-- 
Thomas Rast
trast@{inf,student}.ethz.ch
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to