Subject: Re: [BUG] [RESOLVED] merge-recursive call in git-am -3 chokes, autocrlf issue?

From: "Scott R. Godin" <[email-masked]>
Date: Thu, 01 Apr 2010 13:03:15 -0400

On 03/18/2010 08:49 PM, Thomas Rast wrote:
> Hi everyone,
>
> I helped Scott R. "WebDragon" Godin on IRC[1] with a bug internal to
> git-rebase.  It manifests like this:

It turns out it's not actually a bug in git-am/git-rebase.

while changing merge-recursive to merge-resolve in git-am solved the 
plain git rebase branch1 branch2 issue, I still ran into trouble when 
trying to do a rebase -i so I could squash a commit or two together.

Ilari stepped up to the plate [1] and it was quickly determined that the 
working copy cache is somehow left dirty after checkout.

doener stepped back in, and while pulling the hooks out that used 
setgitperms.perl, temporarily, it became obvious that one of them was 
the culprit, and further testing at this point would allow the rebase to 
continue, albiet without permissions being set. using git update-index 
--refresh allowed things to go on normally, when added to the 
post-checkout hook calling setgitperms.perl [2].

So my recommendation at this point is to patch the instructions within 
setgitperms.perl to add 'git update-index --refresh' to the end of the 
post-checkout hook.

I've since reset git-am to use recursive again (instead of resolve) and 
done several rebases (both with and without -i) and all seems well and 
normal, and this has made my day.

patch follows:

--8<--

Subject: [PATCH] revise setgitperms.perl hook script description to fix 
rebase issue

add index-refresh command to post-checkout post-merge script hooks to 
keep working tree from being marked dirty during a rebase action
---
  contrib/hooks/setgitperms.perl |    1 +
  1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/contrib/hooks/setgitperms.perl b/contrib/hooks/setgitperms.perl
index a577ad0..286835d 100644
--- a/contrib/hooks/setgitperms.perl
+++ b/contrib/hooks/setgitperms.perl
@@ -17,6 +17,7 @@
  #      #!/bin/sh
  #     SUBDIRECTORY_OK=1 . git-sh-setup
  #     $GIT_DIR/hooks/setgitperms.perl -w
+#     git update-index --refresh
  #
  use strict;
  use Getopt::Long;

--8<--

[1] http://colabti.org/irclogger/irclogger_log/git?date=2010-03-31#l1556
[2] http://colabti.org/irclogger/irclogger_log/git?date=2010-03-31#l1743

-- 
(please respond to the list as opposed to my email box directly,
unless you are supplying private information you don't want public
on the list)