Thomas Rast <[email protected]> writes:
> Jeff King <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html