git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] repack: find -> /usr/bin/find, as for cygwin
@ 2011-03-19 12:08 ryenus ◇
  2011-03-19 12:18 ` Nguyen Thai Ngoc Duy
  0 siblings, 1 reply; 14+ messages in thread
From: ryenus ◇ @ 2011-03-19 12:08 UTC (permalink / raw)
  To: git, gitster

If I run Cygwin git directly from cmd.exe instead of from a shell,
e.g. bash, I get the following error when executing git repack

FIND: Parameter format not correct

that's because in git-repack.sh, 'find' is called without its full
path, this patch corrects this

Signed-off-by: ryenus <ryenus@gmail.com>
---
 git-repack.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-repack.sh b/git-repack.sh
index 624feec..212caa7 100755
--- a/git-repack.sh
+++ b/git-repack.sh
@@ -64,7 +64,7 @@ case ",$all_into_one," in
 ,t,)
        args= existing=
        if [ -d "$PACKDIR" ]; then
-               for e in `cd "$PACKDIR" && find . -type f -name '*.pack' \
+               for e in `cd "$PACKDIR" && /usr/bin/find . -type f
-name '*.pack' \
                        | sed -e 's/^\.\///' -e 's/\.pack$//'`
                do
                        if [ -e "$PACKDIR/$e.keep" ]; then
--
1.7.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 12:08 [PATCH] repack: find -> /usr/bin/find, as for cygwin ryenus ◇
@ 2011-03-19 12:18 ` Nguyen Thai Ngoc Duy
  2011-03-19 15:50   ` René Scharfe
  2011-03-19 16:32   ` ryenus ◇
  0 siblings, 2 replies; 14+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2011-03-19 12:18 UTC (permalink / raw)
  To: ryenus ◇; +Cc: git, gitster

On Sat, Mar 19, 2011 at 7:08 PM, ryenus ◇ <ryenus@gmail.com> wrote:
> -               for e in `cd "$PACKDIR" && find . -type f -name '*.pack' \
> +               for e in `cd "$PACKDIR" && /usr/bin/find . -type f

I'd rather have something like in test-lib.sh (with conditions)

find() {
/usr/bin/find "$@"
}

Even better, rewrite this script to C.
-- 
Duy

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 12:18 ` Nguyen Thai Ngoc Duy
@ 2011-03-19 15:50   ` René Scharfe
  2011-03-19 16:07     ` Nguyen Thai Ngoc Duy
  2011-03-19 16:32   ` ryenus ◇
  1 sibling, 1 reply; 14+ messages in thread
From: René Scharfe @ 2011-03-19 15:50 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy; +Cc: ryenus ◇, git, gitster

Am 19.03.2011 13:18, schrieb Nguyen Thai Ngoc Duy:
> On Sat, Mar 19, 2011 at 7:08 PM, ryenus ◇<ryenus@gmail.com>  wrote:
>> -               for e in `cd "$PACKDIR"&&  find . -type f -name '*.pack' \
>> +               for e in `cd "$PACKDIR"&&  /usr/bin/find . -type f
> 
> I'd rather have something like in test-lib.sh (with conditions)
> 
> find() {
> /usr/bin/find "$@"
> }
> 
> Even better, rewrite this script to C.

That's a good idea, but it's a lot more involved than the original
patch.

Do we need to support pack files in subdirectories of $PACKDIR?  If
not -- and I don't immediately see why, except that the current code
does with its find call -- then the following patch might be a quick
bandaid.  Untested, please be careful.

René


 git-repack.sh |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/git-repack.sh b/git-repack.sh
index 624feec..4e49079 100755
--- a/git-repack.sh
+++ b/git-repack.sh
@@ -64,15 +64,16 @@ case ",$all_into_one," in
 ,t,)
 	args= existing=
 	if [ -d "$PACKDIR" ]; then
-		for e in `cd "$PACKDIR" && find . -type f -name '*.pack' \
-			| sed -e 's/^\.\///' -e 's/\.pack$//'`
-		do
-			if [ -e "$PACKDIR/$e.keep" ]; then
-				: keep
-			else
-				existing="$existing $e"
-			fi
-		done
+		existing=$(
+			cd "$PACKDIR" &&
+			for e in *.pack
+			do
+				if test -f "$e" -a ! -e "${e%.pack}.keep"
+				then
+					echo "${e%.pack}"
+				fi
+			done
+		)
 		if test -n "$existing" -a -n "$unpack_unreachable" -a \
 			-n "$remove_redundant"
 		then

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 15:50   ` René Scharfe
@ 2011-03-19 16:07     ` Nguyen Thai Ngoc Duy
  2011-03-19 16:15       ` Nguyen Thai Ngoc Duy
  0 siblings, 1 reply; 14+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2011-03-19 16:07 UTC (permalink / raw)
  To: René Scharfe; +Cc: ryenus ◇, git, gitster

