Re: [msysGit] Re: [PATCH bc/connect-plink] t5601-clone: remove broken and pointless check for plink.exe

2015-08-13 Thread Johannes Schindelin
Hi kusma,

On 2015-08-12 13:58, Erik Faye-Lund wrote:
 On Wed, Aug 12, 2015 at 1:07 PM, Johannes Schindelin
 johannes.schinde...@gmx.de wrote:

 On 2015-08-11 22:51, Johannes Sixt wrote:
 Invoking plink requires special treatment, and we have support and even
 test cases for the commands 'plink' and 'tortoiseplink'. We also support
 .exe variants for these two and there is a test for 'plink.exe'.

 On Windows, however, where support for plink.exe would be relevant, the
 test case fails because it is not possible to execute a file with a .exe
 extension that is actually not a binary executable---it is a shell
 script in our test. We have to disable the test case on Windows.

 Oh how would I wish you were working on Git for Windows even *just* a bit 
 *with* me. At least I would wish for a more specific description of the 
 development environment, because it sure as hell is not anything anybody can 
 download and install as easily as Git for Windows' SDK.

 FWIW Git for Windows has this patch (that I wanted to contribute in due 
 time, what with being busy with all those tickets) to solve the problem 
 mentioned in your patch in a different way:

 https://github.com/git-for-windows/git/commit/2fff4b54a0d4e5c5e2e4638c9b0739d3c1ff1e45
 
 Yuck. On Windows, it's the extension of a file that dictates what kind
 of file it is (and if it's executable or not), not the contents.

Careful. If you continue along those lines, interactive rebase, `git add -p` 
and all those wonderful scripts Git has will have to stop working.

Because those scripts completely disagree with what you just said about Windows 
if you think about it: *none* of them has an extension.

I know that you do not mean this, of course, but that is the argument you were 
making... ;-)

 If we get a shell script written with the .exe-prefix, it's considered as
 an invalid executable by the system.

And if we get a shell script without any `.exe` suffix, it is still considered 
as an invalid executable by the system. And even if we tack on an `.sh` suffix 
(which is *not* in line with the way Git works), it is *still* considered as an 
invalid executable by the system.

Ciao,
Dscho
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [msysGit] Re: [PATCH bc/connect-plink] t5601-clone: remove broken and pointless check for plink.exe

2015-08-13 Thread Erik Faye-Lund
On Thu, Aug 13, 2015 at 10:37 AM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:
 Hi kusma,

 On 2015-08-12 13:58, Erik Faye-Lund wrote:
 On Wed, Aug 12, 2015 at 1:07 PM, Johannes Schindelin
 johannes.schinde...@gmx.de wrote:

 On 2015-08-11 22:51, Johannes Sixt wrote:
 Invoking plink requires special treatment, and we have support and even
 test cases for the commands 'plink' and 'tortoiseplink'. We also support
 .exe variants for these two and there is a test for 'plink.exe'.

 On Windows, however, where support for plink.exe would be relevant, the
 test case fails because it is not possible to execute a file with a .exe
 extension that is actually not a binary executable---it is a shell
 script in our test. We have to disable the test case on Windows.

 Oh how would I wish you were working on Git for Windows even *just* a bit 
 *with* me. At least I would wish for a more specific description of the 
 development environment, because it sure as hell is not anything anybody 
 can download and install as easily as Git for Windows' SDK.

 FWIW Git for Windows has this patch (that I wanted to contribute in due 
 time, what with being busy with all those tickets) to solve the problem 
 mentioned in your patch in a different way:

 https://github.com/git-for-windows/git/commit/2fff4b54a0d4e5c5e2e4638c9b0739d3c1ff1e45

 Yuck. On Windows, it's the extension of a file that dictates what kind
 of file it is (and if it's executable or not), not the contents.

 Careful. If you continue along those lines, interactive rebase, `git add -p` 
 and all those wonderful scripts Git has will have to stop working.

 Because those scripts completely disagree with what you just said about 
 Windows if you think about it: *none* of them has an extension.

 I know that you do not mean this, of course, but that is the argument you 
 were making... ;-)


