Re: [PATCH] bundle: fix wrong check of read_header()'s return value & add tests

Subsystems: the rest

5 messages, 4 authors, 2016-06-15 · open the first message on its own page

Re: [PATCH] bundle: fix wrong check of read_header()'s return value & add tests

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:58

Johannes Schindelin [off-list ref] writes:
quoted hunk
I fear this would suffer the same fate as t8001, namely that some sed 
would add a newline, which is plain wrong here. This is a workaround:
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index ce96b4b..f895072 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -110,7 +110,7 @@ test_expect_failure 'unbundle 1' '
 
 test_expect_success 'bundle 1 has only 3 files ' '
 	cd "$D" &&
-	sed "1,4d" < bundle1 > bundle.pack &&
+	dd bs=136 skip=1 if=bundle1 of=bundle.pack &&
We might want to reword or enhance the headers later, and 136 is
a horrible workaround.

Would this work?
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index ce96b4b..ad589dd 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -110,9 +110,16 @@ test_expect_failure 'unbundle 1' '
 
 test_expect_success 'bundle 1 has only 3 files ' '
 	cd "$D" &&
-	sed "1,4d" < bundle1 > bundle.pack &&
+	(
+		while read x && test -n "$x"
+		do
+			:;
+		done
+		cat
+	) <bundle1 >bundle.pack &&
 	git index-pack bundle.pack &&
-	test 4 = $(git verify-pack -v bundle.pack | wc -l)
+	verify=$(git verify-pack -v bundle.pack) &&
+	test 4 = $(echo "$verify" | wc -l)
 '
 
 test_expect_success 'unbundle 2' '

Re: [PATCH] bundle: fix wrong check of read_header()'s return value & add tests

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:42:58

Hi,

On Tue, 6 Mar 2007, Junio C Hamano wrote:
quoted hunk
Would this work?
diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh
index ce96b4b..ad589dd 100755
--- a/t/t5510-fetch.sh
+++ b/t/t5510-fetch.sh
@@ -110,9 +110,16 @@ test_expect_failure 'unbundle 1' '
 
 test_expect_success 'bundle 1 has only 3 files ' '
 	cd "$D" &&
-	sed "1,4d" < bundle1 > bundle.pack &&
+	(
+		while read x && test -n "$x"
+		do
+			:;
+		done
+		cat
+	) <bundle1 >bundle.pack &&
I tried to avoid that, because it was mentioned that this does not work on 
Cygwin for some reason I forgot.

Ciao,
Dscho

Re: [PATCH] bundle: fix wrong check of read_header()'s return value & add tests

From: Alex Riesen <hidden>
Date: 2016-06-15 22:42:58

On 3/8/07, Johannes Schindelin [off-list ref] wrote:
On Tue, 6 Mar 2007, Junio C Hamano wrote:
quoted
+     (
+             while read x && test -n "$x"
+             do
+                     :;
+             done
+             cat
+     ) <bundle1 >bundle.pack &&
I tried to avoid that, because it was mentioned that this does not work on
Cygwin for some reason I forgot.
Can't think of a reason why it would not. Just tried: works.
It works even with \r\n line endings (which I don't understand).

Re: [PATCH] bundle: fix wrong check of read_header()'s return value & add tests

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:42:58

Hi,

On Thu, 8 Mar 2007, Alex Riesen wrote:
On 3/8/07, Johannes Schindelin [off-list ref] wrote:
quoted
On Tue, 6 Mar 2007, Junio C Hamano wrote:
quoted
+     (
+             while read x && test -n "$x"
+             do
+                     :;
+             done
+             cat
+     ) <bundle1 >bundle.pack &&
I tried to avoid that, because it was mentioned that this does not work on
Cygwin for some reason I forgot.
Can't think of a reason why it would not. Just tried: works.
It works even with \r\n line endings (which I don't understand).
IIRC there was a problem when a file was detected to be text, but 
continued to be binary. Mark?

Ciao,
Dscho

Re: [PATCH] bundle: fix wrong check of read_header()'s return value & add tests

From: Mark Levedahl <hidden>
Date: 2016-06-15 22:42:58

Johannes Schindelin wrote:
IIRC there was a problem when a file was detected to be text, but 
continued to be binary. Mark?

Ciao,
Dscho

  
The problem occurs with constructs like

echo "some text stuff"  > file
echo "some binary stuff" >> file

The second write, being an append, ends up executed in a forked process 
where file was opened by the parent, and unfortunately auto-detected as 
a text file, such that the write from the child process ends up mangling 
any crlf in the stream. This occurs regardless of the defined mount type 
and other cygwin flags. It is definitely a bug, but is attributed to 
looseness in POSIX with noone claiming ownership to fix.

However, the above bug is not triggered in the construct mentioned by Junio.

Mark
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help