On Sat, Mar 19, 2011 at 04:50:24PM +0100, René Scharfe wrote:
> Do we need to support pack files in subdirectories of $PACKDIR?  If
> not -- and I don't immediately see why, except that the current code
> does with its find call -- then the following patch might be a quick
> bandaid.  Untested, please be careful.

I looked at test-lib.sh but forgot git-sh-setup.sh, which does
aliasing for find in MINGW build. With your patch, the last use of
find is gone. So we might as well do this

diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index aa16b83..e891edc 100644
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -232,9 +232,6 @@ case $(uname -s) in
 	sort () {
 		/usr/bin/sort "$@"
 	}
-	find () {
-		/usr/bin/find "$@"
-	}
 	is_absolute_path () {
 		case "$1" in
 		[/\\]* | [A-Za-z]:*)

-- 
Duy

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 16:07     ` Nguyen Thai Ngoc Duy
@ 2011-03-19 16:15       ` Nguyen Thai Ngoc Duy
  0 siblings, 0 replies; 14+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2011-03-19 16:15 UTC (permalink / raw)
  To: René Scharfe; +Cc: ryenus ◇, git, gitster

On Sat, Mar 19, 2011 at 11:07 PM, Nguyen Thai Ngoc Duy
<pclouds@gmail.com> wrote:
> I looked at test-lib.sh but forgot git-sh-setup.sh, which does
> aliasing for find in MINGW build. With your patch, the last use of
> find is gone. So we might as well do this
>
> -       find () {
> -               /usr/bin/find "$@"
> -       }

On second thought, no. We probably need to do an unconditional alias

find() {
    die "find is not supported"
}

to make sure no one will ever use it again.
-- 
Duy

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 12:18 ` Nguyen Thai Ngoc Duy
  2011-03-19 15:50   ` René Scharfe