You should know better than to straw-man like that.

I was not arguing to break any current functionality, but to not move
further away from Windows' semantics.

But if I would have, there's nothing that would stop us from renaming
those scrips to *.sh, and let the filename dictate how to execute
them. Or provide batch-files to wrap them.

 If we get a shell script written with the .exe-prefix, it's considered as
 an invalid executable by the system.

 And if we get a shell script without any `.exe` suffix, it is still 
 considered as an invalid executable by the system.

Nope, it's considered an unknown file, not an executable at all.

 And even if we tack on an `.sh` suffix (which is *not* in line with the way 
 Git works), it is *still* considered as an invalid executable by the system.

That's not necessarily true; the Git for Windows installer
(optionally, but on by default) registers /bin/sh as a file-handler
for .sh files. Windows knows just fine how to execute them, unless the
user opts out.

But again, I was not arguing to patch git to not parse the shebang.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [msysGit] Re: [PATCH bc/connect-plink] t5601-clone: remove broken and pointless check for plink.exe

2015-08-13 Thread Johannes Schindelin
Hi Johannes,

On 2015-08-12 20:31, Johannes Sixt wrote:
 Am 12.08.2015 um 13:58 schrieb Erik Faye-Lund:
 On Wed, Aug 12, 2015 at 1:07 PM, Johannes Schindelin
 johannes.schinde...@gmx.de wrote:
 FWIW Git for Windows has this patch (that I wanted to contribute
 in  due time, what with being busy with all those tickets) to solve the
 problem mentioned in your patch in a different way:

 https://github.com/git-for-windows/git/commit/2fff4b54a0d4e5c5e2e4638c9b0739d3c1ff1e45

 Yuck. On Windows, it's the extension of a file that dictates what kind
 of file it is (and if it's executable or not), not the contents. If we
 get a shell script written with the .exe-prefix, it's considered as
 an invalid executable by the system. We should consider it the same
 way, otherwise we're on the path to user-experience schizophrenia.

 I'm not sure I consider this commit a step in the right direction.
 
 I, too, think that it is a wrong decision to pessimize git for the
 sake of a single test case.

Oh, you make it sound as if you believe that I had indeed weakened Git *just* 
for a single test case.

That is quite a strong assumption, and could not be further from the truth, 
though, I have to point out. It is important to keep in mind that we (actually, 
IIRC it was you) taught Git to recognize shell scripts when executing external 
programs *because Windows does not do that for us*. So yes, we are deviating 
from the standard Windows way of things, and we do that quite intentionally so.

Now, let's look at the test case for a moment and let's try to understand the 
technique it uses (that breaks the test case currently). It puts a script in 
place of an `.exe`, with the intention to execute the script instead of the 
original executable.

This technique is an age-old technique on Unix, and it just works. There are a 
range of valid reasons, from debugging to slightly modifying the function of a 
particular `.exe` (possibly renaming the original `.exe` and calling it from 
the script) in the easiest way: by scripting on top of it.

If we want to allow such a thing -- allowing users to use scripts to modify the 
behavior of executables -- then we *have* to allow `.exe` suffixes for scripts, 
because that happens to be the suffix of executables on Windows.

I guess you would have had an easier time to understand my thinking if I had 
replaced the sentence

So the assumption that the `.exe` extension implies that the file is *not* 
a shell script is now wrong.

by

So this is a strong indicator that it was wrong to assume that `.exe` 
extensions imply that the file is *not* a shell script.

Further, I even looked at the performance impact, but that is at least well 
documented in the commit message.

I also have to point out that the alternative solution presented by your 
patch -- to disable the test case -- is no solution at all: the very platform 
that is most likely to have plink users is Windows. And to *exclude* that 
platform from running that unit test is questionable at best.

Ciao,
Johannes
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [msysGit] Re: [PATCH bc/connect-plink] t5601-clone: remove broken and pointless check for plink.exe

2015-08-13 Thread Johannes Sixt

Am 13.08.2015 um 09:30 schrieb Johannes Schindelin:

Hi Johannes,

On 2015-08-12 20:31, Johannes Sixt wrote:

Am 12.08.2015 um 13:58 schrieb Erik Faye-Lund:

On Wed, Aug 12, 2015 at 1:07 PM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:

FWIW Git for Windows has this patch (that I wanted to contribute
in  due time, what with being busy with all those tickets) to solve the
problem mentioned in your patch in a different way:

https://github.com/git-for-windows/git/commit/2fff4b54a0d4e5c5e2e4638c9b0739d3c1ff1e45


Yuck. On Windows, it's the extension of a file that dictates what kind
of file it is (and if it's executable or not), not the contents. If we
get a shell script written with the .exe-prefix, it's considered as
an invalid executable by the system. We should consider it the same
way, otherwise we're on the path to user-experience schizophrenia.

I'm not sure I consider this commit a step in the right direction.


I, too, think that it is a wrong decision to pessimize git for the
sake of a single test case.


Oh, you make it sound as if you believe that I had indeed weakened
Git  *just* for a single test case.


Whatever. Since I do not have the time to provide hard numbers that 
prove my claim that your patch removes an optimization (and, 
furthermore, I do not want to reply to your arguments that I consider 
mostly philosophical rather than pragmatic), I bow out. Until this 
solution or that one is in upstream, I can help myself.


Junio, please drop my patch. I do not have the nerves to support it.

-- Hannes

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [msysGit] Re: [PATCH bc/connect-plink] t5601-clone: remove broken and pointless check for plink.exe

2015-08-12 Thread Erik Faye-Lund
On Wed, Aug 12, 2015 at 1:07 PM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:
 Hi Johannes,

 On 2015-08-11 22:51, Johannes Sixt wrote:
 Invoking plink requires special treatment, and we have support and even
 test cases for the commands 'plink' and 'tortoiseplink'. We also support
 .exe variants for these two and there is a test for 'plink.exe'.

 On Windows, however, where support for plink.exe would be relevant, the
 test case fails because it is not possible to execute a file with a .exe
 extension that is actually not a binary executable---it is a shell
 script in our test. We have to disable the test case on Windows.

 Oh how would I wish you were working on Git for Windows even *just* a bit 
 *with* me. At least I would wish for a more specific description of the 
 development environment, because it sure as hell is not anything anybody can 
 download and install as easily as Git for Windows' SDK.

 FWIW Git for Windows has this patch (that I wanted to contribute in due time, 
 what with being busy with all those tickets) to solve the problem mentioned 
 in your patch in a different way:

 https://github.com/git-for-windows/git/commit/2fff4b54a0d4e5c5e2e4638c9b0739d3c1ff1e45

Yuck. On Windows, it's the extension of a file that dictates what kind
of file it is (and if it's executable or not), not the contents. If we
get a shell script written with the .exe-prefix, it's considered as
an invalid executable by the system. We should consider it the same
way, otherwise we're on the path to user-experience schizophrenia.

I'm not sure I consider this commit a step in the right direction.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [msysGit] Re: [PATCH bc/connect-plink] t5601-clone: remove broken and pointless check for plink.exe

2015-08-12 Thread Johannes Sixt

Am 12.08.2015 um 13:58 schrieb Erik Faye-Lund:

On Wed, Aug 12, 2015 at 1:07 PM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:

FWIW Git for Windows has this patch (that I wanted to contribute
in  due time, what with being busy with all those tickets) to solve the
problem mentioned in your patch in a different way:

https://github.com/git-for-windows/git/commit/2fff4b54a0d4e5c5e2e4638c9b0739d3c1ff1e45


Yuck. On Windows, it's the extension of a file that dictates what kind
of file it is (and if it's executable or not), not the contents. If we
get a shell script written with the .exe-prefix, it's considered as
an invalid executable by the system. We should consider it the same
way, otherwise we're on the path to user-experience schizophrenia.

I'm not sure I consider this commit a step in the right direction.


I, too, think that it is a wrong decision to pessimize git for the sake 
of a single test case.


-- Hannes

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html