From: Marius Storm-Olsen <marius@trolltech.com>
To: Git Mailing List <git@vger.kernel.org>
Subject: [TESTCASE] Failing 'git am' when core.autocrlf=true
Date: Thu, 23 Aug 2007 16:07:39 +0200 [thread overview]
Message-ID: <46CD94AB.7070709@trolltech.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 950 bytes --]
Hi,
I have an issue with git-rebase failing on a repository using
core.autocrlf=true
I've tracked it down to git-am failing with core.autocrlf=true and
passing with core.autocrlf=false. I've tried digging deeper into the
code, but for some reason ce_match_stat_basic() (read-cache.c:~187)
reports the size of the file in the index to be 0 (when
core.autocrlf=true), which is why git-am bails out on the patch.
(ce->ce_size == 0, while st->st_size == the correct size on disk)
If I force the bailout in check_patch() (builtin-apply.c:~2101) to
_not_ happen, the patch applies without problems.
Can anyone please enlighten me on why this may happen?
I've attached a SH script which will reproduce the problem. Simply run
./git_am_crlf_testcase.sh
to reproduce the problem, and run
./git_am_crlf_testcase.sh --no-crlf
to show it working when core.autocrlf=false.
Thanks for your help!
--
.marius
[-- Attachment #1.2: git_am_crlf_testcase.sh --]
[-- Type: text/plain, Size: 3002 bytes --]
#!/bin/sh
#
# Testcase for failing 'git am' on a repository with core.autocrlf = true
# ./git_am_crlf_testcase.sh fails for Git 1.5.3.rc4
# ./git_am_crlf_testcase.sh --no-crlf passes
#
# --------------------------------------------------------------------------------------------------
TESTCASE_REPO=git_am_crlf_testcase
GIT_AUTOCRLF=true
# parse the arguments
while [ "$#" -gt 0 ]; do
case "$1" in
--no-crlf) # Turn off autocrlf for the repository
GIT_AUTOCRLF=false
;;
--crlf) # Turn on autocrlf for the repository
GIT_AUTOCRLF=true
;;
esac
shift
done
# Functions ----------------------------------------------------------------------------------------
die() {
echo >&2 "$@"
exit 1
}
print_patch() {
cat << __END_OF_PATCH__
From 38be10072e45dd6b08ce40851e3fca60a31a340b Mon Sep 17 00:00:00 2001
From: Marius Storm-Olsen <x@y.com>
Date: Thu, 23 Aug 2007 13:00:00 +0200
Subject: test1
---
foo | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
diff --git a/foo b/foo
new file mode 100644
index 0000000000000000000000000000000000000000..5716ca5987cbf97d6bb54920bea6adde242d87e6
--- /dev/null
+++ b/foo
@@ -0,0 +1 @@
+bar
--
1.5.3.rc4.mingw.2.3.g3318a-dirty
From 3bb3855cf028fc90010e2f51aceb6d3a90039c5c Mon Sep 17 00:00:00 2001
From: Marius Storm-Olsen <x@y.com>
Date: Thu, 23 Aug 2007 13:00:01 +0200
Subject: test2
---
foo | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/foo b/foo
index 5716ca5987cbf97d6bb54920bea6adde242d87e6..e2994c5ae2f7c41a306d9b41b64af4d6b7242793 100644
--- a/foo
+++ b/foo
@@ -1 +1,2 @@
bar
+baz
--
1.5.3.rc4.mingw.2.3.g3318a-dirty
From 38212fd002da735b3626c6f1d801c8ca37ce04e6 Mon Sep 17 00:00:00 2001
From: Marius Storm-Olsen <x@y.com>
Date: Thu, 23 Aug 2007 13:00:02 +0200
Subject: test3
---
foo | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/foo b/foo
index e2994c5ae2f7c41a306d9b41b64af4d6b7242793..ad94f9e431a24bbe67e9e5935e2a8cf20a73e723 100644
--- a/foo
+++ b/foo
@@ -1,2 +1,3 @@
bar
baz
+blah
--
1.5.3.rc4.mingw.2.3.g3318a-dirty
__END_OF_PATCH__
}
# 'main' -------------------------------------------------------------------------------------------
# Kill old testcase repository
test -d "$TESTCASE_REPO" && rm -rf $TESTCASE_REPO
# Create new testcase repository
mkdir $TESTCASE_REPO &&
cd $TESTCASE_REPO &&
git init || die "Couldn\'t create testcase repository \'$TESTCASE_REPO\'!"
# Set autocrlf explicitly
git config core.autocrlf $GIT_AUTOCRLF || die "Couldn\'t set core.autocrlf to \'$GIT_AUTOCRLF\'!"
# Create initial commit
(echo foo > bar &&
git add bar &&
git commit -m "initial commit") || die "Couldn\'t create initial file!"
# Apply failing patch set
print_patch | git am --binary -3 || die "Applying patch set to autocrlf=true repo failed!"
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 187 bytes --]
next reply other threads:[~2007-08-23 14:06 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-23 14:07 Marius Storm-Olsen [this message]
2007-08-23 17:18 ` [TESTCASE] Failing 'git am' when core.autocrlf=true Linus Torvalds
2007-08-23 17:45 ` Marius Storm-Olsen
2007-08-23 18:41 ` Junio C Hamano
2007-08-23 19:25 ` Linus Torvalds
2007-08-23 19:23 ` Linus Torvalds
2007-08-23 19:44 ` Junio C Hamano
2007-08-23 20:11 ` Marius Storm-Olsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46CD94AB.7070709@trolltech.com \
--to=marius@trolltech.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).