@ 2011-03-19 16:32   ` ryenus ◇
  2011-03-19 16:43     ` ryenus ◇
  2011-03-19 18:17     ` Junio C Hamano
  1 sibling, 2 replies; 14+ messages in thread
From: ryenus ◇ @ 2011-03-19 16:32 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy; +Cc: git, gitster

Thank you, Duy, you're almost right, I just checked git-sh-setup.sh,
in the bottom, sort and find are defined as functions like what you
pointed out, but only for MinGW, therefore a better fix is to check
for cygwin as well:

---
 git-sh-setup.sh |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/git-sh-setup.sh b/git-sh-setup.sh
index aa16b83..5c52ae4 100644
--- a/git-sh-setup.sh
+++ b/git-sh-setup.sh
@@ -227,7 +227,7 @@ fi

 # Fix some commands on Windows
 case $(uname -s) in
-*MINGW*)
+*MINGW*|*CYGWIN*)
        # Windows has its own (incompatible) sort and find
        sort () {
                /usr/bin/sort "$@"
--
1.7.4

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 16:32   ` ryenus ◇
@ 2011-03-19 16:43     ` ryenus ◇
  2011-03-19 16:47       ` Nguyen Thai Ngoc Duy
  2011-03-19 18:17     ` Junio C Hamano
  1 sibling, 1 reply; 14+ messages in thread
From: ryenus ◇ @ 2011-03-19 16:43 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy; +Cc: René Scharfe, git, gitster

OK, I've been away for a while and didn't notice latest replies :-) do
you mean find is not used elsewhere in git?

Anyway, looks like checking for both MinGW and Cygwin still applies.

Thanks

On Sun, Mar 20, 2011 at 00:32, ryenus ◇ <ryenus@gmail.com> wrote:
> Thank you, Duy, you're almost right, I just checked git-sh-setup.sh,
> in the bottom, sort and find are defined as functions like what you
> pointed out, but only for MinGW, therefore a better fix is to check
> for cygwin as well:
>
> ---
>  git-sh-setup.sh |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/git-sh-setup.sh b/git-sh-setup.sh
> index aa16b83..5c52ae4 100644
> --- a/git-sh-setup.sh
> +++ b/git-sh-setup.sh
> @@ -227,7 +227,7 @@ fi
>
>  # Fix some commands on Windows
>  case $(uname -s) in
> -*MINGW*)
> +*MINGW*|*CYGWIN*)
>        # Windows has its own (incompatible) sort and find
>        sort () {
>                /usr/bin/sort "$@"
> --
> 1.7.4
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 16:43     ` ryenus ◇
@ 2011-03-19 16:47       ` Nguyen Thai Ngoc Duy
  0 siblings, 0 replies; 14+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2011-03-19 16:47 UTC (permalink / raw)
  To: ryenus ◇; +Cc: René Scharfe, git, gitster

On Sat, Mar 19, 2011 at 11:43 PM, ryenus ◇ <ryenus@gmail.com> wrote:
> OK, I've been away for a while and didn't notice latest replies :-) do
> you mean find is not used elsewhere in git?

That's what 'git grep find *.sh' told me. Anyway I suppose our
testsuites cover all commands quite good so we would notice if any
other commands still use 'find'.

> Anyway, looks like checking for both MinGW and Cygwin still applies.

I don't use cygwin so I don't know if cygwin users are happy with
that. But it looks ok (unless some users decide to move find to
another place)
-- 
Duy

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 16:32   ` ryenus ◇
  2011-03-19 16:43     ` ryenus ◇
@ 2011-03-19 18:17     ` Junio C Hamano
  2011-03-20  0:31       ` ryenus ◇
  1 sibling, 1 reply; 14+ messages in thread
From: Junio C Hamano @ 2011-03-19 18:17 UTC (permalink / raw)
  To: ryenus ◇; +Cc: Nguyen Thai Ngoc Duy, git

ryenus ◇ <ryenus@gmail.com> writes:

> Thank you, Duy, you're almost right, I just checked git-sh-setup.sh,
> in the bottom, sort and find are defined as functions like what you
> pointed out, but only for MinGW, therefore a better fix is to check
> for cygwin as well:
>
> ---
>  git-sh-setup.sh |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/git-sh-setup.sh b/git-sh-setup.sh
> index aa16b83..5c52ae4 100644
> --- a/git-sh-setup.sh
> +++ b/git-sh-setup.sh
> @@ -227,7 +227,7 @@ fi
>
>  # Fix some commands on Windows
>  case $(uname -s) in
> -*MINGW*)
> +*MINGW*|*CYGWIN*)

This looks like a more sensible alternative than forbidding the use of
"find", privided if the new pattern is an appropriate one to catch cygwin.

I don't have any Windows boxes, so I cannot verify, but the patch smells
correct.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-19 18:17     ` Junio C Hamano
@ 2011-03-20  0:31       ` ryenus ◇
  2011-03-20  0:35         ` ryenus ◇
  0 siblings, 1 reply; 14+ messages in thread
From: ryenus ◇ @ 2011-03-20  0:31 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Nguyen Thai Ngoc Duy, René Scharfe, git

I'm not sure if there's a set of tests for Cygwin/MinGW among all the
test cases in GIT, here is a simple one:

#!/bin/sh
echo $(uname -s)
case $(uname -s) in
*MINGW*|*CYGWIN*)
  echo "detected MinGW/Cygwin"
  ;;
*MinGW*)
  echo "detected MinGW"
  ;;
*Cygwin*)
  echo "detected Cygwin"
  ;;
esac

Run with dash, the output is

CYGWIN_NT-6.1
detected MinGW/Cygwin

While I don't have MinGW, so someone has it please give it a shot.

Thanks

