* stgit truncates binary files to zero length when applying patches
@ 2005-11-15 14:42 Karl Hasselström
2005-11-16 11:11 ` Catalin Marinas
0 siblings, 1 reply; 35+ messages in thread
From: Karl Hasselström @ 2005-11-15 14:42 UTC (permalink / raw)
To: catalin.marinas; +Cc: git
When applying patches and not fast-forwarding, stgit truncates the
binary files to zero length:
$ cg-init .
defaulting to local storage area
Committing initial tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904
Committed as 73161b6ee428ac8b1c1b16b560c40e13330693d2.
$ stg init
$ stg new foo
Invoking the editor: "emacs .stgit.msg"... done (exit code: 0)
$ cp /bin/bash .
$ stg add bash
$ stg refresh
Refreshing patch "foo"... done
$ ls -l
total 584
-rwxr-xr-x 1 kha vtech 593304 Nov 15 15:34 bash*
$ stg pop
Popping patch "foo"... done
No patches applied
$ stg new bar
Invoking the editor: "emacs .stgit.msg"... done (exit code: 0)
$ echo bar > bar.txt
$ stg add bar.txt
$ stg refresh
Refreshing patch "bar"... done
$ stg push foo
Pushing patch "foo"... done
Now at patch "foo"
$ ls -l
total 4
-rw-r--r-- 1 kha vtech 4 Nov 15 15:34 bar.txt
-rwxr-xr-x 1 kha vtech 0 Nov 15 15:35 bash*
Without the "bar" patch, popping and then pushing "foo" works as
expected.
--
Karl Hasselström, kha@treskal.com
www.treskal.com/kalle
^ permalink raw reply [flat|nested] 35+ messages in thread* Re: stgit truncates binary files to zero length when applying patches 2005-11-15 14:42 stgit truncates binary files to zero length when applying patches Karl Hasselström @ 2005-11-16 11:11 ` Catalin Marinas 2005-11-16 11:54 ` Karl Hasselström 2005-11-16 18:30 ` Junio C Hamano 0 siblings, 2 replies; 35+ messages in thread From: Catalin Marinas @ 2005-11-16 11:11 UTC (permalink / raw) To: Karl Hasselström; +Cc: git On 15/11/05, Karl Hasselström <kha@treskal.com> wrote: > When applying patches and not fast-forwarding, stgit truncates the > binary files to zero length: I've never tried binaries with StGIT before. When pushing a patch, if a merge is needed (like in your case, the base of the foo patch has changed), StGIT first tries "git-diff-tree | git-apply" for speed reasons. If this fails, it falls back to a three-way merge. Unfortunately, git-apply doesn't fail for patches including binary files and simply creates an empty file. I think git-apply should be changed to fail to apply this kind of patches. -- Catalin ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: stgit truncates binary files to zero length when applying patches 2005-11-16 11:11 ` Catalin Marinas @ 2005-11-16 11:54 ` Karl Hasselström 2005-11-16 12:31 ` Catalin Marinas 2005-11-16 18:30 ` Junio C Hamano 1 sibling, 1 reply; 35+ messages in thread From: Karl Hasselström @ 2005-11-16 11:54 UTC (permalink / raw) To: Catalin Marinas; +Cc: git On 2005-11-16 11:11:56 +0000, Catalin Marinas wrote: > On 15/11/05, Karl Hasselström <kha@treskal.com> wrote: > > > When applying patches and not fast-forwarding, stgit truncates the > > binary files to zero length: > > I've never tried binaries with StGIT before. I don't blame you. Binary patches aren't something I normally create either. It's just that I find stgit patches a good way to logically structure a largeish change that I'm working on before committing it. (I could probably accoplish the same thing with one branch instead of each stgit patch, but then it would be quite a lot of work to manually push updates through all the branches.) > When pushing a patch, if a merge is needed (like in your case, the > base of the foo patch has changed), StGIT first tries "git-diff-tree > | git-apply" for speed reasons. If this fails, it falls back to a > three-way merge. > > Unfortunately, git-apply doesn't fail for patches including binary > files and simply creates an empty file. I think git-apply should be > changed to fail to apply this kind of patches. Yes, at least if stgit is going to continue to use it like this. Refusing to handle binary files is somewhat disappointing, but still OK; agreeing to handle them and then silently wiping them is a bit less OK. (But don't worry; it is a perfect world, after all, so of course I had backups. :-) -- Karl Hasselström, kha@treskal.com www.treskal.com/kalle ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: stgit truncates binary files to zero length when applying patches 2005-11-16 11:54 ` Karl Hasselström @ 2005-11-16 12:31 ` Catalin Marinas 2005-11-16 13:03 ` Karl Hasselström 0 siblings, 1 reply; 35+ messages in thread From: Catalin Marinas @ 2005-11-16 12:31 UTC (permalink / raw) To: Karl Hasselström; +Cc: git On 16/11/05, Karl Hasselström <kha@treskal.com> wrote: > On 2005-11-16 11:11:56 +0000, Catalin Marinas wrote: > > Unfortunately, git-apply doesn't fail for patches including binary > > files and simply creates an empty file. I think git-apply should be > > changed to fail to apply this kind of patches. > > Yes, at least if stgit is going to continue to use it like this. > Refusing to handle binary files is somewhat disappointing, but still > OK; agreeing to handle them and then silently wiping them is a bit > less OK. A workaround for this would be to add a config option for StGIT to always use the three-way merge for pushing patches. The problem with this is speed since git-diff-tree | git-apply is much faster (and pretty safe since fuzzy patching is not allowed) and most of the patches would apply cleanly with only this. -- Catalin ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: stgit truncates binary files to zero length when applying patches 2005-11-16 12:31 ` Catalin Marinas @ 2005-11-16 13:03 ` Karl Hasselström 0 siblings, 0 replies; 35+ messages in thread From: Karl Hasselström @ 2005-11-16 13:03 UTC (permalink / raw) To: Catalin Marinas; +Cc: git On 2005-11-16 12:31:27 +0000, Catalin Marinas wrote: > On 16/11/05, Karl Hasselström <kha@treskal.com> wrote: > > > On 2005-11-16 11:11:56 +0000, Catalin Marinas wrote: > > > > > Unfortunately, git-apply doesn't fail for patches including > > > binary files and simply creates an empty file. I think git-apply > > > should be changed to fail to apply this kind of patches. > > > > Yes, at least if stgit is going to continue to use it like this. > > Refusing to handle binary files is somewhat disappointing, but > > still OK; agreeing to handle them and then silently wiping them is > > a bit less OK. > > A workaround for this would be to add a config option for StGIT to > always use the three-way merge for pushing patches. The problem with > this is speed since git-diff-tree | git-apply is much faster (and > pretty safe since fuzzy patching is not allowed) and most of the > patches would apply cleanly with only this. The proper fix has to be to convince git-apply to either handle patches with binary files, or to make it fail; in both cases, stgit will be fine. If the former is somehow intractable or undesirable, and the latter would break existing callers (and/or inconvenience users), perhaps it could fail on binary files only when a --text-only flag was given. -- Karl Hasselström, kha@treskal.com www.treskal.com/kalle ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: stgit truncates binary files to zero length when applying patches 2005-11-16 11:11 ` Catalin Marinas 2005-11-16 11:54 ` Karl Hasselström @ 2005-11-16 18:30 ` Junio C Hamano 2005-11-16 22:15 ` [PATCH] git-apply: fail if a patch cannot be applied Junio C Hamano 2005-11-17 1:21 ` master has some toys Junio C Hamano 1 sibling, 2 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-16 18:30 UTC (permalink / raw) To: Catalin Marinas; +Cc: git Catalin Marinas <catalin.marinas@gmail.com> writes: > ... When pushing a patch, if > a merge is needed (like in your case, the base of the foo patch has > changed), StGIT first tries "git-diff-tree | git-apply" for speed > reasons. If this fails, it falls back to a three-way merge. I think many of the scripts rely on git-apply failing reliably for unapplicable patches. I'll do a new test script in git.git/t and if it fails on binary files, try to fix it today. Incidentally, for the last couple of days, I was working on adding a very limited binary file diff support to "diff piped to apply" pattern, and the result has been posted as "reworked rebase" patches. It is very limited in the sense that the diff output does not attempt to be useful if the patch consumer does not have both pre- and post-image blob, but for the use of StGIT's internal patch replaying purposes that is not a concern, so you might be interested in taking a look. ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH] git-apply: fail if a patch cannot be applied. 2005-11-16 18:30 ` Junio C Hamano @ 2005-11-16 22:15 ` Junio C Hamano 2005-11-17 1:21 ` master has some toys Junio C Hamano 1 sibling, 0 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-16 22:15 UTC (permalink / raw) To: git; +Cc: Catalin Marinas, Karl Hasselström Recently we fixed 'git-apply --stat' not to barf on a binary differences. But it accidentally broke the error detection when we actually attempt to apply them. This commit fixes the problem and adds test cases. Signed-off-by: Junio C Hamano <junkio@cox.net> --- Junio C Hamano <junkio@cox.net> writes: > Catalin Marinas <catalin.marinas@gmail.com> writes: > >> ... When pushing a patch, if >> a merge is needed (like in your case, the base of the foo patch has >> changed), StGIT first tries "git-diff-tree | git-apply" for speed >> reasons. If this fails, it falls back to a three-way merge. > > I think many of the scripts rely on git-apply failing reliably > for unapplicable patches. I'll do a new test script in git.git/t > and if it fails on binary files, try to fix it today. apply.c | 11 ++++--- t/t4103-apply-binary.sh | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 t/t4103-apply-binary.sh applies-to: 4dda103301d7b70ec6e6e361d4a8d2cac24eccb4 92927ed0aac56a86f85049215791fcd106af4b62 diff --git a/apply.c b/apply.c index 590adc6..a002e15 100644 --- a/apply.c +++ b/apply.c @@ -891,7 +891,7 @@ static int parse_chunk(char *buffer, uns patchsize = parse_single_patch(buffer + offset + hdrsize, size - offset - hdrsize, patch); - if (!patchsize && !metadata_changes(patch)) { + if (!patchsize) { static const char binhdr[] = "Binary files "; if (sizeof(binhdr) - 1 < size - offset - hdrsize && @@ -899,9 +899,12 @@ static int parse_chunk(char *buffer, uns sizeof(binhdr)-1)) patch->is_binary = 1; - if (patch->is_binary && !apply && !check) - ; - else + /* Empty patch cannot be applied if: + * - it is a binary patch or + * - metadata does not change and is not a binary patch. + */ + if ((apply || check) && + (patch->is_binary || !metadata_changes(patch))) die("patch with only garbage at line %d", linenr); } diff --git a/t/t4103-apply-binary.sh b/t/t4103-apply-binary.sh new file mode 100644 index 0000000..948d5b5 --- /dev/null +++ b/t/t4103-apply-binary.sh @@ -0,0 +1,78 @@ +#!/bin/sh +# +# Copyright (c) 2005 Junio C Hamano +# + +test_description='git-apply handling binary patches + +' +. ./test-lib.sh + +# setup + +cat >file1 <<EOF +A quick brown fox jumps over the lazy dog. +A tiny little penguin runs around in circles. +There is a flag with Linux written on it. +A slow black-and-white panda just sits there, +munching on his bamboo. +EOF +cat file1 >file2 +cat file1 >file4 + +git-update-index --add --remove file1 file2 file4 +git-commit -m 'Initial Version' 2>/dev/null + +git-checkout -b binary +tr 'x' '\0' <file1 >file3 +cat file3 >file4 +git-add file2 +tr '\0' 'v' <file3 >file1 +rm -f file2 +git-update-index --add --remove file1 file2 file3 file4 +git-commit -m 'Second Version' + +git-diff-tree -p master binary >B.diff +git-diff-tree -p -C master binary >C.diff + +test_expect_success 'stat binary diff -- should not fail.' \ + 'git-checkout master + git-apply --stat --summary B.diff' + +test_expect_success 'stat binary diff (copy) -- should not fail.' \ + 'git-checkout master + git-apply --stat --summary C.diff' + +test_expect_failure 'check binary diff -- should fail.' \ + 'git-checkout master + git-apply --check B.diff' + +test_expect_failure 'check binary diff (copy) -- should fail.' \ + 'git-checkout master + git-apply --check C.diff' + +# Now we start applying them. + +test_expect_failure 'apply binary diff -- should fail.' \ + 'git-checkout master + git-apply B.diff' + +git-reset --hard + +test_expect_failure 'apply binary diff -- should fail.' \ + 'git-checkout master + git-apply --index B.diff' + +git-reset --hard + +test_expect_failure 'apply binary diff (copy) -- should fail.' \ + 'git-checkout master + git-apply C.diff' + +git-reset --hard + +test_expect_failure 'apply binary diff (copy) -- should fail.' \ + 'git-checkout master + git-apply --index C.diff' + +test_done --- 0.99.9.GIT ^ permalink raw reply related [flat|nested] 35+ messages in thread
* master has some toys 2005-11-16 18:30 ` Junio C Hamano 2005-11-16 22:15 ` [PATCH] git-apply: fail if a patch cannot be applied Junio C Hamano @ 2005-11-17 1:21 ` Junio C Hamano 2005-11-17 8:29 ` Alex Riesen 1 sibling, 1 reply; 35+ messages in thread From: Junio C Hamano @ 2005-11-17 1:21 UTC (permalink / raw) To: git Junio C Hamano <junkio@cox.net> writes: > Incidentally, for the last couple of days, I was working on > adding a very limited binary file diff support to "diff piped to > apply" pattern, and the result has been posted as "reworked > rebase" patches. It is very limited in the sense that the diff > output does not attempt to be useful if the patch consumer does > not have both pre- and post-image blob, but for the use of > StGIT's internal patch replaying purposes that is not a concern, > so you might be interested in taking a look. Along with the git wrapper fixes and git-apply bugfix (it did not fail when it saw unapplicable binary patches), and cvsexportcommit fixes from Kevin Geiss, I have the "limited binary patch support" on the master branch. The reworked rebase is still in proposed updates branch. I'll be offline for a couple of hours chaffering my wife. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 1:21 ` master has some toys Junio C Hamano @ 2005-11-17 8:29 ` Alex Riesen 2005-11-17 10:12 ` Junio C Hamano 2005-11-17 11:08 ` Johannes Schindelin 0 siblings, 2 replies; 35+ messages in thread From: Alex Riesen @ 2005-11-17 8:29 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 11/17/05, Junio C Hamano <junkio@cox.net> wrote: > Along with the git wrapper fixes and git-apply bugfix (it did cygwin is completely broken. Still debugging, but it looks like the old "windows can't unlink/rename open files" problem. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 8:29 ` Alex Riesen @ 2005-11-17 10:12 ` Junio C Hamano 2005-11-17 10:36 ` Alex Riesen 2005-11-17 11:08 ` Johannes Schindelin 1 sibling, 1 reply; 35+ messages in thread From: Junio C Hamano @ 2005-11-17 10:12 UTC (permalink / raw) To: Alex Riesen; +Cc: git Alex Riesen <raa.lkml@gmail.com> writes: > cygwin is completely broken. Still debugging, but it looks like the > old "windows can't unlink/rename open files" problem. Ouch. Sorry, and thanks for reporting. Ideally I should get a cygwin environment myself, but for that first I need to procure Windows box. Or does cygwin run on Wine, and if so is cygwin running on Wine a good enough approximation of the real thing? ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 10:12 ` Junio C Hamano @ 2005-11-17 10:36 ` Alex Riesen 2005-11-17 11:03 ` Junio C Hamano 2005-11-17 11:22 ` Johannes Schindelin 0 siblings, 2 replies; 35+ messages in thread From: Alex Riesen @ 2005-11-17 10:36 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On 11/17/05, Junio C Hamano <junkio@cox.net> wrote: > > cygwin is completely broken. Still debugging, but it looks like the > > old "windows can't unlink/rename open files" problem. > > Ouch. Sorry, and thanks for reporting. As it turned out, not the git.c is guilty, but the missing NO_MMAP=YesPlease in Cygwin section. I had it for a long time and accidentally removed by the recent pull. BTW, I couldn't find nowhere on original branch. Was it never submitted? > Ideally I should get a cygwin environment myself, but for that > first I need to procure Windows box. Or does cygwin run on > Wine, and if so is cygwin running on Wine a good enough > approximation of the real thing? I don't know. One should try real hard to create as much junk as there is. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 10:36 ` Alex Riesen @ 2005-11-17 11:03 ` Junio C Hamano 2005-11-18 1:23 ` John Benes 2005-11-17 11:22 ` Johannes Schindelin 1 sibling, 1 reply; 35+ messages in thread From: Junio C Hamano @ 2005-11-17 11:03 UTC (permalink / raw) To: Alex Riesen; +Cc: git Alex Riesen <raa.lkml@gmail.com> writes: > As it turned out, not the git.c is guilty, but the missing > NO_MMAP=YesPlease in Cygwin section. I had it for a long time and > accidentally removed by the recent pull. BTW, I couldn't find nowhere > on original branch. Was it never submitted? Neither 'git-whatchanged Makefile' nor 'git-whatchanged -SNO_MMAP Makefile' reports such on my end. Do we need one? Johannes said he tests on Cygwin as well, and I am sure there are others with Cygin on the list. Help us out here please? ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:03 ` Junio C Hamano @ 2005-11-18 1:23 ` John Benes 2005-11-18 2:48 ` Johannes Schindelin 2005-11-18 3:36 ` Junio C Hamano 0 siblings, 2 replies; 35+ messages in thread From: John Benes @ 2005-11-18 1:23 UTC (permalink / raw) To: Junio C Hamano; +Cc: git -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Junio C Hamano wrote: > Alex Riesen <raa.lkml@gmail.com> writes: > >> As it turned out, not the git.c is guilty, but the missing >> NO_MMAP=YesPlease in Cygwin section. I had it for a long time and >> accidentally removed by the recent pull. BTW, I couldn't find nowhere >> on original branch. Was it never submitted? > > Neither 'git-whatchanged Makefile' nor 'git-whatchanged > -SNO_MMAP Makefile' reports such on my end. Do we need one? The patch with the commented out option seems like it would work... > Johannes said he tests on Cygwin as well, and I am sure there > are others with Cygin on the list. Help us out here please? I was able to compile master and pu on Cygwin without NO_MMAP=YesPlease in the Cygwin section. However, the make test failed on the binary-apply on both master and pu, output follows. Commit ID's used for testing: refs/heads/master 4e1da85d7d0480b6d9973317da4f7a5aa603fcb5 refs/heads/pu 3b4587eb3c549649af7e84659b4808003c34c2d3 make test barfing on master: *** t4103-apply-binary.sh *** * ok 1: stat binary diff -- should not fail. * ok 2: stat binary diff (copy) -- should not fail. * ok 3: check binary diff -- should fail. * ok 4: check binary diff (copy) -- should fail. * ok 5: check incomplete binary diff with replacement -- should fail. * ok 6: check incomplete binary diff with replacement (copy) -- should fail. * FAIL 7: check binary diff with replacement. git-checkout master git-apply --check --allow-binary-replacement BF.diff * FAIL 8: check binary diff with replacement (copy). git-checkout master git-apply --check --allow-binary-replacement CF.diff * ok 9: apply binary diff -- should fail. * ok 10: apply binary diff -- should fail. * ok 11: apply binary diff (copy) -- should fail. * ok 12: apply binary diff (copy) -- should fail. * ok 13: apply binary diff without replacement -- should fail. * ok 14: apply binary diff without replacement (copy) -- should fail. * FAIL 15: apply binary diff. do_reset git-apply --allow-binary-replacement --index BF.diff && test -z "$(git-diff --name-status binary)" * FAIL 16: apply binary diff (copy). do_reset git-apply --allow-binary-replacement --index CF.diff && test -z "$(git-diff --name-status binary)" * failed 4 among 16 test(s) make[1]: *** [t4103-apply-binary.sh] Error 1 make test barfing on pu: *** t4103-apply-binary.sh *** usage: git-diff-tree [--stdin] [-m] [-s] [-v] [--pretty] [-t] [-r] [--root] [<co mmon diff options>] <tree-ish> [<tree-ish>] [<path>...] ***SNIP*** usage: git-diff-tree [--stdin] [-m] [-s] [-v] [--pretty] [-t] [-r] [--root] [<co mmon diff options>] <tree-ish> [<tree-ish>] [<path>...] ***SNIP*** * FAIL 1: stat binary diff -- should not fail. git-checkout master git-apply --stat --summary B.diff * FAIL 2: stat binary diff (copy) -- should not fail. git-checkout master git-apply --stat --summary C.diff * ok 3: check binary diff -- should fail. * ok 4: check binary diff (copy) -- should fail. * ok 5: check incomplete binary diff with replacement -- should fail. * ok 6: check incomplete binary diff with replacement (copy) -- should fail. * FAIL 7: check binary diff with replacement. git-checkout master git-apply --check --allow-binary-replacement BF.diff * FAIL 8: check binary diff with replacement (copy). git-checkout master git-apply --check --allow-binary-replacement CF.diff * ok 9: apply binary diff -- should fail. * ok 10: apply binary diff -- should fail. * ok 11: apply binary diff (copy) -- should fail. * ok 12: apply binary diff (copy) -- should fail. * ok 13: apply binary diff without replacement -- should fail. * ok 14: apply binary diff without replacement (copy) -- should fail. * FAIL 15: apply binary diff. do_reset git-apply --allow-binary-replacement --index BF.diff && test -z "$(git-diff --name-status binary)" * FAIL 16: apply binary diff (copy). do_reset git-apply --allow-binary-replacement --index CF.diff && test -z "$(git-diff --name-status binary)" * failed 6 among 16 test(s) make[1]: *** [t4103-apply-binary.sh] Error 1 - -- John Benes GPG Fingerprint: D519 25DB BB5C 38FC 9D02 02E7 596D BC50 F880 27FA "It is not only the living who are killed in war." - Isaac Asimov -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIVAwUBQ30tE2F0oWcU9kCNAQKzRQ/8DEoZTRYDcU80mzddq8AS8ClctLx8CorY OJYY/sTAivjot7R/bPUj97Ie+FaUKC0mpTOGZTT8KkSpRg2mbZ6YlTUoHAtf4iq3 F9vQs2qVJqyUJqbXcP+X68huIZF7vHZI47e9ExTO1RrxZCGxDp8JigfhmlS4CN4K Dee1NSMnoWGklNEXvZMwkvhLerV+9Xs6UTGZ5AeRHRiHiLqK+I9eDNaULABHwAYO JSsat0HDjKMKrgNNFo43TpRTm17gq7N83LOJJkxiNYnRPh8nGpIOgfNx8riWP5DB tMw3FWvA9bv3tllvTFC4wx92Rgfs255cvXEunqfRTsMzGG7rhdg4UY92I0yB8k6b g6nucu93VtwEkHZ1b9ZTBwz85ZuTImS/72pHbRPvOaeSuDArBI9i+Lwrb+z+0vUS iMMuAxtWhKUFr87A6ljdu27IfE+pJaEgGEySGkquU3EexuNRMz62raveRsEpLSu8 iqbKoMeC1A7CtcbV3OBdktfFyM3rR8/G9OpjBNdkojo08BOvsoMCU45jLdXFIFtu MGMajhGEu8EwAdItq6Qq0fXOfU6ph5oN4tg1pKt83QDkDFJyEJzOH1CMLh+qxXR3 m25wLSJcV8YbNfQVMumw2aFXn3ojwkP3kEheoTKexTFVkwGS0dU/j9kpQ8wj9Pqv 1ttxTdlX2HM= =OthK -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 1:23 ` John Benes @ 2005-11-18 2:48 ` Johannes Schindelin 2005-11-18 4:01 ` John Benes 2005-11-18 3:36 ` Junio C Hamano 1 sibling, 1 reply; 35+ messages in thread From: Johannes Schindelin @ 2005-11-18 2:48 UTC (permalink / raw) To: John Benes; +Cc: Junio C Hamano, git Hi, On Thu, 17 Nov 2005, John Benes wrote: > I was able to compile master and pu on Cygwin without NO_MMAP=YesPlease > in the Cygwin section. However, the make test failed on the > binary-apply on both master and pu, output follows. Nobody doubts that you can *compile* it. The problem is the fixing of the mmap()ed regions after fork(). Since win32 is such a sane system, it does not provide mmap() or fork() out of the box. And under some very obscure circumstances, cygwin's emulation of mmap() and fork() fails. BTW, it would be more helpful if you do not just tell *what* test fails, but *how*. For example, try to run "git-whatchanged -p" and send just the first page of the output (both stdout and stderr). I bet it says it has a problem fixing up mmap() after fork(). Hth, Dscho ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 2:48 ` Johannes Schindelin @ 2005-11-18 4:01 ` John Benes 0 siblings, 0 replies; 35+ messages in thread From: John Benes @ 2005-11-18 4:01 UTC (permalink / raw) To: Johannes Schindelin, git -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Johannes Schindelin wrote: > BTW, it would be more helpful if you do not just tell *what* test fails, > but *how*. For example, try to run "git-whatchanged -p" and send just > the first page of the output (both stdout and stderr). I bet it says it > has a problem fixing up mmap() after fork(). I ran "git-whatchanged -p" with the previously mentioned master build installed in /usr/bin. Below is a copy of the command session. Stdout was redirected to test2.txt, which is located at: http://www.penguinlounge.1and2.org/videos/test2.txt.bz2 Twinkie@squirrel ~/git $ git-whatchanged -p > ../test2.txt Twinkie@squirrel ~/git $ cd .. Twinkie@squirrel ~ $ ls -la test2.txt - -rw-r--r-- 1 Twinkie None 9338905 Nov 17 21:23 test2.txt nothing was displayed on stderr. The make test error was shown on linux too. [1] It reports as: Twinkie@squirrel ~/git/t/trash $ git-apply --check --allow-binary-replacement BF.diff fatal: patch with only garbage at line 30 could it be an outdated diff? (2.8.7) [1] Re: "make test" fails with current HEAD @ 9:23PM CST by A Large Angry SCM Anything else you want me to bash this Cygwin install against? - -- John Benes GPG Fingerprint: D519 25DB BB5C 38FC 9D02 02E7 596D BC50 F880 27FA "It is not only the living who are killed in war." - Isaac Asimov -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIVAwUBQ31SF2F0oWcU9kCNAQKLUxAAtqOpSCsGSnNz+q9x8gzqaqjCK+mjjUkJ YJFalTEeNO9/alp3mPGb4kXwhMahyugGqHZzr2Lp5JC0gDSsn5vqF2sxYtB9yvAg 1lg33awy5AI1LkIcbeiCvjkBI83UvIjOYLEs1YcIXKRDYJkcbo6yBN4uqkDZKAoS O8L3q2r2/mCJQYlANy1ruhT0Al5xPwTFNv6JqIkm8PWsPE+es6ZwyFBXKi62CHu5 AWsc2nHDhPIx5YS1h7CIIQjiRh2qkf807IvXKZtY++o7yoHn49Rtu87VblZhkuH5 UHOSE0gDbT37MbIg6hoZc20kBZIq1s+6e+/FhrFAUrmnny9t7fPaU35gJmPPA63W KajRKOwChmO6V5scTfgimxxzN4Jlnd+AM8FdxTWCfz6s4FLnnzukwX5T4PbWw6Kg if8fekhKkPYCLQtAa8Q6Xe5GIZJ5ghVRfAnZWhc4p8OJj6gacwGCk/QX0Rxu6z3r BF9e7RCyytwDw2Lw87NJFc7AYp4V4uINOAMMxPK0eidHOkkVVzu3eaoB8OIVzh5Q oAwo+gPpd/PgFldJJu4i9e8bD8/J7cwZ0vpMkRDig9P1ZqFCj9t2+bAVzOgJPb80 4YG/UR4VwVuKyYDeLhCHNLYJBssNXCCkN4+UKuLcNsk6+pXzniPVAc2Wda5BMIj2 LV5oMRUCpKQ= =NFuc -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 1:23 ` John Benes 2005-11-18 2:48 ` Johannes Schindelin @ 2005-11-18 3:36 ` Junio C Hamano 2005-11-18 3:49 ` A Large Angry SCM 2005-11-18 4:01 ` master has some toys John Benes 1 sibling, 2 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-18 3:36 UTC (permalink / raw) To: John Benes; +Cc: git John Benes <smartcat99s@gmail.com> writes: > Junio C Hamano wrote: > > I was able to compile master and pu on Cygwin without NO_MMAP=YesPlease > in the Cygwin section. However, the make test failed on the > binary-apply on both master and pu, output follows. > > Commit ID's used for testing: > refs/heads/master 4e1da85d7d0480b6d9973317da4f7a5aa603fcb5 > refs/heads/pu 3b4587eb3c549649af7e84659b4808003c34c2d3 Thanks. But the test result look suspicious for pu. $ git-ls-tree 3b4587eb t | grep t4103 outputs empty, so what you tested does not seem to be that commit. Anyway, the master is more important at this point. > make test barfing on master: > *** t4103-apply-binary.sh *** > * FAIL 7: check binary diff with replacement. > git-checkout master > git-apply --check --allow-binary-replacement BF.diff > * FAIL 8: check binary diff with replacement (copy). > git-checkout master > git-apply --check --allow-binary-replacement CF.diff > * FAIL 15: apply binary diff. > do_reset > git-apply --allow-binary-replacement --index BF.diff && > test -z "$(git-diff --name-status binary)" > * FAIL 16: apply binary diff (copy). > do_reset > git-apply --allow-binary-replacement --index CF.diff && > test -z "$(git-diff --name-status binary)" > * failed 4 among 16 test(s) > make[1]: *** [t4103-apply-binary.sh] Error 1 So it fails on these binary diffs with full index tests. Could you try running it like this? $ cd t $ sh ./t4103-apply-binary.sh -i -v If all things being equal, this will stop at the first failing test "* FAIL 7: ", and you will have trash/ directory under t/. $ cd trash $ ls -l I would first want to see if it was diff that failed or the apply. What does BF.diff contain? ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 3:36 ` Junio C Hamano @ 2005-11-18 3:49 ` A Large Angry SCM 2005-11-18 4:26 ` Junio C Hamano 2005-11-18 4:01 ` master has some toys John Benes 1 sibling, 1 reply; 35+ messages in thread From: A Large Angry SCM @ 2005-11-18 3:49 UTC (permalink / raw) To: Junio C Hamano; +Cc: John Benes, git Junio C Hamano wrote: > John Benes <smartcat99s@gmail.com> writes: > >>Junio C Hamano wrote: >> >>I was able to compile master and pu on Cygwin without NO_MMAP=YesPlease >>in the Cygwin section. However, the make test failed on the >>binary-apply on both master and pu, output follows. >> >>Commit ID's used for testing: >>refs/heads/master 4e1da85d7d0480b6d9973317da4f7a5aa603fcb5 >>refs/heads/pu 3b4587eb3c549649af7e84659b4808003c34c2d3 > > Thanks. But the test result look suspicious for pu. > > $ git-ls-tree 3b4587eb t | grep t4103 > > outputs empty, so what you tested does not seem to be that > commit. > > Anyway, the master is more important at this point. > >>make test barfing on master: >>*** t4103-apply-binary.sh *** >>* FAIL 7: check binary diff with replacement. >> git-checkout master >> git-apply --check --allow-binary-replacement BF.diff >>* FAIL 8: check binary diff with replacement (copy). >> git-checkout master >> git-apply --check --allow-binary-replacement CF.diff >>* FAIL 15: apply binary diff. >> do_reset >> git-apply --allow-binary-replacement --index BF.diff && >> test -z "$(git-diff --name-status binary)" >>* FAIL 16: apply binary diff (copy). >> do_reset >> git-apply --allow-binary-replacement --index CF.diff && >> test -z "$(git-diff --name-status binary)" >>* failed 4 among 16 test(s) >>make[1]: *** [t4103-apply-binary.sh] Error 1 > > So it fails on these binary diffs with full index tests. Could > you try running it like this? > > $ cd t > $ sh ./t4103-apply-binary.sh -i -v > > If all things being equal, this will stop at the first failing > test "* FAIL 7: ", and you will have trash/ directory under t/. > > $ cd trash > $ ls -l > > I would first want to see if it was diff that failed or the > apply. What does BF.diff contain? > OK, here's what I get: > sh ./t4103-apply-binary.sh -i -v * expecting success: git-checkout master git-apply --stat --summary B.diff file1 | 4 ++-- file2 | 5 ----- file3 | 0 file4 | 0 4 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 file2 create mode 100644 file3 * ok 1: stat binary diff -- should not fail. * expecting success: git-checkout master git-apply --stat --summary C.diff file1 | 4 ++-- file2 | 5 ----- file3 | 0 file4 | 0 4 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 file2 copy file1 => file3 (70%) * ok 2: stat binary diff (copy) -- should not fail. * expecting failure: git-checkout master git-apply --check B.diff fatal: patch with only garbage at line 30 * ok 3: check binary diff -- should fail. * expecting failure: git-checkout master git-apply --check C.diff fatal: patch with only garbage at line 32 * ok 4: check binary diff (copy) -- should fail. * expecting failure: git-checkout master git-apply --check --allow-binary-replacement B.diff fatal: patch with only garbage at line 30 * ok 5: check incomplete binary diff with replacement -- should fail. * expecting failure: git-checkout master git-apply --check --allow-binary-replacement C.diff fatal: patch with only garbage at line 32 * ok 6: check incomplete binary diff with replacement (copy) -- should fail. * expecting success: git-checkout master git-apply --check --allow-binary-replacement BF.diff fatal: patch with only garbage at line 30 * FAIL 7: check binary diff with replacement. git-checkout master git-apply --check --allow-binary-replacement BF.diff > cd trash internet@Gojira:~/GIT/git/t/trash> ls -l total 28 -rw-r--r-- 1 internet internet 909 2005-11-17 19:47 B.diff -rw-r--r-- 1 internet internet 1173 2005-11-17 19:47 BF.diff -rw-r--r-- 1 internet internet 944 2005-11-17 19:47 C.diff -rw-r--r-- 1 internet internet 1208 2005-11-17 19:47 CF.diff -rw-r--r-- 1 internet internet 201 2005-11-17 19:47 file1 -rw-r--r-- 1 internet internet 201 2005-11-17 19:47 file2 -rw-r--r-- 1 internet internet 201 2005-11-17 19:47 file4 > cat BF.diff diff --git a/file1 b/file1 index edc575dec543a684da5007b43886ee32ecb381ae..af1eedd35be991f3ced320f7d927799c72cd8435 100644 --- a/file1 +++ b/file1 @@ -1,5 +1,5 @@ -A quick brown fox jumps over the lazy dog. +A quick brown fov jumps over the lazy dog. A tiny little penguin runs around in circles. -There is a flag with Linux written on it. +There is a flag with Linuv written on it. A slow black-and-white panda just sits there, munching on his bamboo. diff --git a/file2 b/file2 deleted file mode 100644 index edc575dec543a684da5007b43886ee32ecb381ae..0000000000000000000000000000000000000000 --- a/file2 +++ /dev/null @@ -1,5 +0,0 @@ -A quick brown fox jumps over the lazy dog. -A tiny little penguin runs around in circles. -There is a flag with Linux written on it. -A slow black-and-white panda just sits there, -munching on his bamboo. diff --git a/file3 b/file3 new file mode 100644 index 0000000000000000000000000000000000000000..adb07b7ad3fa2c63251b06d1d39cb90a85b860b4 Files /dev/null and b/file3 differ diff --git a/file4 b/file4 index edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a85b860b4 100644 Files a/file4 and b/file4 differ ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 3:49 ` A Large Angry SCM @ 2005-11-18 4:26 ` Junio C Hamano 2005-11-18 4:46 ` [PATCH] Deal with binary diff output from (unknown version of) diff Junio C Hamano 0 siblings, 1 reply; 35+ messages in thread From: Junio C Hamano @ 2005-11-18 4:26 UTC (permalink / raw) To: git A Large Angry SCM <gitzilla@gmail.com> writes: > Files /dev/null and b/file3 differ > diff --git a/file4 b/file4 > index > edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a85b860b4 > 100644 > Files a/file4 and b/file4 differ Thanks. I've seen enough. I expected diff (GNU diffutils 2.8.1 is what I have handy) output which says "Binary files a/foo and b/foo differ". Hmph. Now I'd need to find a way to catch at least these two cases... ^ permalink raw reply [flat|nested] 35+ messages in thread
* [PATCH] Deal with binary diff output from (unknown version of) diff 2005-11-18 4:26 ` Junio C Hamano @ 2005-11-18 4:46 ` Junio C Hamano 2005-11-18 4:58 ` A Large Angry SCM 0 siblings, 1 reply; 35+ messages in thread From: Junio C Hamano @ 2005-11-18 4:46 UTC (permalink / raw) To: A Large Angry SCM, John Benes; +Cc: git Some vintage of diff says just "Files X and Y differ\n", instead of "Binary files X and Y differ\n", so catch both patterns. Signed-off-by: Junio C Hamano <junkio@cox.net> --- Junio C Hamano <junkio@cox.net> writes: >> Files /dev/null and b/file3 differ >> diff --git a/file4 b/file4 >> index edc575d..adb07b7 100644 >> Files a/file4 and b/file4 differ > > Thanks. I've seen enough. I expected diff (GNU diffutils 2.8.1 > is what I have handy) output which says "Binary files a/foo and > b/foo differ". > > Hmph. Now I'd need to find a way to catch at least these two > cases... Could you two try this patch please? diff --git a/apply.c b/apply.c index 129edb1..50be8f3 100644 --- a/apply.c +++ b/apply.c @@ -893,12 +893,24 @@ static int parse_chunk(char *buffer, uns patchsize = parse_single_patch(buffer + offset + hdrsize, size - offset - hdrsize, patch); if (!patchsize) { - static const char binhdr[] = "Binary files "; - - if (sizeof(binhdr) - 1 < size - offset - hdrsize && - !memcmp(binhdr, buffer + hdrsize + offset, - sizeof(binhdr)-1)) - patch->is_binary = 1; + static const char *binhdr[] = { + "Binary files ", + "Files ", + NULL, + }; + int i; + int hd = hdrsize + offset; + unsigned long llen = linelen(buffer + hd, size - hd); + + if (!memcmp(" differ\n", buffer + hd + llen - 8, 8)) + for (i = 0; binhdr[i]; i++) { + int len = strlen(binhdr[i]); + if (len < size - hd && + !memcmp(binhdr[i], buffer + hd, len)) { + patch->is_binary = 1; + break; + } + } /* Empty patch cannot be applied if: * - it is a binary patch and we do not do binary_replace, or ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: [PATCH] Deal with binary diff output from (unknown version of) diff 2005-11-18 4:46 ` [PATCH] Deal with binary diff output from (unknown version of) diff Junio C Hamano @ 2005-11-18 4:58 ` A Large Angry SCM 0 siblings, 0 replies; 35+ messages in thread From: A Large Angry SCM @ 2005-11-18 4:58 UTC (permalink / raw) To: Junio C Hamano; +Cc: John Benes, git Passed here! Junio C Hamano wrote: > Some vintage of diff says just "Files X and Y differ\n", instead > of "Binary files X and Y differ\n", so catch both patterns. > > Signed-off-by: Junio C Hamano <junkio@cox.net> > > --- > > Junio C Hamano <junkio@cox.net> writes: > > >> Files /dev/null and b/file3 differ > >> diff --git a/file4 b/file4 > >> index edc575d..adb07b7 100644 > >> Files a/file4 and b/file4 differ > > > > Thanks. I've seen enough. I expected diff (GNU diffutils 2.8.1 > > is what I have handy) output which says "Binary files a/foo and > > b/foo differ". > > > > Hmph. Now I'd need to find a way to catch at least these two > > cases... > > Could you two try this patch please? [snip snip] ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 3:36 ` Junio C Hamano 2005-11-18 3:49 ` A Large Angry SCM @ 2005-11-18 4:01 ` John Benes 2005-11-18 4:27 ` Junio C Hamano 1 sibling, 1 reply; 35+ messages in thread From: John Benes @ 2005-11-18 4:01 UTC (permalink / raw) To: Junio C Hamano, git -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Junio C Hamano wrote: > John Benes <smartcat99s AT gmail DOT com> writes: >> Commit ID's used for testing: >> refs/heads/master 4e1da85d7d0480b6d9973317da4f7a5aa603fcb5 >> refs/heads/pu 3b4587eb3c549649af7e84659b4808003c34c2d3 > > Thanks. But the test result look suspicious for pu. I verified that I was testing that commit, and the ls-tree results. Must have been left over after switching from master... > Anyway, the master is more important at this point. > So it fails on these binary diffs with full index tests. Could > you try running it like this? > > $ cd t > $ sh ./t4103-apply-binary.sh -i -v > > If all things being equal, this will stop at the first failing > test "* FAIL 7: ", and you will have trash/ directory under t/. > > $ cd trash > $ ls -l > > I would first want to see if it was diff that failed or the > apply. What does BF.diff contain? > Output from the commands requested: Twinkie@squirrel ~/git/t $ sh ./t4103-apply-binary.sh -i -v sh ./t4103-apply-binary.sh -i -v * expecting success: git-checkout master git-apply --stat --summary B.diff file1 | 4 ++-- file2 | 5 ----- file3 | 0 file4 | 0 4 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 file2 create mode 100644 file3 * ok 1: stat binary diff -- should not fail. * expecting success: git-checkout master git-apply --stat --summary C.diff file1 | 4 ++-- file2 | 5 ----- file3 | 0 file4 | 0 4 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 file2 copy file1 => file3 (70%) * ok 2: stat binary diff (copy) -- should not fail. * expecting failure: git-checkout master git-apply --check B.diff fatal: patch with only garbage at line 30 * ok 3: check binary diff -- should fail. * expecting failure: git-checkout master git-apply --check C.diff fatal: patch with only garbage at line 32 * ok 4: check binary diff (copy) -- should fail. * expecting failure: git-checkout master git-apply --check --allow-binary-replacement B.diff fatal: patch with only garbage at line 30 * ok 5: check incomplete binary diff with replacement -- should fail. * expecting failure: git-checkout master git-apply --check --allow-binary-replacement C.diff fatal: patch with only garbage at line 32 * ok 6: check incomplete binary diff with replacement (copy) -- should fail. * expecting success: git-checkout master git-apply --check --allow-binary-replacement BF.diff fatal: patch with only garbage at line 30 * FAIL 7: check binary diff with replacement. git-checkout master git-apply --check --allow-binary-replacement BF.diff Twinkie@squirrel ~/git/t $ cd trash cd trash Twinkie@squirrel ~/git/t/trash $ ls -l ls -l total 19 - -rw-r--r-- 1 Twinkie None 909 Nov 17 21:49 B.diff - -rw-r--r-- 1 Twinkie None 1173 Nov 17 21:49 BF.diff - -rw-r--r-- 1 Twinkie None 944 Nov 17 21:49 C.diff - -rw-r--r-- 1 Twinkie None 1208 Nov 17 21:49 CF.diff - -rw-r--r-- 1 Twinkie None 201 Nov 17 21:49 file1 - -rw-r--r-- 1 Twinkie None 201 Nov 17 21:49 file2 - -rw-r--r-- 1 Twinkie None 201 Nov 17 21:49 file4 Twinkie@squirrel ~/git/t/trash $ cat BF.diff cat BF.diff diff --git a/file1 b/file1 index edc575dec543a684da5007b43886ee32ecb381ae..af1eedd35be991f3ced320f7d927799c 72cd8435 100644 - --- a/file1 +++ b/file1 @@ -1,5 +1,5 @@ - -A quick brown fox jumps over the lazy dog. +A quick brown fov jumps over the lazy dog. A tiny little penguin runs around in circles. - -There is a flag with Linux written on it. +There is a flag with Linuv written on it. A slow black-and-white panda just sits there, munching on his bamboo. diff --git a/file2 b/file2 deleted file mode 100644 index edc575dec543a684da5007b43886ee32ecb381ae..00000000000000000000000000000000 00000000 - --- a/file2 +++ /dev/null @@ -1,5 +0,0 @@ - -A quick brown fox jumps over the lazy dog. - -A tiny little penguin runs around in circles. - -There is a flag with Linux written on it. - -A slow black-and-white panda just sits there, - -munching on his bamboo. diff --git a/file3 b/file3 new file mode 100644 index 0000000000000000000000000000000000000000..adb07b7ad3fa2c63251b06d1d39cb90a 85b860b4 Files /dev/null and b/file3 differ diff --git a/file4 b/file4 index edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a 85b860b4 100644 Files a/file4 and b/file4 differ Twinkie@squirrel ~/git/t/trash $ git-apply BF.diff fatal: patch with only garbage at line 30 - -- John Benes GPG Fingerprint: D519 25DB BB5C 38FC 9D02 02E7 596D BC50 F880 27FA "It is not only the living who are killed in war." - Isaac Asimov -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIVAwUBQ31SGGF0oWcU9kCNAQJmchAA0L9fnTvMNwYhDHRVdPyF6XQYJJ7j3s6M CtcjFvQZ0Zo2tp3ZZ8mqv9ANgPkV80HZFpWPwmlAouFQfNbjvEDlFxLejaKZ5TJj q068iMk8ZmUUHKPUhONhCsi/toXHQuhA7RMWEwtE9EeugOOIC/++eI8qhKzBhJr3 REzLQN55lqrdhN/6ksrhJQU2VQ3AcAukgezrJy3j8CYOId3pVLYoyD75oxTrelnN xSPritxM/zkdQZYwx/WeSFRivQQZgiSwm2nREJ5NY5MJ8X5SIZJ+bcHSnndNmUYv e6YkZRPLXQBAyJpQHwmAQIqtYikPZ/Q6SNBoiQgA3Ws1SyzSaMcOo9R30Cg4LT4i 37EtQwjrGXzY6V/YlHbPqauPlUW6Sosc7fadNXHXkJJrdgyGSATZghh+XEZpNQ1G 2cS05y7/Xu9KnhL0GxbwLf9FZg14CndRh04NDtkdvwyE5rK9SCD5seW6HQOeBcuX oHLPeA29IaZvHFUYTITXP5p2ZySAXrrFt7R532j6njeJvVCRzV7pPh7msHmAgdXL Wz5Xv9ED43wz+q6JpXuWloYNyDKUUil2emXVA/MHwLW9ugfZmu9/OVo2ChXf+ZLH 8pSGxRmxTAVSf0GIiODPMWmGrm2zsKbNczCY1wATjiRaYvlmRk1kiXpXpubW5bw9 F1UDCLIFaJk= =Uh0t -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 4:01 ` master has some toys John Benes @ 2005-11-18 4:27 ` Junio C Hamano 2005-11-18 4:35 ` John Benes 2005-11-18 4:40 ` A Large Angry SCM 0 siblings, 2 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-18 4:27 UTC (permalink / raw) To: John Benes; +Cc: git John Benes <smartcat99s@gmail.com> writes: > diff --git a/file4 b/file4 > index > edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a > 85b860b4 100644 > Files a/file4 and b/file4 differ Thanks. This is the same problem as what Large Angly SCM reports. What does your "diff --version" say? ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 4:27 ` Junio C Hamano @ 2005-11-18 4:35 ` John Benes 2005-11-18 4:40 ` A Large Angry SCM 1 sibling, 0 replies; 35+ messages in thread From: John Benes @ 2005-11-18 4:35 UTC (permalink / raw) To: Junio C Hamano, git -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Junio C Hamano wrote: > Thanks. This is the same problem as what Large Angly SCM > reports. What does your "diff --version" say? Twinkie@squirrel ~ $ diff --version diff (GNU diffutils) 2.8.7 Written by Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower. [snip 2004 copyright notice] Extra useful info about my cygwin enviroment: Twinkie@squirrel ~ $ cygcheck -V cygcheck version 1.74 System Checker for Cygwin Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc. Compiled on Jul 2 2005 cygwin1.dll Version: 1.5.18 HTH! - -- John Benes GPG Fingerprint: D519 25DB BB5C 38FC 9D02 02E7 596D BC50 F880 27FA "It is not only the living who are killed in war." - Isaac Asimov -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iQIVAwUBQ31aF2F0oWcU9kCNAQJrSRAAqDVQuCuF0PBn0ssGJA4sZ5fSa4S4hUju yftaR9dDaWqpML4ieMcp5NXD1HEm6yzJbL9WhGuDQlpolo7ujbiI1sx7jP53Au+3 zm7iWojJVnRBirRAqsZpD2Ufriuzwnm6/rPJqe97RSkYIm29BcKsiSly67mFKEKJ AL/MiAmH62h7HLOjSRR2o+3eGmvMlAesojoLdoTaCkic5l34WIfv4EzSSTSfwS+O cn0K8MFqbuuApZTwECl5OdmAVbKGdC0PjgqgJQIEM39dWxKqqGrmSLvbs42AAEok tOPTdB+4O2ECEIIYtjiqUAZ2ZDwVvxJwEyTEt60tzvbcfX0TwfXaO+JDxd9gmr8P he/f05NT+IlqFrcXyXD8PVc+29ZBr7ocM1k+VIzqclGIjHMO6VjytEO3xppbtEDz iAA5MFYsCM5fiJRndNYiH51WvVMjmmY1SO6LJtqGiwZhX3/couMy71JorXeqGgaW Yjrkvs8q9AtvTG3Nq9BpmJCz0kXHbMmULchooaNtpDlPVVti9CA08vJ/9PssWRfD MrkVkEijTpkw/lWClqW91aGWT9vlMeQSBVZf8Cr2Zg9DQNAFEE4LiVmlt10odZGw cE4TlhaCk2Z2X1AeuDTimyN7hL6FMVweMsLgio1XNpk/NOCGkgvXDo7R76MfU8PS dsT2ItOIm6w= =o9sa -----END PGP SIGNATURE----- ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-18 4:27 ` Junio C Hamano 2005-11-18 4:35 ` John Benes @ 2005-11-18 4:40 ` A Large Angry SCM 1 sibling, 0 replies; 35+ messages in thread From: A Large Angry SCM @ 2005-11-18 4:40 UTC (permalink / raw) To: Junio C Hamano; +Cc: John Benes, git Junio C Hamano wrote: > John Benes <smartcat99s@gmail.com> writes: > >>diff --git a/file4 b/file4 >>index >>edc575dec543a684da5007b43886ee32ecb381ae..adb07b7ad3fa2c63251b06d1d39cb90a >>85b860b4 100644 >>Files a/file4 and b/file4 differ > > Thanks. This is the same problem as what Large Angly SCM > reports. What does your "diff --version" say? > diff --version diff (GNU diffutils) 2.8.7 Written by Paul Eggert, Mike Haertel, David Hayes, Richard Stallman, and Len Tower. Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. > ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 10:36 ` Alex Riesen 2005-11-17 11:03 ` Junio C Hamano @ 2005-11-17 11:22 ` Johannes Schindelin 1 sibling, 0 replies; 35+ messages in thread From: Johannes Schindelin @ 2005-11-17 11:22 UTC (permalink / raw) To: Alex Riesen; +Cc: Junio C Hamano, git Hi, On Thu, 17 Nov 2005, Alex Riesen wrote: > As it turned out, not the git.c is guilty, but the missing > NO_MMAP=YesPlease in Cygwin section. I had it for a long time and > accidentally removed by the recent pull. BTW, I couldn't find nowhere > on original branch. Was it never submitted? It was not, because someone (Peter?) had success without NO_MMAP=YesPlease on cygwin. So it was decided to keep NO_MMAP an option which has to be provided by the user. > > Ideally I should get a cygwin environment myself, but for that > > first I need to procure Windows box. Or does cygwin run on > > Wine, and if so is cygwin running on Wine a good enough > > approximation of the real thing? It does not. The problem with mmap is a problem which stems from working around Windows not being POSIX. Also note that the problem goes poof in a gdb session. I tend to think it is a timing problem in conjunction with the (very conservative) Antivirus setting. Ciao, Dscho ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 8:29 ` Alex Riesen 2005-11-17 10:12 ` Junio C Hamano @ 2005-11-17 11:08 ` Johannes Schindelin 2005-11-17 11:16 ` Junio C Hamano 2005-11-17 11:20 ` Alex Riesen 1 sibling, 2 replies; 35+ messages in thread From: Johannes Schindelin @ 2005-11-17 11:08 UTC (permalink / raw) To: Alex Riesen; +Cc: Junio C Hamano, git Hi, On Thu, 17 Nov 2005, Alex Riesen wrote: > On 11/17/05, Junio C Hamano <junkio@cox.net> wrote: > > Along with the git wrapper fixes and git-apply bugfix (it did > > cygwin is completely broken. Still debugging, but it looks like the > old "windows can't unlink/rename open files" problem. FWIW I had no problems on cygwin (NO_MMAP=YesPlease). Ciao, Dscho ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:08 ` Johannes Schindelin @ 2005-11-17 11:16 ` Junio C Hamano 2005-11-17 11:21 ` Alex Riesen 2005-11-17 11:51 ` Johannes Schindelin 2005-11-17 11:20 ` Alex Riesen 1 sibling, 2 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-17 11:16 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Alex Riesen, git Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > Hi, > > On Thu, 17 Nov 2005, Alex Riesen wrote: > >> On 11/17/05, Junio C Hamano <junkio@cox.net> wrote: >> > Along with the git wrapper fixes and git-apply bugfix (it did >> >> cygwin is completely broken. Still debugging, but it looks like the >> old "windows can't unlink/rename open files" problem. > > FWIW I had no problems on cygwin (NO_MMAP=YesPlease). It appears we'd better have something like this in the main Makefile, so people do not have to do it themselves everywhere? --- diff --git a/Makefile b/Makefile index 7ce62e8..93d51c6 100644 --- a/Makefile +++ b/Makefile @@ -213,6 +213,7 @@ endif ifeq ($(uname_O),Cygwin) NO_STRCASESTR = YesPlease NEEDS_LIBICONV = YesPlease + NO_MMAP = YesPlease NO_IPV6 = YesPlease X = .exe endif ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:16 ` Junio C Hamano @ 2005-11-17 11:21 ` Alex Riesen 2005-11-17 11:51 ` Johannes Schindelin 1 sibling, 0 replies; 35+ messages in thread From: Alex Riesen @ 2005-11-17 11:21 UTC (permalink / raw) To: Junio C Hamano; +Cc: Johannes Schindelin, git On 11/17/05, Junio C Hamano <junkio@cox.net> wrote: > >> > Along with the git wrapper fixes and git-apply bugfix (it did > >> > >> cygwin is completely broken. Still debugging, but it looks like the > >> old "windows can't unlink/rename open files" problem. > > > > FWIW I had no problems on cygwin (NO_MMAP=YesPlease). > > It appears we'd better have something like this in the main > Makefile, so people do not have to do it themselves everywhere? damn... Missed by 4 minutes... :) ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:16 ` Junio C Hamano 2005-11-17 11:21 ` Alex Riesen @ 2005-11-17 11:51 ` Johannes Schindelin 2005-11-17 12:40 ` Alex Riesen ` (2 more replies) 1 sibling, 3 replies; 35+ messages in thread From: Johannes Schindelin @ 2005-11-17 11:51 UTC (permalink / raw) To: Junio C Hamano; +Cc: Alex Riesen, git Hi, On Thu, 17 Nov 2005, Junio C Hamano wrote: > It appears we'd better have something like this in the main > Makefile, so people do not have to do it themselves everywhere? I'd like to wait to have a reaction from other people. I vividly remember my eyes falling out of my sockets when somebody reported success on cygwin without NO_MMAP. If there is *any* cygwin version which fixes it, we should rather make people upgrade, no? Ciao, Dscho ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:51 ` Johannes Schindelin @ 2005-11-17 12:40 ` Alex Riesen 2005-11-17 19:29 ` Junio C Hamano 2005-11-18 12:01 ` timo 2 siblings, 0 replies; 35+ messages in thread From: Alex Riesen @ 2005-11-17 12:40 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Junio C Hamano, git On 11/17/05, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > > It appears we'd better have something like this in the main > > Makefile, so people do not have to do it themselves everywhere? > > I'd like to wait to have a reaction from other people. I vividly remember > my eyes falling out of my sockets when somebody reported success on cygwin > without NO_MMAP. If there is *any* cygwin version which fixes it, we > should rather make people upgrade, no? my eyes too. I used to compile Peters tree, and it never worked (w2k, antivirus present, but self-disabled because of some lucky crash). That is why the whole story started (and I started to look for unclosed files and unmapped maps). ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:51 ` Johannes Schindelin 2005-11-17 12:40 ` Alex Riesen @ 2005-11-17 19:29 ` Junio C Hamano 2005-11-17 23:36 ` Johannes Schindelin 2005-11-18 20:09 ` Junio C Hamano 2005-11-18 12:01 ` timo 2 siblings, 2 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-17 19:29 UTC (permalink / raw) To: Johannes Schindelin; +Cc: git Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > I'd like to wait to have a reaction from other people. I vividly remember > my eyes falling out of my sockets when somebody reported success on cygwin > without NO_MMAP. If there is *any* cygwin version which fixes it, we > should rather make people upgrade, no? I am not so sure about forcing people upgrade, but we may end up deciding it is better not to have NO_MMAP as the default. If that turns out to be the case, I'd prefer to have something like this instead: diff --git a/Makefile b/Makefile index 7ce62e8..215abf0 100644 --- a/Makefile +++ b/Makefile @@ -213,6 +213,10 @@ endif ifeq ($(uname_O),Cygwin) NO_STRCASESTR = YesPlease NEEDS_LIBICONV = YesPlease + # There are conflicting reports about this. + # On some boxes NO_MMAP is needed, and not so elsewhere. + # Try uncommenting this if you see things break -- YMMV. + # NO_MMAP = YesPlease NO_IPV6 = YesPlease X = .exe endif ^ permalink raw reply related [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 19:29 ` Junio C Hamano @ 2005-11-17 23:36 ` Johannes Schindelin 2005-11-18 20:09 ` Junio C Hamano 1 sibling, 0 replies; 35+ messages in thread From: Johannes Schindelin @ 2005-11-17 23:36 UTC (permalink / raw) To: Junio C Hamano; +Cc: git Hi, On Thu, 17 Nov 2005, Junio C Hamano wrote: > + # There are conflicting reports about this. > + # On some boxes NO_MMAP is needed, and not so elsewhere. > + # Try uncommenting this if you see things break -- YMMV. > + # NO_MMAP = YesPlease Sounds sensible. Maybe you want to output that to stderr or stdout? Ciao, Dscho ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 19:29 ` Junio C Hamano 2005-11-17 23:36 ` Johannes Schindelin @ 2005-11-18 20:09 ` Junio C Hamano 1 sibling, 0 replies; 35+ messages in thread From: Junio C Hamano @ 2005-11-18 20:09 UTC (permalink / raw) To: git Junio C Hamano <junkio@cox.net> writes: I just had a small excitement finding out I did something right and felt an urge to brag ;-). > I am not so sure about forcing people upgrade, but we may end up > deciding it is better not to have NO_MMAP as the default. If > that turns out to be the case, I'd prefer to have something like > this instead: > > diff --git a/Makefile b/Makefile > index 7ce62e8..215abf0 100644 > --- a/Makefile > +++ b/Makefile > @@ -213,6 +213,10 @@ endif > ifeq ($(uname_O),Cygwin) > NO_STRCASESTR = YesPlease > NEEDS_LIBICONV = YesPlease > + # There are conflicting reports about this. > + # On some boxes NO_MMAP is needed, and not so elsewhere. > + # Try uncommenting this if you see things break -- YMMV. > + # NO_MMAP = YesPlease > NO_IPV6 = YesPlease > X = .exe > endif I did the above patch on top of "pu", which contained the patch from Pavel Roskin and sent it out. Later I saved the message from my mbox, went back to the "master" branch, whose Makefile had the releveant part like this: ifeq ($(uname_O),Cygwin) NO_STRCASESTR = YesPlease NEEDS_LIBICONV = YesPlease NO_IPV6 = YesPlease X = .exe ALL_CFLAGS += -DUSE_SYMLINK_HEAD=0 endif Notice ALL_CFLAGS line? The patch does not apply cleanly and usual e-mail patch application tool would have barfed; git-apply would not allow any fuzz, and patch would have dropped a .rej file. However, I usually run "git-am" with --3way option enabled when applying the e-mailed patches. After git-apply failed, it noticed I am applying on top of a different blob, namely, the Makefile from somewhere else (it reads the "index 7ce62e8"), then fell back on 3-way merge and made a clean commit. Happy. Back to day-job. ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:51 ` Johannes Schindelin 2005-11-17 12:40 ` Alex Riesen 2005-11-17 19:29 ` Junio C Hamano @ 2005-11-18 12:01 ` timo 2 siblings, 0 replies; 35+ messages in thread From: timo @ 2005-11-18 12:01 UTC (permalink / raw) To: git On Thu, Nov 17, 2005 at 12:51:22PM +0100, Johannes Schindelin wrote: > Hi, > > On Thu, 17 Nov 2005, Junio C Hamano wrote: > > > It appears we'd better have something like this in the main > > Makefile, so people do not have to do it themselves everywhere? > > I'd like to wait to have a reaction from other people. I vividly remember > my eyes falling out of my sockets when somebody reported success on cygwin > without NO_MMAP. If there is *any* cygwin version which fixes it, we > should rather make people upgrade, no? > It is not in the official Cygwin distribution yet. Though I've started the formalities, moving house as been taking all my spare time. So, the upgrade worries would be for those people tracking the main git repo. As they are almost certainly on this list, they should be aware of possible breakage. I've noted some breakage with git-archimport, git-svnimport and git-cvsimport, though i have not yet looked into it, some are due to the lack of necessary tools under Cygwin. I'm re-jigging my distro script to emulate the new package split and plan to distribute just the git 'core' stuff for the moment. I was wondering if anyone has scripts that i could use to test the svn/arch/CVS import/export for expected behavior? Tim. "However beautiful the strategy, you should occasionally look at the results." -- Winston Churchill ^ permalink raw reply [flat|nested] 35+ messages in thread
* Re: master has some toys 2005-11-17 11:08 ` Johannes Schindelin 2005-11-17 11:16 ` Junio C Hamano @ 2005-11-17 11:20 ` Alex Riesen 1 sibling, 0 replies; 35+ messages in thread From: Alex Riesen @ 2005-11-17 11:20 UTC (permalink / raw) To: Johannes Schindelin; +Cc: Junio C Hamano, git [-- Attachment #1: Type: text/plain, Size: 408 bytes --] On 11/17/05, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > > > Along with the git wrapper fixes and git-apply bugfix (it did > > > > cygwin is completely broken. Still debugging, but it looks like the > > old "windows can't unlink/rename open files" problem. > > FWIW I had no problems on cygwin (NO_MMAP=YesPlease). > yes, that's what I had, too. Junio, how about the attached patch? [-- Attachment #2: cygwin-has-no-mmap.patch --] [-- Type: application/xxxxx, Size: 294 bytes --] ^ permalink raw reply [flat|nested] 35+ messages in thread
end of thread, other threads:[~2005-11-18 20:09 UTC | newest] Thread overview: 35+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-11-15 14:42 stgit truncates binary files to zero length when applying patches Karl Hasselström 2005-11-16 11:11 ` Catalin Marinas 2005-11-16 11:54 ` Karl Hasselström 2005-11-16 12:31 ` Catalin Marinas 2005-11-16 13:03 ` Karl Hasselström 2005-11-16 18:30 ` Junio C Hamano 2005-11-16 22:15 ` [PATCH] git-apply: fail if a patch cannot be applied Junio C Hamano 2005-11-17 1:21 ` master has some toys Junio C Hamano 2005-11-17 8:29 ` Alex Riesen 2005-11-17 10:12 ` Junio C Hamano 2005-11-17 10:36 ` Alex Riesen 2005-11-17 11:03 ` Junio C Hamano 2005-11-18 1:23 ` John Benes 2005-11-18 2:48 ` Johannes Schindelin 2005-11-18 4:01 ` John Benes 2005-11-18 3:36 ` Junio C Hamano 2005-11-18 3:49 ` A Large Angry SCM 2005-11-18 4:26 ` Junio C Hamano 2005-11-18 4:46 ` [PATCH] Deal with binary diff output from (unknown version of) diff Junio C Hamano 2005-11-18 4:58 ` A Large Angry SCM 2005-11-18 4:01 ` master has some toys John Benes 2005-11-18 4:27 ` Junio C Hamano 2005-11-18 4:35 ` John Benes 2005-11-18 4:40 ` A Large Angry SCM 2005-11-17 11:22 ` Johannes Schindelin 2005-11-17 11:08 ` Johannes Schindelin 2005-11-17 11:16 ` Junio C Hamano 2005-11-17 11:21 ` Alex Riesen 2005-11-17 11:51 ` Johannes Schindelin 2005-11-17 12:40 ` Alex Riesen 2005-11-17 19:29 ` Junio C Hamano 2005-11-17 23:36 ` Johannes Schindelin 2005-11-18 20:09 ` Junio C Hamano 2005-11-18 12:01 ` timo 2005-11-17 11:20 ` Alex Riesen
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).