2008/5/21 Junio C Hamano <gitster@xxxxxxxxx>: > Look at what the "switch to a1 branch after committing to b1" does again. > You modify "file1" and commit to "b1" and you now have a local change in > file1 (because you update only the index and not the work tree) that is > effectively a revert of what you committed just now, and a1 and b1 differs > at that path. You get "Entry 'file1' not uptodate. Cannot merge." when > you try to switch to "a1". > > $ sh t6031-merge-recursive.sh -i -v > * expecting success: > : >file1 && > git add file1 && > git commit -m initial && > git checkout -b a1 master && > : >dummy && > git add dummy && > git commit -m a && > git checkout -b b1 master && > git update-index --chmod=+x file1 && > git commit -m b1 && > git checkout a1 && > git merge-recursive master -- a1 b1 && > test -x file1 > > Created initial commit bae7a40: initial > 0 files changed, 0 insertions(+), 0 deletions(-) > create mode 100644 file1 > Switched to a new branch "a1" > Created commit 1f64f65: a > 0 files changed, 0 insertions(+), 0 deletions(-) > create mode 100644 dummy > Switched to a new branch "b1" > Created commit 98a1cf4: b1 > 0 files changed, 0 insertions(+), 0 deletions(-) > mode change 100644 => 100755 file1 > error: Entry 'file1' not uptodate. Cannot merge. > * FAIL 1: mode change in one branch: keep changed version It did work for me when I tried it back then. Maybe I just accidentally tested something else. > If we squash the following on top of your patch, I think we can help > filesystems without executable bit without breaking filesystems with one. > Can you see if it works on your executable-bit-less setup? Not in the moment. > -- >8 -- > t/t6031-merge-recursive.sh | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh > index f1c91c8..8073e0c 100755 > --- a/t/t6031-merge-recursive.sh > +++ b/t/t6031-merge-recursive.sh > @@ -3,6 +3,9 @@ > test_description='merge-recursive: handle file mode' > . ./test-lib.sh > > +# Note that we follow "chmod +x F" with "update-index --chmod=+x F" to > +# help filesystems that do not have the executable bit. > + > test_expect_success 'mode change in one branch: keep changed version' ' > : >file1 && > git add file1 && > @@ -12,6 +15,7 @@ test_expect_success 'mode change in one branch: keep changed version' ' > git add dummy && > git commit -m a && > git checkout -b b1 master && > + chmod +x file1 && Now, this is pointless in my setup. Cygwin just ignores the operation and decidedddds (presumably according the file _content_ or maybe phase of the moon) that is not executable. Working tree is still modified. Maybe I should just live with it (and disable the test locally). It is just very broken system which hopefully no one besides me ever gets to see. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html