2011/3/20 Junio C Hamano <gitster@pobox.com>:
> ryenus ◇ <ryenus@gmail.com> writes:
>
>> Thank you, Duy, you're almost right, I just checked git-sh-setup.sh,
>> in the bottom, sort and find are defined as functions like what you
>> pointed out, but only for MinGW, therefore a better fix is to check
>> for cygwin as well:
>>
>> ---
>>  git-sh-setup.sh |    2 +-
>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/git-sh-setup.sh b/git-sh-setup.sh
>> index aa16b83..5c52ae4 100644
>> --- a/git-sh-setup.sh
>> +++ b/git-sh-setup.sh
>> @@ -227,7 +227,7 @@ fi
>>
>>  # Fix some commands on Windows
>>  case $(uname -s) in
>> -*MINGW*)
>> +*MINGW*|*CYGWIN*)
>
> This looks like a more sensible alternative than forbidding the use of
> "find", privided if the new pattern is an appropriate one to catch cygwin.
>
> I don't have any Windows boxes, so I cannot verify, but the patch smells
> correct.
>
>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-20  0:31       ` ryenus ◇
@ 2011-03-20  0:35         ` ryenus ◇
  2011-03-20  7:48           ` Matthieu Moy
  2011-03-21  9:36           ` Erik Faye-Lund
  0 siblings, 2 replies; 14+ messages in thread
From: ryenus ◇ @ 2011-03-20  0:35 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Nguyen Thai Ngoc Duy, René Scharfe, git

oops, corrected the script with the test strings in upper cases

#!/bin/sh
echo $(uname -s)
case $(uname -s) in
*MINGW*|*CYGWIN*)
  echo "detected MinGW/Cygwin"
  ;;
*MINGW*)
  echo "detected MinGW"
  ;;
*CYGWIN*)
  echo "detected Cygwin"
  ;;
esac


On Sun, Mar 20, 2011 at 08:31, ryenus ◇ <ryenus@gmail.com> wrote:
> I'm not sure if there's a set of tests for Cygwin/MinGW among all the
> test cases in GIT, here is a simple one:
>
> #!/bin/sh
> echo $(uname -s)
> case $(uname -s) in
> *MINGW*|*CYGWIN*)
>  echo "detected MinGW/Cygwin"
>  ;;
> *MinGW*)
>  echo "detected MinGW"
>  ;;
> *Cygwin*)
>  echo "detected Cygwin"
>  ;;
> esac
>
> Run with dash, the output is
>
> CYGWIN_NT-6.1
> detected MinGW/Cygwin
>
> While I don't have MinGW, so someone has it please give it a shot.
>
> Thanks
>
> 2011/3/20 Junio C Hamano <gitster@pobox.com>:
>> ryenus ◇ <ryenus@gmail.com> writes:
>>
>>> Thank you, Duy, you're almost right, I just checked git-sh-setup.sh,
>>> in the bottom, sort and find are defined as functions like what you
>>> pointed out, but only for MinGW, therefore a better fix is to check
>>> for cygwin as well:
>>>
>>> ---
>>>  git-sh-setup.sh |    2 +-
>>>  1 files changed, 1 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/git-sh-setup.sh b/git-sh-setup.sh
>>> index aa16b83..5c52ae4 100644
>>> --- a/git-sh-setup.sh
>>> +++ b/git-sh-setup.sh
>>> @@ -227,7 +227,7 @@ fi
>>>
>>>  # Fix some commands on Windows
>>>  case $(uname -s) in
>>> -*MINGW*)
>>> +*MINGW*|*CYGWIN*)
>>
>> This looks like a more sensible alternative than forbidding the use of
>> "find", privided if the new pattern is an appropriate one to catch cygwin.
>>
>> I don't have any Windows boxes, so I cannot verify, but the patch smells
>> correct.
>>
>>
>>
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-20  0:35         ` ryenus ◇
@ 2011-03-20  7:48           ` Matthieu Moy
  2011-03-20  8:42             ` ryenus ◇
  2011-03-21  9:36           ` Erik Faye-Lund
  1 sibling, 1 reply; 14+ messages in thread
From: Matthieu Moy @ 2011-03-20  7:48 UTC (permalink / raw)
  To: ryenus ◇
  Cc: Junio C Hamano, Nguyen Thai Ngoc Duy, René Scharfe, git

ryenus ◇ <ryenus@gmail.com> writes:

> oops, corrected the script with the test strings in upper cases
>
> #!/bin/sh
> echo $(uname -s)
> case $(uname -s) in
> *MINGW*|*CYGWIN*)
         ^
This "|" means "or" in a case statement...

>   echo "detected MinGW/Cygwin"
>   ;;
> *MINGW*)

...so I can see no way to reach this point: if the string matches
*MINGW*, it also matches *MINGW*|*CYGWIN*.

>   echo "detected MinGW"
>   ;;
> *CYGWIN*)
>   echo "detected Cygwin"
>   ;;
> esac

But you've just showed that $(uname -s) of Cygwin did contain upper-case
CYGWIN, which I think was the point to verify :-).

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-20  7:48           ` Matthieu Moy
@ 2011-03-20  8:42             ` ryenus ◇
  0 siblings, 0 replies; 14+ messages in thread
From: ryenus ◇ @ 2011-03-20  8:42 UTC (permalink / raw)
  To: Matthieu Moy; +Cc: Junio C Hamano, Nguyen Thai Ngoc Duy, René Scharfe, git

Hey Matthieu,

Yes, I mean it.

The purpose of this test script is to testify that "*MINGW*|*CYGWIN*"
will match MinGW and/or Cygwin, so that it won't fall down to the next
2 cases.


On Sun, Mar 20, 2011 at 15:48, Matthieu Moy
<Matthieu.Moy@grenoble-inp.fr> wrote:
> ryenus ◇ <ryenus@gmail.com> writes:
>
>> oops, corrected the script with the test strings in upper cases
>>
>> #!/bin/sh
>> echo $(uname -s)
>> case $(uname -s) in
>> *MINGW*|*CYGWIN*)
>         ^
> This "|" means "or" in a case statement...
>
>>   echo "detected MinGW/Cygwin"
>>   ;;
>> *MINGW*)
>
> ...so I can see no way to reach this point: if the string matches
> *MINGW*, it also matches *MINGW*|*CYGWIN*.
>
>>   echo "detected MinGW"
>>   ;;
>> *CYGWIN*)
>>   echo "detected Cygwin"
>>   ;;
>> esac
>
> But you've just showed that $(uname -s) of Cygwin did contain upper-case
> CYGWIN, which I think was the point to verify :-).
>
> --
> Matthieu Moy
> http://www-verimag.imag.fr/~moy/
>

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] repack: find -> /usr/bin/find, as for cygwin
  2011-03-20  0:35         ` ryenus ◇
  2011-03-20  7:48           ` Matthieu Moy
@ 2011-03-21  9:36           ` Erik Faye-Lund
  1 sibling, 0 replies; 14+ messages in thread
From: Erik Faye-Lund @ 2011-03-21  9:36 UTC (permalink / raw)
  To: ryenus ◇
  Cc: Junio C Hamano, Nguyen Thai Ngoc Duy, René Scharfe, git

On Sun, Mar 20, 2011 at 1:35 AM, ryenus ◇ <ryenus@gmail.com> wrote:
> oops, corrected the script with the test strings in upper cases
>
> #!/bin/sh
> echo $(uname -s)
> case $(uname -s) in
> *MINGW*|*CYGWIN*)
>  echo "detected MinGW/Cygwin"
>  ;;
> *MINGW*)
>  echo "detected MinGW"
>  ;;
> *CYGWIN*)
>  echo "detected Cygwin"
>  ;;
> esac
>

Output:
MINGW32_NT-6.1
detected MinGW/Cygwin

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2011-03-21  9:37 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-19 12:08 [PATCH] repack: find -> /usr/bin/find, as for cygwin ryenus ◇
2011-03-19 12:18 ` Nguyen Thai Ngoc Duy
2011-03-19 15:50   ` René Scharfe
2011-03-19 16:07     ` Nguyen Thai Ngoc Duy
2011-03-19 16:15       ` Nguyen Thai Ngoc Duy
2011-03-19 16:32   ` ryenus ◇
2011-03-19 16:43     ` ryenus ◇
2011-03-19 16:47       ` Nguyen Thai Ngoc Duy
2011-03-19 18:17     ` Junio C Hamano
2011-03-20  0:31       ` ryenus ◇
2011-03-20  0:35         ` ryenus ◇
2011-03-20  7:48           ` Matthieu Moy
2011-03-20  8:42             ` ryenus ◇
2011-03-21  9:36           ` Erik Faye-Lund

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).