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


Re: [msysGit] Re: [PATCH 13/17] engine.pl: provide more debug print statements

2015-07-07 Thread Philip Oakley

From: Sebastian Schuberth sschube...@gmail.com

On 25.06.2015 02:03, Philip Oakley wrote:


--- a/contrib/buildsystems/engine.pl
+++ b/contrib/buildsystems/engine.pl
@@ -41,6 +41,7 @@ EOM
  # Parse command-line options
  while (@ARGV) {
  my $arg = shift @ARGV;
+ #print Arg: $arg \n;
  if ($arg eq -h || $arg eq --help || $arg eq -?) {
  showUsage();
  exit(0);
@@ -129,6 +130,7 @@ sub parseMakeOutput
  print Parsing GNU Make output to figure out build
structure...\n;
  my $line = 0;
  while (my $text = shift @makedry) {
+ #print Make: $text\n; # show the makedry line


Please never commit code that's been commented out. Also see

http://dev.solita.fi/2013/07/04/whats-in-a-good-commit.html

;-)


The gif was fun, even if it's a little OTT. It does smack of religious
dogma though ;-)



--


Hi Sebastian,

It's deactivated code, not dead code [1].

I'd deliberately included this 'code', as per the commit message because
I saw this as a clear part of aiding future maintenance, and it matches
the rest of the code style, i.e. the judicious placement of a comment
that says 'here's the place to pick out the status when debugging' -
perhaps it's my engineering experience that sees the benefits.

These were the key debug points I used - other's I've removed from the 
series.


Philip


[1] In one of the replies to
http://embeddedgurus.com/barr-code/2013/02/dead-code-the-law-and-unintended-consequences/

: as per DO178B safety critical software development guideline
document Terms Dead code and Deactivated Code have distinct 
meanings:


Dead code : Dead code is source code (and it is a part of binary code)
that is not executed in the final system and it will be not having
traceability to any requirements (one can say unintentional code).

Deactivated code: code which is commented out or removed via #ifdef's
(it is not a part of final binary code) and it will be having
traceability to its low level requirements (its a intentional code and
it can be activated in some configurations through hardware traps for
debugging or other purposes.


--
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: Release candidate of Git for Windows 2.x is out

2015-06-27 Thread Johannes Schindelin
On 2015-06-26 13:06, Ties wrote:

 Do you have an ETA on the final release? 

No, sorry, no ETA yet.
--
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: 3rd release candidate of Git for Windows 2.x, was Re: Release candidate of Git for Windows 2.x is out

2015-06-20 Thread Johannes Schindelin
Hi Jon,

On 2015-06-20 16:59, Jon wrote:
 On Saturday, June 20, 2015 at 10:16:09 AM UTC-4, Johannes Schindelin wrote:

 I just uploaded the 3rd release candidate for the upcoming Git for Windows
 2.x release. Please find the download link here:

 https://git-for-windows.github.io/#download

 Lots of changes since the first release candidate (v2.4.2, I was too
 swamped to announce the second release candidate -- v2.4.3 -- I published
 Friday last week, my apologies). Please find them in the release notes:

 https://github.com/git-for-windows/build-extra/blob/master/installer/ReleaseNotes.md
 
 1) Why are there two ssl/certs trees? (e.g. - one is used by git-bash.exe 
 and the other git-cmd.exe and cmd/git.exe?)

Please keep in mind that Git for Windows is a hybrid collection of pure Win32 
executables and MSys2 executables (MSys2 is a stripped-down Cygwin providing a 
POSIX emulation layer on top of the Win32 API[*1*]). They are separated into 
the `/usr/` and the `/mingw64/` directories, respectively (`/mingw32/` for 
32-bit). An example for a pure Win32 executable is `git.exe` while Perl and 
Bash are MSys2 executables. In general, we avoid MSys2 as much as possible: 
while it provides a nice POSIX emulation layer, it comes at a noticable 
performance penalty.

So whenever we can get away with using OpenSSL compiled as pure Win32 library, 
we do so. Cloning via HTTPS falls into that category.

When it comes to `git-svn` -- something that is needed by many users, still, 
and indeed the motivation for the most prolific contributor helping me with Git 
for Windows 2.x -- it is not that easy, though: `git-svn` is a Perl script, our 
Perl is an MSys2 program and therefore uses OpenSSL compiled as MSys2 library.

That is the reason why we have separate ssl/ directory structures. One for 
MinGW (i.e. pure Win32) programs and one for MSys2 ones.

 2) Why are INSTALL_DIR/usr/ssl/certs/ca-bundle.crt and 
 INSTALL_DIR/mingw64/ssl/certs/ca-bundle.crt different?

We simply use the packages provided by MSys2. The MinGW/MSys2 ca-certificates 
packages are sometimes out of sync, and that is what you are seeing here.

Now, theoretically it would be possible to reconcile the different 
ca-certificates packages into a single one. The correct way to go about this 
would be by contributing to the MSys2 project: that way, not only Git for 
Windows but really all MSys2-based projects benefit from it.

Ciao,
Johannes

Footnote *1*: https://msys2.github.io/
--
To unsubscribe from this list: send the line unsubscribe git in


Re: [msysGit] Re: Release candidate of Git for Windows 2.x is out

2015-06-09 Thread Johannes Schindelin
Hi,

On 2015-06-09 14:10, QbProg wrote:

 I reproduce it using the windows command prompt (cmd.exe) using any
 repository. I tryed with bash and it works correctly.

Please note that you removed enough context that the mail does not make sense 
anymore if read individually.

At this point it might be best to open a ticket, as I suggested in my 
announcement: just log into GitHub (or sign up for free) and direct your web 
browser to https://github.com/git-for-windows/git/issues/new.

For the record: I tried again, with `Git CMD`, this time I called

```cmd
git clone https://github.com/dscho/images.git octo2
```

... and octo2/ is created correctly and contains the `.git/` subdirectory 
(which is hidden by default, but you can call `cd octo2/.git`). Read: I still 
cannot reproduce the issue.

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: Release candidate of Git for Windows 2.x is out

2015-06-09 Thread Johannes Schindelin
Hi,

On 2015-06-09 10:43, Qb wrote:

 I'm trying the release candidate on Win 8.1. Everything's working now, but 
 when I clone a repository
 
 git clone http://./name.git CustomFolder
 
 it creates CustomFolder with the checkout files, but the .git folder is 
 created inside CustomFolder\CustomFolder\

I cannot reproduce this behavior.

This is what I did to test:

1. install Git-2.4.2.1-release-candidate-64.exe (default options)
2. run Git Bash
3. git clone https://github.com/dscho/images.git octocats

This results in a correct checkout: `$HOME/octocats/.git/` exists and contains 
the local repository.

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: Sneak peek of the upcoming Git for Windows 2.x

2015-04-15 Thread Johannes Schindelin
Hi Vitaly,

On 2015-04-15 09:17, Vitaly wrote:

  feel free to give it a spin: https://git-for-windows.github.io/#download

 
 I have installed msysgit 1.9.4, installing git for windows 2.3.5.8 (into 
 default localtion and with use from Windows command prompt)

Which version, 32-bit or 64-bit? PortableGit or regular Git?

 and call git --version still give me  msysgit1.9.4

And the path was not adjusted at all? That would be strange indeed.

 I have delete gfw 2.3.5.8 and msysgit 1.9.4, install gfw 2.3.5.8 once again 
 (and check use from Windows command prompt) and now I have:
 C:\git
 error launching git:  .
 
 I see C:\Program Files (x86)\Git\bin in my PATH (from old installs?), but 
 did not see this directory (bin) under Git installation

There is explicit code to modify the PATH environment variable when you choose 
the from Windows command prompt option: 
https://github.com/git-for-windows/build-extra/blob/4fdceef37514d1b35d524a8752ccf4e7ad778f60/installer/install.iss.in#L1163-L1177

Just to make sure, you are certain that the PATH variable is not touched, even 
if you reinstall (without uninstalling Git for Windows first)?

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: Sneak peek of the upcoming Git for Windows 2.x

2015-04-13 Thread Tay Ray Chuan
Hi Rupert,

On Mon, Apr 13, 2015 at 1:51 AM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:
 On 2015-04-11 10:37, rupert thurner wrote:
  * the prompt is still as slow as before, calculating the branch name on
  pressing return without option to turn it off

 There is no explicit option in the installer to turn it off, but you can 
 easily edit `/etc/profile.d/git-prompt.sh` to adjust it to your liking.

 If you think that more people would want to have an option in the installer 
 to switch it off, you should read 
 https://github.com/git-for-windows/git/wiki/Making-an-installer, edit 
 /usr/src/build-extra/installer/install.iss.in after having a look at 
 https://github.com/git-for-windows/build-extra/commit/cbcf69b9 and open a 
 Pull Request.

Personally I edit it away from PS1:
https://github.com/rctay/msysgit/commit/4038833505bc2c088524546e923d64d69c0fa37f

-- 
Cheers,
Ray Chuan
--
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: Sneak peek of the upcoming Git for Windows 2.x

2015-04-13 Thread Konstantin Khomoutov
On Sun, 12 Apr 2015 19:51:29 +0200
Johannes Schindelin johannes.schinde...@gmx.de wrote:

[...]
  * it is talking german to me
  
  would it be sufficient to delete
  c:\Apps\gitwin\mingw64\share\locale\de\LC_MESSAGES\
  resp the whole locale directory to let it speak english?
 
 Probably. But the canonical solution is to set the `LC_ALL` or `LANG`
 environment variables accordingly.

JFTR, that won't probably fix `git gui` and `gitk` as they are started
directly, not via shell scripts, and hence are unaffected by whatever
tweaks are done in ~/.bashrc *unless* they're started from the
interactive Git bash shell and hence see that environment.

I would hence just stick LC_MESSAGES=en (or LC_ALL, or LANG) into the
environment variables (on the user's level) and solve this problem once
and for all future programs making use of Unix-y locale setup
conventions.
--
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: Sneak peek of the upcoming Git for Windows 2.x

2015-04-12 Thread Johannes Schindelin
Hi Rupert,

On 2015-04-11 10:37, rupert thurner wrote:
 
 three things i do not like it so much:
 * the old distinct icon is replaced by a new one which looks similar to 
 many other programs, like google chrome. would it be possible to set the 
 old icon?

Git 1.9.5 came with the Git icon already (the diamond with the branch in it) 
and now we simply have this Windowsified. There was so much positive and 
uplifting feedback about it at the Git Merge (and besides, I really like the 
new icon myself), it is unlikely to change.

 * the prompt is still as slow as before, calculating the branch name on 
 pressing return without option to turn it off

There is no explicit option in the installer to turn it off, but you can easily 
edit `/etc/profile.d/git-prompt.sh` to adjust it to your liking.

If you think that more people would want to have an option in the installer to 
switch it off, you should read 
https://github.com/git-for-windows/git/wiki/Making-an-installer, edit 
/usr/src/build-extra/installer/install.iss.in after having a look at 
https://github.com/git-for-windows/build-extra/commit/cbcf69b9 and open a Pull 
Request.
 
 * it is talking german to me
 
 would it be sufficient to delete
 c:\Apps\gitwin\mingw64\share\locale\de\LC_MESSAGES\
 resp the whole locale directory to let it speak english?

Probably. But the canonical solution is to set the `LC_ALL` or `LANG` 
environment variables accordingly.

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:

2015-04-09 Thread Mamta
I was not cross posting. Posted on this thread after you mentioned in your post 
that writing on msysgit user group is futile. Thought I wouldn't get further 
replies on my questions there. Plus I got a feeling that I will get more in 
depth information here. Sorry if I sent a wrong message

 On Apr 9, 2015, at 6:27 AM, Konstantin Khomoutov 
 flatw...@users.sourceforge.net wrote:
 
 On Wed, 08 Apr 2015 23:58:58 +0200
 Thomas Braun thomas.br...@virtuell-zuhause.de wrote:
 
 [...]
 I am trying to run the latest git 1.9.5 installer on windows. When I
 run strings on libneon-25.dll it shows this:
 
 ./libneon-25.dll:OpenSSL 1.0.1h 5 Jun 2014
 
 But when I load this dll in dependency walker, it picks up
 msys-openssl 1.0.1m and has no trace of openssl-1.0.1h. My questions
 to you:
 
 1. Is libneon-25.dll statically linked with openssl-1.0.1h?
 2. If not, where is the reference to 1.0.1h coming from?
 
 I would be suprised if we link openssl statically into libneon. I
 guess libneon just reports against which openssl version it was
 *built*.
 
 I am asked to rebuild git with libneon-25.dll linked against
 openssl-1.0.1m. But I am having a feeling that this is not needed,
 since libneon is already picking the latest openssl version. Can you
 please confirm?
 
 You can download the development enviroment for git for windows here
 [1]. After installation, checkout the msys branch and then you can try
 to recomplile libneon using /src/subversion/release.sh.
 
 [1]:
 https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/msysGit-netinstall-1.9.5-preview20150319.exe
 [...]
 
 JFTR, the discussion about the same issue has been brought up on
 git-users as well [2].
 
 (People should really somehow use the basics of netiquette and mention
 in their posts where they cross-post things.)
 
 2. https://groups.google.com/d/topic/git-users/WXyWE5_JfNc/discussion
--
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:

2015-04-09 Thread Konstantin Khomoutov
On Wed, 08 Apr 2015 23:58:58 +0200
Thomas Braun thomas.br...@virtuell-zuhause.de wrote:

[...]
  I am trying to run the latest git 1.9.5 installer on windows. When I
  run strings on libneon-25.dll it shows this:
  
  ./libneon-25.dll:OpenSSL 1.0.1h 5 Jun 2014
  
  But when I load this dll in dependency walker, it picks up
  msys-openssl 1.0.1m and has no trace of openssl-1.0.1h. My questions
  to you:
  
  1. Is libneon-25.dll statically linked with openssl-1.0.1h?
  2. If not, where is the reference to 1.0.1h coming from?
 
 I would be suprised if we link openssl statically into libneon. I
 guess libneon just reports against which openssl version it was
 *built*.
 
  I am asked to rebuild git with libneon-25.dll linked against
  openssl-1.0.1m. But I am having a feeling that this is not needed,
  since libneon is already picking the latest openssl version. Can you
  please confirm?
 
 You can download the development enviroment for git for windows here
 [1]. After installation, checkout the msys branch and then you can try
 to recomplile libneon using /src/subversion/release.sh.
 
 [1]:
 https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/msysGit-netinstall-1.9.5-preview20150319.exe
[...]

JFTR, the discussion about the same issue has been brought up on
git-users as well [2].

(People should really somehow use the basics of netiquette and mention
in their posts where they cross-post things.)

2. https://groups.google.com/d/topic/git-users/WXyWE5_JfNc/discussion
--
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: Sparse checkout not working as expected (colons in filenames on Windows)

2015-03-25 Thread Johannes Schindelin
Hi Duy,

On 2015-03-25 01:46, Duy Nguyen wrote:
 On Wed, Mar 25, 2015 at 6:50 AM, Philip Oakley philipoak...@iee.org wrote:

 That said, the final error (which I'd missed in the earlier post) is:
 fatal: make_cache_entry failed for path 'ifcfg-eth0:0'

 This is on the Windows (pre-compiled msysgit at v1.9.5) Git bash, so could
 be a catch path in that code for make_cache_entry (I've not checked the code
 yet). So at the moment it doesn't look like sparse checkout can be used to
 avoid colons in windows on-disk files based on the current code.
 
 Both of your commands below fail by the same function, verify_path()
 because of this msysgit commit 2e2a2d1 (NTFS: Prevent problematic
 paths from being checked out - 2014-12-10). I guess that check is a
 bit too strong, it should apply when new index entries are created
 from worktree (not from a tree)..

Oh, right, that check needs some relaxing. But certainly in a different way: 
you *definitely* want to prevent attacks from the outside, and those originate 
from the *tree*.

What we need to do instead is to relax the check to apply only if we are really 
going to write out that file, not when it is skipped.

Thanks,
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: Sparse checkout not working as expected (colons in filenames on Windows)

2015-03-25 Thread Duy Nguyen
On Wed, Mar 25, 2015 at 1:39 PM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:
 Hi Duy,

 On 2015-03-25 01:46, Duy Nguyen wrote:
 On Wed, Mar 25, 2015 at 6:50 AM, Philip Oakley philipoak...@iee.org wrote:

 That said, the final error (which I'd missed in the earlier post) is:
 fatal: make_cache_entry failed for path 'ifcfg-eth0:0'

 This is on the Windows (pre-compiled msysgit at v1.9.5) Git bash, so could
 be a catch path in that code for make_cache_entry (I've not checked the code
 yet). So at the moment it doesn't look like sparse checkout can be used to
 avoid colons in windows on-disk files based on the current code.

 Both of your commands below fail by the same function, verify_path()
 because of this msysgit commit 2e2a2d1 (NTFS: Prevent problematic
 paths from being checked out - 2014-12-10). I guess that check is a
 bit too strong, it should apply when new index entries are created
 from worktree (not from a tree)..

 Oh, right, that check needs some relaxing. But certainly in a different way: 
 you *definitely* want to prevent attacks from the outside, and those 
 originate from the *tree*.

 What we need to do instead is to relax the check to apply only if we are 
 really going to write out that file, not when it is skipped.

Yeah. In fact if you do this, not checking out  files that can't be or
not safe to be checked out, then the ifcfg-eth0:0 problem that Phillip
wanted to avoid using sparse checkout is also gone.
-- 
Duy
--
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: [RFH] GSoC 2015 application

2015-02-25 Thread Johannes Schindelin
Hi Duy,

On 2015-02-25 11:02, Duy Nguyen wrote:
 On Wed, Feb 25, 2015 at 6:56 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 To get an idea, I counted the lines of code written by the student I
 mentored last year:

 $ git log --author tanay...@gmail.com -p | diffstat -s
  43 files changed, 1225 insertions(+), 367 deletions(-)

 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.

 In comparison:

 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh

 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.
 
 Some data point as I have a half-baked builtin/pull.c in my
 (forgotten) private branch for 3 years. pull.c has 389 lines (with 24
 shell lines left in #if 0). git-pull.sh has 340 lines. Let's add 100
 C lines  to pull.c when it's complete, that's 50% more lines. But in
 the git-pull case the student could get a good head start by reusing
 my code, maybe.

Thanks for the pointer, I will keep that in mind!

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: [RFH] GSoC 2015 application

2015-02-25 Thread Johannes Schindelin
Hi Matthieu,

On 2015-02-25 11:25, Matthieu Moy wrote:
 - Original Message -

 On 2015-02-24 13:28, Jeff King wrote:
  On Tue, Feb 24, 2015 at 01:25:32PM +0100, Johannes Schindelin wrote:
 
   Thanks! No rush, as we are not even accepted yet, but you can create a
   profile at:
  
 http://google-melange.com
  
   and ask to join the git project as a mentor.
 
  I guess I can only ask that after the org is accepted, I will do so
  when (and if) that is the case.
 
  I think you can do it now; I had to create the project profile in order
  to do the application. But again, no rush.

 I tried, but there are no orgs listed as of yet when I click Make
 connection.
 
 Not sure what it's supposed to look like, but I think if you give us
 your username we can invite you as mentor.

Thanks. My username is – surprise! – 'dscho' ;-)

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: [RFH] GSoC 2015 application

2015-02-25 Thread Matthieu Moy
- Original Message -
 Hi Peff,
 
 On 2015-02-24 13:28, Jeff King wrote:
  On Tue, Feb 24, 2015 at 01:25:32PM +0100, Johannes Schindelin wrote:
  
   Thanks! No rush, as we are not even accepted yet, but you can create a
   profile at:
  
 http://google-melange.com
  
   and ask to join the git project as a mentor.
 
  I guess I can only ask that after the org is accepted, I will do so
  when (and if) that is the case.
  
  I think you can do it now; I had to create the project profile in order
  to do the application. But again, no rush.
 
 I tried, but there are no orgs listed as of yet when I click Make
 connection.

Not sure what it's supposed to look like, but I think if you give us your 
username we can invite you as mentor.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: [RFH] GSoC 2015 application

2015-02-25 Thread Matthieu Moy
Johannes Schindelin johannes.schinde...@gmx.de writes:

 Done: https://github.com/git/git.github.io/pull/12
 
 Thanks, merged.

 I opened another PR, based on Mathieu's advice.

Thanks, merged.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: [RFH] GSoC 2015 application

2015-02-25 Thread Christian Couder
On Wed, Feb 25, 2015 at 9:44 AM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:
 Hi Matthieu,

 On 2015-02-25 00:56, Matthieu Moy wrote:
 Johannes Schindelin johannes.schinde...@gmx.de writes:

 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression 
 that the Git project is giving out freebies. But I have no objection to 
 change it if you open that PR.

 To get an idea, I counted the lines of code written by the student I
 mentored last year:

 $ git log --author tanay...@gmail.com -p | diffstat -s
  43 files changed, 1225 insertions(+), 367 deletions(-)

 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.

 In comparison:

 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh

There is also:

$ wc -l git-bisect.sh
528 git-bisect.sh

And there is already builtin/bisect--helper.c that can be used to
convert step by step shell code to C. I can mentor or co-mentor this
convertion by the way, but that would conflict with the other bisect
related GSoC project if a student takes it.

 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

 Sure. You're right, I was thinking too big.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.

 That's excellent advice.

Yeah!

 This all depends on what you intend to do if the student does not finish
 the job. If you're going to do the rewrite yourself anyway, then having
 the student do even half of it is good already. If you're not going to
 finish the job by yourself, then a 95%-done-rewrite means a piece of
 code posted on the mailing list and never merged (and a lot of time
 wasted).

 Well, all of this is academic at this point.

Yeah, but it's still worth keeping in many parts of our collective mind :-)

 Let's see whether we get accepted, and then, if a student finds this project 
 compelling enough.

 If both things happen, I will definitely heed your advice and encourage the 
 student to start with some script that is easily converted, to get her feet 
 wet.

Great!

Thanks,
Christian.
--
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: [RFH] GSoC 2015 application

2015-02-25 Thread Duy Nguyen
On Wed, Feb 25, 2015 at 6:56 AM, Matthieu Moy
matthieu@grenoble-inp.fr wrote:
 To get an idea, I counted the lines of code written by the student I
 mentored last year:

 $ git log --author tanay...@gmail.com -p | diffstat -s
  43 files changed, 1225 insertions(+), 367 deletions(-)

 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.

 In comparison:

 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh

 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.

Some data point as I have a half-baked builtin/pull.c in my
(forgotten) private branch for 3 years. pull.c has 389 lines (with 24
shell lines left in #if 0). git-pull.sh has 340 lines. Let's add 100
C lines  to pull.c when it's complete, that's 50% more lines. But in
the git-pull case the student could get a good head start by reusing
my code, maybe.
-- 
Duy
--
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: [RFH] GSoC 2015 application

2015-02-25 Thread Michael J Gruber
Stefan Beller venit, vidit, dixit 25.02.2015 01:34:
 On Tue, Feb 24, 2015 at 3:56 PM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 Johannes Schindelin johannes.schinde...@gmx.de writes:

 Hi Junio,

 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression 
 that the Git project is giving out freebies. But I have no objection to 
 change it if you open that PR.

 To get an idea, I counted the lines of code written by the student I
 mentored last year:

 $ git log --author tanay...@gmail.com -p | diffstat -s
  43 files changed, 1225 insertions(+), 367 deletions(-)

 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.

 In comparison:

 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh

 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.

 This all depends on what you intend to do if the student does not finish
 the job. If you're going to do the rewrite yourself anyway, then having
 the student do even half of it is good already. If you're not going to
 finish the job by yourself, then a 95%-done-rewrite means a piece of
 code posted on the mailing list and never merged (and a lot of time
 wasted).

 In any case, these are just advices, certainly not objections or hard
 requests to change.

 
 
 Once upon a time (Sep 2013) I rewrote builtin/repack.c which was a
 shell script before. I did not have much real-coding expertise with the
 git community before and by today there are 403 lines of code in
 builtin/repack.c. so going for roughly 3 times (1200 lines of code) change
 would make a summer, specially if you need to learn how the workflow
 is in the open source world.  There the lines in c doubled nearly exactly.
 (before 197 shell lines, afterwards 387 c lines).
 
 Just last weekend I met people, who were afraid of contributing to open source
 because sometimes the internet can be very mean. Git being quite a high
 profile project, as it is widely used, might not help, but rather fear
 people away.

I guess they've read about the lkml too much :)

I consider the gitml to be a relatively civilized place for constructive
criticism, without rants, flame wars and ad hominem swear word attacks.
I don't know how it's perceived from the outside (but that drew me in
back then).

Maybe we can attach a photo of our maintainer to the GSOC page? That
would prove we're nice and polite :)

 That said I would not underestimate the initial time a student needs to learn
 the workflow. Though most of that learning is done in the micro project phase.

Yes, the technical workflow as well as the social habits. They should
follow the gitml even before, and then the micro projects are a great
learning ground.

Michael
--
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: [RFH] GSoC 2015 application

2015-02-25 Thread Johannes Schindelin
Hi Peff,

On 2015-02-24 13:28, Jeff King wrote:
 On Tue, Feb 24, 2015 at 01:25:32PM +0100, Johannes Schindelin wrote:
 
  Thanks! No rush, as we are not even accepted yet, but you can create a
  profile at:
 
http://google-melange.com
 
  and ask to join the git project as a mentor.

 I guess I can only ask that after the org is accepted, I will do so
 when (and if) that is the case.
 
 I think you can do it now; I had to create the project profile in order
 to do the application. But again, no rush.

I tried, but there are no orgs listed as of yet when I click Make connection.

 Done: https://github.com/git/git.github.io/pull/12
 
 Thanks, merged.

I opened another PR, based on Mathieu's advice.

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: [RFH] GSoC 2015 application

2015-02-25 Thread Johannes Schindelin
Hi Matthieu,

On 2015-02-25 00:56, Matthieu Moy wrote:
 Johannes Schindelin johannes.schinde...@gmx.de writes:
 
 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression 
 that the Git project is giving out freebies. But I have no objection to 
 change it if you open that PR.
 
 To get an idea, I counted the lines of code written by the student I
 mentored last year:
 
 $ git log --author tanay...@gmail.com -p | diffstat -s   
  43 files changed, 1225 insertions(+), 367 deletions(-)
 
 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.
 
 In comparison:
 
 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh
 
 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

Sure. You're right, I was thinking too big.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.

That's excellent advice.

 This all depends on what you intend to do if the student does not finish
 the job. If you're going to do the rewrite yourself anyway, then having
 the student do even half of it is good already. If you're not going to
 finish the job by yourself, then a 95%-done-rewrite means a piece of
 code posted on the mailing list and never merged (and a lot of time
 wasted).

Well, all of this is academic at this point. Let's see whether we get accepted, 
and then, if a student finds this project compelling enough.

If both things happen, I will definitely heed your advice and encourage the 
student to start with some script that is easily converted, to get her feet 
wet.

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: [RFH] GSoC 2015 application

2015-02-24 Thread Johannes Schindelin
Hi Junio,

On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.
 
 Yeah, I think that is a very good suggestion.

Well, git-pull.sh is really small. I did not want to give the impression that 
the Git project is giving out freebies. But I have no objection to change it if 
you open that PR.

 Also drop proper as if scripted Porcelains are second class citizens ;-)

If you had to deal with the portability/performance issues of the shell scripts 
I am frequently faced with, you would not call them first class citizens, 
either.

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: [RFH] GSoC 2015 application

2015-02-24 Thread Johannes Schindelin
Hi Peff,

On 2015-02-18 20:32, Jeff King wrote:

 On Wed, Feb 18, 2015 at 02:14:17PM -0500, Jeff King wrote:
 
 The response to my previous email was not overwhelming, but people did
 express some interest in Git doing GSoC this year. So I've started on
 the application, using last year's version as a template.

I feel unqualified to fill in the information, having kept out of the loop of 
the past years' GSoC efforts.

After considerable consideration, I am offering to mentor Windows-related 
projects (into which I count conversion of scripts into builtins).

Thanks,
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: [RFH] GSoC 2015 application

2015-02-24 Thread Jeff King
On Tue, Feb 24, 2015 at 01:25:32PM +0100, Johannes Schindelin wrote:

  Thanks! No rush, as we are not even accepted yet, but you can create a
  profile at:
  
http://google-melange.com
  
  and ask to join the git project as a mentor.
 
 I guess I can only ask that after the org is accepted, I will do so
 when (and if) that is the case.

I think you can do it now; I had to create the project profile in order
to do the application. But again, no rush.

 Done: https://github.com/git/git.github.io/pull/12

Thanks, merged.

-Peff
--
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: [RFH] GSoC 2015 application

2015-02-24 Thread Johannes Schindelin
Hi Peff,

On 2015-02-24 13:06, Jeff King wrote:
 On Tue, Feb 24, 2015 at 01:01:17PM +0100, Johannes Schindelin wrote:
 
 After considerable consideration, I am offering to mentor
 Windows-related projects (into which I count conversion of scripts
 into builtins).
 
 Thanks! No rush, as we are not even accepted yet, but you can create a
 profile at:
 
   http://google-melange.com
 
 and ask to join the git project as a mentor.

I guess I can only ask that after the org is accepted, I will do so when (and 
if) that is the case.

 You may also want to add Windows-specific ideas to the page at:
 
   https://github.com/git/git.github.io/blob/master/SoC-2015-Ideas.md
 
 Even something high-level like helping move programs to builtins to
 help Windows will let students know that it's a potential direction.

Done: https://github.com/git/git.github.io/pull/12

Thank you,
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: [RFH] GSoC 2015 application

2015-02-24 Thread Matthieu Moy
Johannes Schindelin johannes.schinde...@gmx.de writes:

 After considerable consideration, I am offering to mentor
 Windows-related projects (into which I count conversion of scripts
 into builtins).

Good news!

About the proposal:

  The idea of this project is to dive into the Git source code and
  convert, say, git-add--interactive.perl and/or git stash into proper C
  code, making it a so-called built-in.

My advice would be to try converting several small scripts, and avoid
targetting a big one. This way, you can have a first patch series
reviewed on-list, and merged in pu rather soon. From my experience, an
early review is very important to get the student on track, and
splitting the GSoC into multiple related projects avoids the situation
where you have the feature 95% completed at the end of the GSoC, but
nothing merged.

add--interactive and stash are relatively complex beasts, perhaps
git-pull.sh would be easier to start with.

OTOH, you know which script would be most useful to be converted into a
builtin much better than me!

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: [RFH] GSoC 2015 application

2015-02-24 Thread Junio C Hamano
On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

Yeah, I think that is a very good suggestion.

Also drop proper as if scripted Porcelains are second class citizens ;-)
--
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: [RFH] GSoC 2015 application

2015-02-24 Thread Matthieu Moy
Johannes Schindelin johannes.schinde...@gmx.de writes:

 Hi Junio,

 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.
 
 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression that 
 the Git project is giving out freebies. But I have no objection to change it 
 if you open that PR.

To get an idea, I counted the lines of code written by the student I
mentored last year:

$ git log --author tanay...@gmail.com -p | diffstat -s   
 43 files changed, 1225 insertions(+), 367 deletions(-)

I would consider this GSoC as average (i.e. not exceptionnally good,
but certainly not a bad one either), so you may hope for more, but you
should not _expect_ much more IMHO.

In comparison:

$ wc -l git-add--interactive.perl
1654 git-add--interactive.perl
$ wc -l git-stash.sh
617 git-stash.sh

I'd expect a rewrite in C to at least double the number of lines of
code, so rewriting git-stash would mean writting at least as many lines
of code as the GSoC above. git-add--interactive.perl would be rather far
above.

But my point was not to convert _only_ git-pull.sh, but to have a GSoC
starting with this one and plan more. Then, depending on how it goes,
you can adjust the target.

This all depends on what you intend to do if the student does not finish
the job. If you're going to do the rewrite yourself anyway, then having
the student do even half of it is good already. If you're not going to
finish the job by yourself, then a 95%-done-rewrite means a piece of
code posted on the mailing list and never merged (and a lot of time
wasted).

In any case, these are just advices, certainly not objections or hard
requests to change.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
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: [RFH] GSoC 2015 application

2015-02-24 Thread Stefan Beller
On Tue, Feb 24, 2015 at 3:56 PM, Matthieu Moy
matthieu@grenoble-inp.fr wrote:
 Johannes Schindelin johannes.schinde...@gmx.de writes:

 Hi Junio,

 On 2015-02-24 19:25, Junio C Hamano wrote:
 On Tue, Feb 24, 2015 at 9:32 AM, Matthieu Moy
 matthieu@grenoble-inp.fr wrote:
 About the proposal:

   The idea of this project is to dive into the Git source code and
   convert, say, git-add--interactive.perl and/or git stash into proper C
   code, making it a so-called built-in.

 My advice would be to try converting several small scripts, and avoid
 targetting a big one
 add--interactive and stash are relatively complex beasts, perhaps
 git-pull.sh would be easier to start with.

 Yeah, I think that is a very good suggestion.

 Well, git-pull.sh is really small. I did not want to give the impression 
 that the Git project is giving out freebies. But I have no objection to 
 change it if you open that PR.

 To get an idea, I counted the lines of code written by the student I
 mentored last year:

 $ git log --author tanay...@gmail.com -p | diffstat -s
  43 files changed, 1225 insertions(+), 367 deletions(-)

 I would consider this GSoC as average (i.e. not exceptionnally good,
 but certainly not a bad one either), so you may hope for more, but you
 should not _expect_ much more IMHO.

 In comparison:

 $ wc -l git-add--interactive.perl
 1654 git-add--interactive.perl
 $ wc -l git-stash.sh
 617 git-stash.sh

 I'd expect a rewrite in C to at least double the number of lines of
 code, so rewriting git-stash would mean writting at least as many lines
 of code as the GSoC above. git-add--interactive.perl would be rather far
 above.

 But my point was not to convert _only_ git-pull.sh, but to have a GSoC
 starting with this one and plan more. Then, depending on how it goes,
 you can adjust the target.

 This all depends on what you intend to do if the student does not finish
 the job. If you're going to do the rewrite yourself anyway, then having
 the student do even half of it is good already. If you're not going to
 finish the job by yourself, then a 95%-done-rewrite means a piece of
 code posted on the mailing list and never merged (and a lot of time
 wasted).

 In any case, these are just advices, certainly not objections or hard
 requests to change.



Once upon a time (Sep 2013) I rewrote builtin/repack.c which was a
shell script before. I did not have much real-coding expertise with the
git community before and by today there are 403 lines of code in
builtin/repack.c. so going for roughly 3 times (1200 lines of code) change
would make a summer, specially if you need to learn how the workflow
is in the open source world.  There the lines in c doubled nearly exactly.
(before 197 shell lines, afterwards 387 c lines).

Just last weekend I met people, who were afraid of contributing to open source
because sometimes the internet can be very mean. Git being quite a high
profile project, as it is widely used, might not help, but rather fear
people away.
That said I would not underestimate the initial time a student needs to learn
the workflow. Though most of that learning is done in the micro project phase.
--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-02-15 Thread Junio C Hamano
Torsten Bögershausen tbo...@web.de writes:

 The work to be done, what I can see: please amend the commit message: 
  s/more exotic//

Thanks for reminding; I thought this was excised already but
apparently hasn't (yet).

--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-02-14 Thread Torsten Bögershausen
On 2015-02-12 23.36, Junio C Hamano wrote:
 So after discussing this one and queuing the resulting three-patch
 series jk/sanity that consists of the three patches:
 
 * jk/sanity (2015-01-27) 3 commits
  - test-lib.sh: set prerequisite SANITY by testing what we really need
  - tests: correct misuses of POSIXPERM
  - t/lib-httpd: switch SANITY check for NOT_ROOT
 
  Waiting for ack or counter-proposal from Torsten.
  Otherwise looking good.
 
 Do we want to proceed with these, or do we want any more work done
 on them?
 
I managed to run the tests with POSIXPERM and/or SANITY under
Cygwin, Msysgit, Linux, root@linux,  Mac and root@Mac.
All passed.

The work to be done, what I can see: please amend the commit message: 
 s/more exotic//


--
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: Windows Bluescreen

2015-02-13 Thread Thomas Braun
Am 12.02.2015 um 14:21 schrieb Erik Friesen:
 Sorry, I don't know what this TOP posting problem is, and hitting
 reply only replies to the last sender.   If you prefer, and you have
 some regular bugtracker, I could use that instead of email posting.
 
 To repro-
 Set up git user on local linux repo, in my case 192.168.0.100
 
 On a windows 7 64bit machine-
 $ cd myproject
 $ git init
 $ git add .
 $ git commit -m 'initial commit'
 $ git remote add origin git@192.168.0.100:/opt/git/project.git
 $ git push origin master
 (Shamelessly copied from git page)
 
 Problem happens after entering password, it may or may not get started.
 
 The nature of a bluescreen doesn't make debugging and reproduction
 real easy.  If it helps, I can get the dumps from those crashes.  To
 move on, I moved back to local http pushes.

I'm doing pushes over ssh on a daily basis against my linux server.
And I'm using a Win7 64bit machine as well.

Can you try if it makes any difference if you use ssh login with public
keys instead of passwords?

You can also try to add LogLevel Debug to ~/.ssh/config in order to
get more verbose ssh output.


--
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 0/3] Win32: nanosecond-precision file times

2015-02-12 Thread Johannes Schindelin
Hi,

On 2015-02-12 20:48, Junio C Hamano wrote:
 Karsten Blees karsten.bl...@gmail.com writes:
 
 This patch series was inspired by the problem that Git does not
 detect changed file content if st_size, st_mtime and st_ctime
 are unchanged. This was apparently caused by VSS2Git resetting
 mtime to a value in the past. [1]

 I believe (or rather hope) that all involved in the discussion
 agree that Git cannot reasonably be expected to detect changed
 file content if file time(s) are reset on purpose.

 However, some users have expressed concerns that 'same size and
 mtime' [2] may theoretically happen by chance in daily operation.
 
 Hmph.
 
 Haven't we already accepted that it is not just may theoretically
 happen and had counter-measures in racy-git detection machinery
 for quite some time?

I agree that the racy-git reference is more of a red herring; it appears that 
the report Karsten referred to is based on a different understanding of the 
mtime than mine (it is purported that the mtime of a file should reflect the 
time when it entered the repository, rather than the time when the file was 
written to disk).

Please let that not distract you.

This patch series has merits on the basis of populating st_mtim.tv_nsec 
already. We can provide this information in the common case (i.e. NTFS, *not* 
FAT), so we should.

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: Windows Bluescreen

2015-02-12 Thread Erik Friesen
Sorry, I don't know what this TOP posting problem is, and hitting
reply only replies to the last sender.   If you prefer, and you have
some regular bugtracker, I could use that instead of email posting.

To repro-
Set up git user on local linux repo, in my case 192.168.0.100

On a windows 7 64bit machine-
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@192.168.0.100:/opt/git/project.git
$ git push origin master
(Shamelessly copied from git page)

Problem happens after entering password, it may or may not get started.

The nature of a bluescreen doesn't make debugging and reproduction
real easy.  If it helps, I can get the dumps from those crashes.  To
move on, I moved back to local http pushes.

On Thu, Feb 12, 2015 at 7:42 AM, Thomas Braun
thomas.br...@virtuell-zuhause.de wrote:
 Am Donnerstag, den 12.02.2015, 07:21 -0500 schrieb Erik Friesen:
 I'd say this is related.  http://sourceforge.net/p/mingw/bugs/2240/

 There isn't much hope, that was filed months ago with no action.  I
 suggest moving to another ssh library perhaps?  Anyways, this is a
 windows git bug report, so it really needs to stay with mysgit in my
 opinion.

 I'd say it should reproduce without much effort.  Do a git push using
 win7 64 pro or similar, I'd say it will have issues.

 At minimum, this should be on the list for others to view.  I have run
 across problems from others, but I don't think they realized it could
 be an ssh problem.

 (Please don't TOP post)

 The cited bug report does not correlate to msysgit as we compile and
 ship our own openssh.

 Git for Windows Version 1.8.x might still have the old and slow openssh.
 With the newest version I get speeds of up to 30MB/s over Gigabit LAN.

 Can you create a minimal test case to reprocude the problem?

--
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: Windows Bluescreen

2015-02-12 Thread Thomas Braun
Am Donnerstag, den 12.02.2015, 07:21 -0500 schrieb Erik Friesen:
 I'd say this is related.  http://sourceforge.net/p/mingw/bugs/2240/
 
 There isn't much hope, that was filed months ago with no action.  I
 suggest moving to another ssh library perhaps?  Anyways, this is a
 windows git bug report, so it really needs to stay with mysgit in my
 opinion.
 
 I'd say it should reproduce without much effort.  Do a git push using
 win7 64 pro or similar, I'd say it will have issues.
 
 At minimum, this should be on the list for others to view.  I have run
 across problems from others, but I don't think they realized it could
 be an ssh problem.

(Please don't TOP post)

The cited bug report does not correlate to msysgit as we compile and
ship our own openssh.

Git for Windows Version 1.8.x might still have the old and slow openssh.
With the newest version I get speeds of up to 30MB/s over Gigabit LAN.

Can you create a minimal test case to reprocude the problem?

--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-01-24 Thread Johannes Schindelin
On 2015-01-23 22:24, Torsten Bögershausen wrote:
 [...] either to always switch off SANITY for CYGWIN (or Windows in general).

Nice one! You gave me the chuckle for the day ;-)

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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-01-23 Thread Torsten Bögershausen
On 2015-01-22 23.07, Junio C Hamano wrote:
 Torsten Bögershausen tbo...@web.de writes:
 
 If I run that sequence manually:
 chmod 755 .
 touch x
 chmod a-w .
 rm x
 touch y

 x is gone, (but shoudn't according to POSIX)
 y is not created, access denied
 
 Good (or is that Sad?).
 
 diff --git a/t/test-lib.sh b/t/test-lib.sh
 --- a/t/test-lib.sh
 +++ b/t/test-lib.sh
 @@ -1039,7 +1039,17 @@ test_lazy_prereq NOT_ROOT '
  # When the tests are run as root, permission tests will report that
  # things are writable when they shouldn't be.
  test_lazy_prereq SANITY '
 -   test_have_prereq POSIXPERM,NOT_ROOT
 +   mkdir ds 
 +   touch ds/x 
 +   chmod -w ds 
 +   if rm ds/x
 +   then
 +   chmod +w ds
 +   false
 +   else
 +   chmod +w ds
 +   true
 +   fi
  '
 
 It looks like a better approach overall.
 
 Because we cannot know where $(pwd) is when lazy prereq is evaluated
 (it typically is at the root of the trash hierarchy, but not always)
 and we would not want to add, leave or remove random files in the
 working tree that are not expected by the tests proper (e.g. a test
 that counts untracked paths are not expecting ds/ to be there), your
 actual fix may need to be a bit more careful, though.
 
 Thanks.
 

Hm,
I think there are 2 different possiblities to go further,
either to always switch off SANITY for CYGWIN (or Windows in general).
I haven't tested anything, the idea came up while writing this email.

The other way is to go away from the hard coded we know we are root,
so SANITY must be false, or we know that Windows is not 100% POSIX,
and probe the OS/FS dynamically.

The following probably deserves the price for the most clumsy prerequisite
ever written.
(CopyPaste of a real patch into the mailer, not sure if it applies)

It has been tested under Mac OS, root@Mac OS, Cygwin / Msysgit
What do you think ?



-- 8 --
Subject: [PATCH 1/2] test-lib.sh: Improve SANITY

SANITY was not set when running as root,
but this is not 100% reliable for CYGWIN:

A file is allowed to be deleted when the containing
directory does not have write permissions.

Signed-off-by: Torsten Bögershausen tbo...@web.de
---
 t/test-lib.sh | 20 +++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/t/test-lib.sh b/t/test-lib.sh
index 93f7cad..b8f736f 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1038,8 +1038,26 @@ test_lazy_prereq NOT_ROOT '
 
 # When the tests are run as root, permission tests will report that
 # things are writable when they shouldn't be.
+# Special check for CYGWIN (or Windows in general):
+# A file can be deleted, even if the containing directory does'nt
+# have write permissions
 test_lazy_prereq SANITY '
-   test_have_prereq POSIXPERM,NOT_ROOT
+   dsdir=$$ds
+   mkdir $dsdir 
+   touch $dsdir/x 
+   chmod -w $dsdir 
+   if rm $dsdir/x
+   then
+   chmod +w $dsdir
+   rm -rf $dsdir
+   echo 2 SANITY=false
+   false
+   else
+   chmod +w $dsdir
+   rm -rf $dsdir
+   echo 2 SANITY=true
+   true
+   fi
 '
 
 GIT_UNZIP=${GIT_UNZIP:-unzip}
-- 


Subject: [PATCH 2/2] t2026 needs SANITY

When running as root 'prune directories with unreadable gitdir' in t2026 fails.
Protect this TC with SANITY

Signed-off-by: Torsten Bögershausen tbo...@web.de
---
 t/t2026-prune-linked-checkouts.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t2026-prune-linked-checkouts.sh 
b/t/t2026-prune-linked-checkouts.sh
index 170aefe..2936d52 100755
--- a/t/t2026-prune-linked-checkouts.sh
+++ b/t/t2026-prune-linked-checkouts.sh
@@ -33,7 +33,7 @@ EOF
! test -d .git/worktrees
 '
 
-test_expect_success POSIXPERM 'prune directories with unreadable gitdir' '
+test_expect_success SANITY 'prune directories with unreadable gitdir' '
mkdir -p .git/worktrees/def/abc 
: .git/worktrees/def/def 
: .git/worktrees/def/gitdir 


--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-01-23 Thread Junio C Hamano
Torsten Bögershausen tbo...@web.de writes:

 It has been tested under Mac OS, root@Mac OS, Cygwin / Msysgit
 What do you think ?

Except that we may want to be more careful to detect errors from the
initial mkdir and clean-up part (which should abort the test, not
just declare !SANITY), I think the basic idea is sound.

test_dir=$TRASH_DIRECTORY/.sanity-test-dir
! mkdir $test_dir 
$test_dir/x 
chmod -w $test_dir ||
error bug in test sript: cannot prepare .sanity-test-dir

rm $test_dir/x
status=$?

chmod +w $test_dir 
rm -r $test_dir ||
error bug in test sript: cannot clean .sanity-test-dir

return $status

or something along that line?


 -- 8 --
 Subject: [PATCH 1/2] test-lib.sh: Improve SANITY

 SANITY was not set when running as root,
 but this is not 100% reliable for CYGWIN:

 A file is allowed to be deleted when the containing
 directory does not have write permissions.

 Signed-off-by: Torsten Bögershausen tbo...@web.de
 ---
  t/test-lib.sh | 20 +++-
  1 file changed, 19 insertions(+), 1 deletion(-)

 diff --git a/t/test-lib.sh b/t/test-lib.sh
 index 93f7cad..b8f736f 100644
 --- a/t/test-lib.sh
 +++ b/t/test-lib.sh
 @@ -1038,8 +1038,26 @@ test_lazy_prereq NOT_ROOT '
  
  # When the tests are run as root, permission tests will report that
  # things are writable when they shouldn't be.
 +# Special check for CYGWIN (or Windows in general):
 +# A file can be deleted, even if the containing directory does'nt
 +# have write permissions
  test_lazy_prereq SANITY '
 - test_have_prereq POSIXPERM,NOT_ROOT
 + dsdir=$$ds
 + mkdir $dsdir 
 + touch $dsdir/x 
 + chmod -w $dsdir 
 + if rm $dsdir/x
 + then
 + chmod +w $dsdir
 + rm -rf $dsdir
 + echo 2 SANITY=false
 + false
 + else
 + chmod +w $dsdir
 + rm -rf $dsdir
 + echo 2 SANITY=true
 + true
 + fi
  '
  
  GIT_UNZIP=${GIT_UNZIP:-unzip}
--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-01-22 Thread Torsten Bögershausen
On 2015-01-21 23.33, Junio C Hamano wrote:
  Are you reporting differences between the state before these patches
 and after, or just the fact that with these patches the named tests
 break (which may or may not be broken before the patches)?
 
The intention was to report what is now breaking.
One example is this one:
-
git.git/master:
ok 15 # skip Test that git rm -f fails if its rm fails (missing SANITY)

git.git/pu:
not ok 15 - Test that git rm -f fails if its rm fails
#
#chmod a-w . 
#test_must_fail git rm -f baz 
#chmod 775 .
# 

The next step could be to dig further:

If I run that sequence manually:
chmod 755 .
touch x
chmod a-w .
rm x
touch y

x is gone, (but shoudn't according to POSIX)
y is not created, access denied

--
I can see that there are 3 groups of OS/FS combinations:
Group 1:
  File access bits are not maintained, and not obeyed.
  Typical: VFAT, Git for Windows, (and some network protocols like SAMBA,
   depending on the OS/FS involved and/or the mount options)
  Typically core.filemode is false after git init

Group 2:
  File access bits are maintained and obeyed:
  POSIX/Unix/Linux/Mac OS and CYGWIN
  Typically core.filemode is true after git init

Group 3 :
  File access bits are maintained, but not (fully) obeyed
  running as root under Linux/Unix...
  Or Windows, when a file is allowed to be deleted from a directory without 
write permissions.

-
In short, the following seems to be an improvement:
diff --git a/t/test-lib.sh b/t/test-lib.sh
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1039,7 +1039,17 @@ test_lazy_prereq NOT_ROOT '
 # When the tests are run as root, permission tests will report that
 # things are writable when they shouldn't be.
 test_lazy_prereq SANITY '
-   test_have_prereq POSIXPERM,NOT_ROOT
+   mkdir ds 
+   touch ds/x 
+   chmod -w ds 
+   if rm ds/x
+   then
+   chmod +w ds
+   false
+   else
+   chmod +w ds
+   true
+   fi
 '
--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-01-22 Thread Torsten Bögershausen
On 2015-01-22 23.07, Junio C Hamano wrote:
 Torsten Bögershausen tbo...@web.de writes:
 
 If I run that sequence manually:
 chmod 755 .
 touch x
 chmod a-w .
 rm x
 touch y

 x is gone, (but shoudn't according to POSIX)
 y is not created, access denied
 
 Good (or is that Sad?).
It feels that this is by design:
In old days under MS/DOS the only way to hinder people
from deleting a file was to make it read only with help
of the ATTRIB command.
https://en.wikipedia.org/wiki/ATTRIB

Later NTFS introduced the (ACL like) secutity information,
and (unless I am completely wrong) the delete file is part
of the modify permission, not write.
 
 diff --git a/t/test-lib.sh b/t/test-lib.sh
 --- a/t/test-lib.sh
 +++ b/t/test-lib.sh
 @@ -1039,7 +1039,17 @@ test_lazy_prereq NOT_ROOT '
  # When the tests are run as root, permission tests will report that
  # things are writable when they shouldn't be.
  test_lazy_prereq SANITY '
 -   test_have_prereq POSIXPERM,NOT_ROOT
 +   mkdir ds 
 +   touch ds/x 
 +   chmod -w ds 
 +   if rm ds/x
 +   then
 +   chmod +w ds
 +   false
 +   else
 +   chmod +w ds
 +   true
 +   fi
  '
 
 It looks like a better approach overall.
 
 Because we cannot know where $(pwd) is when lazy prereq is evaluated
 (it typically is at the root of the trash hierarchy, but not always)
 and we would not want to add, leave or remove random files in the
 working tree that are not expected by the tests proper (e.g. a test
 that counts untracked paths are not expecting ds/ to be there), your
 actual fix may need to be a bit more careful, though.
 
 Thanks.
 
So true, what is a better place or way to run the test ?
Can we use /tmp  (Which may be a different file system)?
Or can we use $HOME/$$ds (Which is an artificial HOME)

We already pollute the $PWD here
test_lazy_prereq CASE_INSENSITIVE_FS '
echo good CamelCase 
echo bad camelcase 
test $(cat CamelCase) != good
'
and here:
test_lazy_prereq UTF8_NFD_TO_NFC '


Would 
mkdir $HOME/ds
be a better approach then ?

--
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] t/lib-httpd: switch SANITY check for NOT_ROOT

2015-01-17 Thread Torsten Bögershausen
Hm, being one day offline and there are lots of ideas and
new patches, I like that.
I run these test under msys and cygwin on latest pu (a3dc223ff234481356c):


./t0001-init.sh
./t0004-unwritable.sh
./t0061-run-command.sh
./t0070-fundamental.sh
./t1004-read-tree-m-u-wf.sh
./t1300-repo-config.sh
./t1301-shared-repo.sh
./t1308-config-set.sh
./t2026-prune-linked-checkouts.sh
./t3600-rm.sh
./t3700-add.sh
./t4039-diff-assume-unchanged.sh
./t4056-diff-order.sh
./t5537-fetch-shallow.sh
./t7300-clean.sh
./t7503-pre-commit-hook.sh
./t7504-commit-msg-hook.sh
./t7508-status.sh

(msys passes or skips all)

Without digging further, these fail on my cygwin:

$ grep not ok p.txt
not ok 29 - init notices EPERM
not ok 2 - write-tree should notice unwritable repository
not ok 3 - commit should notice unwritable repository
not ok 4 - update-index should notice unwritable repository
not ok 5 - add should notice unwritable repository
not ok 3 - mktemp to unwritable directory prints filename
not ok 13 - funny symlink in work tree, un-unlink-able
not ok 23 - proper error on non-accessible files
not ok 4 - prune directories with unreadable gitdir
not ok 15 - Test that git rm -f fails if its rm fails
not ok 16 - When the rm in git rm -f fails, it should not remove the file 
from the index
not ok 20 - Re-add foo and baz
not ok 21 - Modify foo -- rm should refuse
not ok 22 - Modified foo -- rm -f should work
not ok 23 - Re-add foo and baz for HEAD tests
not ok 24 - foo is different in index from HEAD -- rm should refuse
not ok 23 - git add should fail atomically upon an unreadable file
not ok 24 - git add --ignore-errors
not ok 25 - git add (add.ignore-errors)
not ok 26 - git add (add.ignore-errors = false)
not ok 27 - --no-ignore-errors overrides config
not ok 4 - unreadable orderfile
not ok 28 - removal failure
not ok 61 - status succeeds in a read-only repository

If we remove POSIXPERM from CYGWIN, all tests pass ;-)
but some are skipped :
 ok 26 - init creates a new deep directory (umask vs. shared)
 ok 3 - run_command reports EACCES
 ok 4 - unreadable directory in PATH
 ok 113 - preserves existing permissions
 ok 2 - shared=1 does not clear bits preset by umask 002
 ok 3 - shared=1 does not clear bits preset by umask 022
 ok 5 - update-server-info honors core.sharedRepository
 ok 6 - shared = 0660 (r--r-) ro
 ok 7 - shared = 0660 (rw-rw) rw
 ok 8 - shared = 0640 (r--r-) ro
 ok 9 - shared = 0640 (rw-r-) rw
 ok 10 - shared = 0600 (r) ro
 ok 11 - shared = 0600 (rw---) rw
 ok 12 - shared = 0666 (r--r--r--) ro
 ok 13 - shared = 0666 (rw-rw-rw-) rw
 ok 14 - shared = 0664 (r--r--r--) ro
 ok 15 - shared = 0664 (rw-rw-r--) rw
 ok 16 - info/refs respects umask in unshared repo
 ok 17 - git reflog expire honors core.sharedRepository
 ok 18 - forced modes
 ok 4 - find-copies-harder is not confused by mode bits
 ok 10 - shallow fetch from a read-only repo
 ok 32 - git clean -d with an unreadable empty directory
 ok 7 - with non-executable hook
 ok 8 - --no-verify with non-executable hook
 ok 13 - with non-executable hook
 ok 14 - with non-executable hook (editor)
 ok 15 - --no-verify with non-executable hook
 ok 16 - --no-verify with non-executable hook (editor)

I'm not sure what is the best way forward, it seems as if CYGIN is half POSIX 
now.


--
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: Probably a bug with ~ symbol in filenames on Windows 7 x64 in git 1.9.5

2015-01-08 Thread Torsten Bögershausen

On 01/08/2015 11:28 AM, Jeff King wrote:

On Thu, Jan 08, 2015 at 11:06:18AM +0100, Johannes Schindelin wrote:


ICON~714.PNG is a valid short name for a long name (such as
'icon.background.png') because it fits the shortening scheme (8.3 format,
the base name ends in ~n). As this can clash with a validly shortened
long name, Git for Windows refuses to check out such paths by default.

If you want the old -- unsafe -- behavior back, just set your
core.protectNTFS to false (this means that you agree that the incurred
problems are your own responsibility and cannot be blamed on anybody else
;-))

I wonder if it is worth having a git-only mode for core.protectNTFS.
Turning it off entirely would make him susceptible to GIT~1 attacks.

-Peff


There is something more then just the tilde protection going on, it seems:


torstenbogershausen@TORBOGWM ~/projects/test_tilde (master)
$  ~/projects/git/msysgit/git ls-files
ICON~714.PNG

torstenbogershausen@TORBOGWM ~/projects/test_tilde (master)
$  ~/projects/git/msysgit/git status
On branch master
nothing to commit, working directory clean

torstenbogershausen@TORBOGWM ~/projects/test_tilde (master)
$  ~/projects/git/tb/git status
On branch master
nothing to commit, working directory clean

torstenbogershausen@TORBOGWM ~/projects/test_tilde (master)
$  ~/projects/git/msysgit/git --version
git version 1.9.2.msysgit.0.2273.gc47d6ec

torstenbogershausen@TORBOGWM ~/projects/test_tilde (master)
$  ~/projects/git/tb/git --version
git version 2.2.1.268.g1e6f5b2

Neither latest msygit nor latest git.git reports a problem with a single 
file

within a short path.
It may be, that the '~' is not accepted in a long path or there are 
problems

when a directory is filled with many files, but that is speculation.

Dimitry,
is there a way to make the problem reproducible for other people ?
Either a public demo-repo, or a step-by-step receipe  ?

--
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: Probably a bug with ~ symbol in filenames on Windows 7 x64 in git 1.9.5

2015-01-08 Thread Torsten Bögershausen
On 01/08/2015 04:58 PM, Johannes Schindelin wrote:
 Hi Torsten,
 
 On Thu, 8 Jan 2015, Torsten Bögershausen wrote:
 
 There is something more then just the tilde protection going on, [...]
 
 Indeed. What is going on is that you build Git yourself, from git.git,
 while Dmitry obviously used Git for Windows -- which carries a couple of
 patches on top of upstream git.git.
 
 In this particular case, the tilde protection was introduced in
 https://github.com/msysgit/git/commit/2e2a2d12.
 
 Ciao,
 Johannes
 
My bad, I was building the msysgit master branch, which didn't have the 
2e2a2d12.

However, I am wondering if 2e2a2d12 is really needed that much ?
In the same spirit that we do not prevent the checkout of FILE when file is 
present,
why do we prevent people from using ~ in file names ?
When a file is visible under different file names, I assume that the user 
chooses only
one representation to run git add on.
But that is another discussion.
--
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: Probably a bug with ~ symbol in filenames on Windows 7 x64 in git 1.9.5

2015-01-08 Thread Johannes Schindelin
Hi Torsten,

On Thu, 8 Jan 2015, Torsten Bögershausen wrote:

 There is something more then just the tilde protection going on, [...]

Indeed. What is going on is that you build Git yourself, from git.git,
while Dmitry obviously used Git for Windows -- which carries a couple of
patches on top of upstream git.git.

In this particular case, the tilde protection was introduced in
https://github.com/msysgit/git/commit/2e2a2d12.

Ciao,
Johannes

Re: [msysGit] Re: Announcing Git for Windows 1.9.5

2014-12-23 Thread Torsten Bögershausen
On 2014-12-23 10.48, Pat Tressel wrote:
 
 Bugfixes
 - Safeguards against bogus file names on NTFS (CVE-2014-9390).
 
 
 Apologies, but...is it possible to get back an old version?  I installed this 
 version, and it no longer recognizes non-English characters that appear in 
 some file names we have in our repo.  I'm only guessing that this has to do 
 with the vuln fix.
 
 (If you want, I can file a bug report -- this should be easy to reproduce, as 
 all that's needed should be to clone our repo 
 (https://github.com/flavour/eden) and do git status -- two files will 
 appear as deleted, but they're not.  Hmm, it may be necessary to do the git 
 clone with an old version, if the new version is unable to handle those file 
 names.)
 
 Thanks!
 
 -- Pat

You may consider to convert the repo into unicode,
and update all clients accessing this repo.


https://github.com/kblees/git/wiki

--
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: Announcing Git for Windows 1.9.5

2014-12-18 Thread Johannes Schindelin
Hi Stanzilla,

On Thu, 18 Dec 2014, Stanzilla wrote:

 Release notes at
 https://github.com/msysgit/msysgit/raw/master/share/WinGit/ReleaseNotes.rtf
 are *not* up to date.

Yep, the 'master' branch is intentionally behind. It will be updated
tomorrow, as well as the msysgit/git.git repository. The installer was
updated, which you are welcome to download and install.

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: [RFC 3/4] engine.pl: split the .o and .obj processing

2014-11-23 Thread Philip Oakley

From: Johannes Schindelin johannes.schinde...@gmx.de

 How about the following instead?

 + } elsif ($part eq 'invalidcontinue.obj') {
 + # ignore
  } elsif ($part =~ /\.(o|obj)$/) {

Looks good, I'll use that (after deciding whether .obj files should
be
expected in a 'make' output anyway)


My idea to hardcode invalidcontinue.obj was that I'd rather see a
failure
if an unexpected .obj is seen there. But I realize that my suggested
change does not exactly accomplish that.


I've decided to include the hard code suggested, and after a few tests
decided it was probably worth keeping the .obj processing, even though
we don't expect any.

At least I've now managed to generate a .sln project, though it won't
compile because of a number of other changes, and I haven't got to the
bottom of them all.

Notes:
Revert Windows: correct detection of EISDIR in mingw_open()
git\compat\mingw.c(315) : error C2065: 'O_ACCMODE' : undeclared
identifier (neither VS2008 nor VS2010 declare 'O_ACCMODE'). add an 
#ifdef

_MSC_VER to define this if we are in MSVC.

Revert mingw.h: add dummy functions for sigset_t operations commit
4e6d207c45. the Additional Note: to
http://www.spinics.net/lists/git/msg240248.html indicates that this
breaks MSVC. I think it will also need an #ifdef to see if we are in 
MSVC.


I've also found a problem with my setup (msysgit 1.7.9 for make) barfing
on the commit/ee9be06 perl: detect new files in MakeMaker builds which
'make -n' says 'No rule to make target `PM.stamp', needed by `perl.mak'.

There was also LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts
with use of other libs; use /NODEFAULTLIB:library.

I've also got notes from way back that there was build order problem
with 'vcs-svn_lib.lib' - probably a sort order issue. IIRC at that time,
I had to compile the project twice so that the lib was visible the
second time.

So there's plenty to go at ;-) I'm going to be away this coming week, So
at least I have the whole next cycle to make some progress.

--

Philip

--
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: msysgit works on wine

2014-10-13 Thread Johannes Schindelin
Hi Michael,

On Mon, 13 Oct 2014, Michael Stefaniuc wrote:

 On 10/10/2014 02:04 PM, Duy Nguyen wrote:
  On Fri, Oct 10, 2014 at 7:02 PM, Thomas Braun
 
  Are you compiling git.git or msysgit.git?
  
  git.git
  
  And how about the test suite?
  
  running right now, fingers crossed.. kinda slow, not sure if it's wine
  or it's the msys thing.

 We (Wine) are interested in bug reports for git tests failing on Wine
 that succeed on Windows/Linux. Performance issues compared to Windows
 are highly desired too.

Awesome, thank you for the offer!

I haven't tried this in a long time, mainly because at some stage Wine
required a separate console from my terminal to run command-line programs.
And it seemed to me as if in particular process-spawning and heavy-duty
file system operations were the bottleneck.

Hopefully I will find some time soon to perform those tests again.

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 13/14] git-compat-util.h: fix integer overflow on IL32P64 systems

2014-10-09 Thread Johannes Schindelin
Hi Junio,

On Wed, 8 Oct 2014, Junio C Hamano wrote:

 Marat Radchenko ma...@slonopotamus.org writes:
 
   #define DEFAULT_PACKED_GIT_LIMIT \
  -   ((1024L * 1024L) * (sizeof(void*) = 8 ? 8192 : 256))
  +   ((size_t)(1024L * 1024L) * (sizeof(void*) = 8 ? 8192 : 256))
 
 1024 * 1024 * 8192 overflows 32-bit unsigned, but is size_t always
 large enough?  Just checking.

The diff is a bit misleading as to what it *actually* changes. It *just*
casts the result to size_t. The arithmetic is performed with longs (thanks
to the l in 1024l) and it only overflows 32 bit iff the sizeof() test
verifies that we're at least on 64 bit -- this arithmetic operation is the
same as before the patch. I was fooled by the diff myself (adding another
parenthesis just to add the cast would probably have helped, though).

IMHO this is a good demonstration how a commit message that goes slightly
beyond the necessary can help tons of time by avoiding to let every
reviewer/reader go through the exact same steps of puzzlement.

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 14/14] MINGW: config.mak.uname: auto-detect MinGW build from compiler

2014-10-09 Thread Johannes Schindelin
Hi Junio,

On Thu, 9 Oct 2014, Junio C Hamano wrote:

 Marat Radchenko ma...@slonopotamus.org writes:
 
  On Wed, Oct 08, 2014 at 12:26:52PM -0700, Junio C Hamano wrote:
  ...
  What I am wondering is if it is a better solution to make it easier
  to allow somebody who is cross compiling to express Mr.  Makefile,
  we know better than you and want you to do a MINGW build for us
  without checking with `uname -?` yourself, i.e.
  
 $ make uname_O=MINGW uname_S=MINGW
  
  which would hopefully allow cross-compilation into other
  environments, not just MINGW.
 
  So, do you really want this patch to be changed from 5-liner into
  a full-blow system detection rewrite based on `cc -dumpmachine`
  instead of `uname`?
 
 No, and I do not quite see why you even need to look at -dumbmachine

Nice Freudian ;-)

 output when your goal is to make this command line
 
 $ make uname_O=MINGW uname_S=MINGW
 
 work sensibly.  Wouldn't it be more like a series of
 
   ifndef uname_O
 uname_O := $(shell uname -o)
   endif
 
 or something like that?

Or uname_O ?= $(shell uname -o)

To clarify: it would be enough to look at CROSS_COMPILE to determine
whether we're cross-compiling for MinGW.

The output of -dumpmachine is still needed for the correct CFLAGS/LDFLAGS.

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 14/14] MINGW: config.mak.uname: auto-detect MinGW build from compiler

2014-10-09 Thread Johannes Schindelin
Hi Junio,

On Thu, 9 Oct 2014, Junio C Hamano wrote:

 Isn't the primary reason we use colon-assign to avoid running the same
 $(shell) over and over again every time $(uname_?) gets referenced? How
 would it work with ?= ???

I was under the impression that ?= would only define the variable once,
the next time ?= would be encountered, no assignment (and actually, no
evaluation) would take place because the variable already has a value?

According to

https://www.gnu.org/software/make/manual/make.html#index-_003f_003d

FOO ?= bar

is exactly equivalent to this (see The origin Function):

ifeq ($(origin FOO), undefined)
  FOO = bar
endif

 Pardon misspellings and grammos, typed on a tablet.

No worries. But you really should use your tablet for reading books after
midnight instead of doing work... ;-)

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 14/14] MINGW: config.mak.uname: auto-detect MinGW build from compiler

2014-10-09 Thread Johannes Schindelin
Hi Junio,

On Thu, 9 Oct 2014, Junio C Hamano wrote:

 I didn't mean multiple uses of ?= for the same variable. I meant
 multiple uses of (references to) the variable. I.e. wouldn't FOO and
 BAR behave differently below?
 
 FOO := $(shell random)
 BAR = $(shell random)
 all::
echo $(FOO) and $(BAR)
echo twice $(FOO) and $(BAR)

You're correct, of course, my mistake. I just tested with this:

R ?= $(shell echo $$RANDOM)

all:
echo The values of $(R), $(R) and $(R)

and of course a make yields three different numbers. Sorry for missing
that.

So what we should do is something like

ifeq ($(uname_S),)
uname_S := $(shell uname -s)
endif

even if repeating that pattern is kind of ugly...

Thanks for correcting my mistake,
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 v4] MinGW(-W64) compilation

2014-10-08 Thread Johannes Schindelin
Hi Marat,

On Wed, 8 Oct 2014, Marat Radchenko wrote:

 On Wed, Oct 08, 2014 at 01:09:20AM +0200, Thomas Braun wrote:

  I wanted to verify that on msysgit but some patches fail to apply
  cleanly. Did you also had to tweak the patches?
  If yes, are these tweaked patches still available somewhere?
 
 msysgit != git-for-windows, as msysgit folks say.

That's not what msysgit folks say (they say that msysgit is the
development environment to build Git for Windows [*1*]), and Thomas is
well aware of the situation because he is a busy contributor on the
Windows side.

 I tested my patches by applying them to git.git/master and building
 inside msysgit.

So the idea would be to rebase from git/git/master onto
msysgit/git/master. Did you do that yet?

Ciao,
Johannes

Footnote *1*: msysgit is about to be phased out. As soon as
https://github.com/git-for-windows/sdk is able to produce a Git for
Windows installer (it already able to build Git and pass the test suite),
we will switch to the new development environment and mark msysgit as
obsolete, keeping it around only for reference.
--
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 v4] MinGW(-W64) compilation

2014-10-08 Thread Marat Radchenko
On Wed, Oct 08, 2014 at 10:59:57AM +0200, Johannes Schindelin wrote:
 Hi Marat,
 
 On Wed, 8 Oct 2014, Marat Radchenko wrote:
 
 That's not what msysgit folks say (they say that msysgit is the
 development environment to build Git for Windows [*1*]).

Aaargh! msys != msysgit != Git for Windows SDK != Git for Windows != 
mingwGitDevEnv
and possibly != git-for-windows.

Oh, there's also mingw-w64-git from msys2 [1].

  I tested my patches by applying them to git.git/master and building
  inside msysgit.
 
 So the idea would be to rebase from git/git/master onto
 msysgit/git/master. Did you do that yet?

No, what for? Windows flavors of Git are already fragmented too much,
my patchset is deliberately targeted at Git upstream.

[1] https://github.com/Alexpux/MINGW-packages/tree/master/mingw-w64-git
--
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 v4] MinGW(-W64) compilation

2014-10-08 Thread Johannes Schindelin
Hi Thomas,

On Wed, 8 Oct 2014, Thomas Braun wrote:

 I wanted to verify that on msysgit but some patches fail to apply
 cleanly. Did you also had to tweak the patches?

I applied the patches to git-for-windows/git's master, manually fixing
three of them, and pushed the result to the 'w64' branch in my fork.
Please find them here:

https://github.com/dscho/git/compare/git-for-windows:master...w64

and rebased onto msysgit's master:

https://github.com/dscho/git/compare/msysgit:master...w64-msysgit

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 v4] MinGW(-W64) compilation

2014-10-08 Thread Johannes Schindelin
Hi Marat,

On Wed, 8 Oct 2014, Marat Radchenko wrote:

 On Wed, Oct 08, 2014 at 10:59:57AM +0200, Johannes Schindelin wrote:

  So the idea would be to rebase from git/git/master onto
  msysgit/git/master. Did you do that yet?
 
 No, what for?

To work together?

If you are not interested in working together to make Git on 64-bit
Windows kick-ass, just say so.

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 v4] MinGW(-W64) compilation

2014-10-06 Thread Johannes Sixt
Am 06.10.2014 um 07:17 schrieb Marat Radchenko:
 On Tue, Sep 30, 2014 at 11:02:29AM +0400, Marat Radchenko wrote:
 This patch series fixes building on modern MinGW and MinGW-W64 (including 
 x86_64!).
 
 Junio, ping?
 

Sorry, I forgot to report that this updated series works now for me.

The patches all look reasonable. I don't have an opinion on the
restriction that MSVC  2010 can't be used anymore (path 08/14).

-- 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 4/6] t4210: skip command-line encoding tests on mingw

2014-07-21 Thread Johannes Schindelin
Hi Junio,

On Mon, 21 Jul 2014, Junio C Hamano wrote:

 Oh by the way, can somebody remind me why we spell these as
 NOT_MINGW,  instead of !MINGW?

I guess that is my mistake; when I introduced the use of NOT_MINGW I was
simply unaware of the !MINGW syntax.

Let's use the latter consistently?

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 4/6] t4210: skip command-line encoding tests on mingw

2014-07-21 Thread Johannes Sixt
Am 21.07.2014 19:45, schrieb Johannes Schindelin:
 Hi Junio,
 
 On Mon, 21 Jul 2014, Junio C Hamano wrote:
 
 Oh by the way, can somebody remind me why we spell these as
 NOT_MINGW,  instead of !MINGW?
 
 I guess that is my mistake; when I introduced the use of NOT_MINGW I was
 simply unaware of the !MINGW syntax.

You can hardly be blamed. The first occurrence of NOT_MINGW was added
much earlier than the ability to negate prerequisite tokens.

 Let's use the latter consistently?

Of course!

-- 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 00/13] mingw unicode environment

2014-07-18 Thread Stepan Kasal
Hello Karsten,

you wrote:
 However, if it *did* compile for you, I wonder where ALLOC_GROW (as of #02/13)
 and alloc_nr (as of #10/13) came from? Or did we recently remove '#include 
 cache.h'
 from upstream mingw.c?

you are right, the include needs to be added.

To test my modifications, I rebased all the rest of msysGit collection,
built and run the test suite.

As you pointed out, https://github.com/msysgit/git/commit/d85d2b75
adds the include.

Unfortunately, I won't get to this for several weeks.  Could you or Hannes
be so kind and post the fixup?

Thank you for this comment.  And big thanks for the orignal work.
(I was only moving it and even that took some time. ;-)

Stepan
--
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: Topic sk/mingw-unicode-spawn-args breaks tests

2014-07-14 Thread Johannes Schindelin
Hi Stepan,

On Sat, 12 Jul 2014, Stepan Kasal wrote:

  Am 10.07.2014 22:05, schrieb Johannes Sixt:
   It looks like I totally missed the topic sk/mingw-unicode-spawn-args.
 ...
   Am I doing something wrong? Does the topic depend on a particular
   version of MSYS (or DLL)?
 
 unfortunately, I paused my submissions at random point.

;-)

 I'm sorry for breaking your setup.  I was not aware there is any
 working Windows setup beyond msysGit.

There is one other, very notable development environment relevant to Git
for Windows: https://github.com/sschuberth/mingwGitDevEnv. It is slated to
be the development environment to produce Git for Windows starting with
version 2.0.0.

I have pretty concrete plans to work on that switch, which will most
likely also affect Hannes (who has so far successfully resisted to develop
Git using the msysGit environment).

Those plans to step up my efforts regarding Git for Windows imply my
spending more time on the project again, subject to a couple of things
that are still being hashed out.

Stay tuned,
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: The different EOL behavior between libgit2-based software and official Git

2014-06-23 Thread Junio C Hamano
Torsten Bögershausen tbo...@web.de writes:

 No, it hadn't, under my Linux box.
 (And I had a .gittatributes file on the Mac OS box, which I forgot about.

OK, that explains the difference; thanks for double-checking.

 Files with mixed LF CRLF in the repo are not changed by Git, when the 
 checkout out
 or checked in, unless the .gitattributes say that the file is text.

Hmph, I would have thought, after reading the Does anybody do that
crazy stuff comment in convert.c, that we refrain from attempting
to convert a file with a mixed mess, even if the file is marked as
text, because it is unclear what it means to have both LF and CRLF
in a file that is text.  Is A\rB\nC\r\n a line terminated with a
CRLF that happens to have a lone CR and then LF in between?

You may be looking at a bug in a corner case that is so irrelevant
that nobody has even noticed, let alone attempted to fix.
--
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: The different EOL behavior between libgit2-based software and official Git

2014-06-22 Thread Torsten Bögershausen
On 2014-06-20 18.33, Junio C Hamano wrote:
 Torsten Bögershausen tbo...@web.de writes:
 
 tb@Linux:~/EOL_Test/TestAutoCrlf$ t=LF.txtrm -f $t   git -c 
 core.eol=CRLF checkout $t   od -c  $t
 000   L   i   n   e   1  \n   l   i   n   e   (   2   )  \n
 020   l   i   n   e   3   .  \n   t   h   i   s   i   s
 040   l   i   n   e   4  \n   l   i   n   e   N
 060   o   .   5  \n   L   i   n   e   N   u   m   b   e   r
 100   6  \n  \n
 
 In Documentation/config.txt, we find:
 
 core.eol::
 Sets the line ending type to use in the working directory for
 files that have the `text` property set.  Alternatives are ...
 
 Does that file $t in your practice have the `text` property set?
 
No, it hadn't, under my Linux box.
(And I had a .gittatributes file on the Mac OS box, which I forgot about.
I am really sorry for the confusion and saying that Git behaves different under 
Linux and Mac OS).

You are pointing into the right direction:
Files with mixed LF CRLF in the repo are not changed by Git, when the checkout 
out
or checked in, unless the .gitattributes say that the file is text.

And libgit2 should do the same.


However, I was confused by this
https://www.kernel.org/pub/software/scm/git/docs/git-config.html
(My comments inline with ##)
---
core.autocrlf

Setting this variable to true is almost the same as setting the text 
attribute to auto on all files except that text files are not guaranteed to 
be normalized: files that contain CRLF in the repository will not be touched. 
## And is this line still valid:
Use this setting if you want to have CRLF line endings in your working 
directory even though the repository does not have normalized line endings. 

## In 2010 the the new safer autocrlf handling was introduced,
## and it looks as if commits fd6cce9e and c4805393 are involved here.
## When the file in the repo has only LF, it will have CRLF in the work tree
## When the file in the repo has mixed LF and CRLF, it will not be changed in 
the work tree
## and will have mixed line endings in the work tree
## When the file in the repo has only CRLF, it will not be changed in the work 
tree
## and will have CRLF in the work tree as well as in the repo.

##Should this line simply be dropped in the documentation ?




--
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: The different EOL behavior between libgit2-based software and official Git

2014-06-20 Thread Torsten Bögershausen

 ​Wow!
 
 P.S.
 libgit2 just has a PR that try to be identical with official git.
 See https://github.com/libgit2/libgit2/pull/2432
 
 Yue Lin Ho 
 

I am not sure how much problems Git/libgit2 have with files contains mixed 
LF-CRLF,
as I have the same problem with the LF.txt

The handling, according to my understandig, is:
When core.eol is CRLF (or native under Windows) and core.autocrlf is true, and 
a file
is checked out:
  If a file has CRLF in one line in the repo, nothing is changed.
  If a file has LF in one line in the repo, LF is converted into CRLF in the 
workspace.

But here at my systems this doesn't seem to work as expected either for LF.txt:

tb@mac:~/EOL_Test/TestAutoCrlf  t=LF.txtrm -f $t   git -c 
core.eol=CRLF checkout $t   od -c  $t
000L   i   n   e   1  \r  \n   l   i   n   e   (   2   )
020   \r  \n   l   i   n   e   3   .  \r  \n   t   h   i   s
040i   s   l   i   n   e   4  \r  \n   l   i   n
060e   N   o   .   5  \r  \n   L   i   n   e   N
100u   m   b   e   r   6  \r  \n  \r  \n
==
tb@Linux:~/EOL_Test/TestAutoCrlf$ t=LF.txtrm -f $t   git -c 
core.eol=CRLF checkout $t   od -c  $t
000   L   i   n   e   1  \n   l   i   n   e   (   2   )  \n
020   l   i   n   e   3   .  \n   t   h   i   s   i   s
040   l   i   n   e   4  \n   l   i   n   e   N
060   o   .   5  \n   L   i   n   e   N   u   m   b   e   r
100   6  \n  \n


--
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: The different EOL behavior between libgit2-based software and official Git

2014-06-20 Thread Junio C Hamano
Torsten Bögershausen tbo...@web.de writes:

tb@Linux:~/EOL_Test/TestAutoCrlf$ t=LF.txtrm -f $t   git -c 
core.eol=CRLF checkout $t   od -c  $t
000   L   i   n   e   1  \n   l   i   n   e   (   2   )  \n
020   l   i   n   e   3   .  \n   t   h   i   s   i   s
040   l   i   n   e   4  \n   l   i   n   e   N
060   o   .   5  \n   L   i   n   e   N   u   m   b   e   r
100   6  \n  \n

In Documentation/config.txt, we find:

core.eol::
Sets the line ending type to use in the working directory for
files that have the `text` property set.  Alternatives are ...

Does that file $t in your practice have the `text` property set?
--
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 0/7] Second part of msysgit/unicode

2014-06-18 Thread Johannes Sixt
Am 18.06.2014 19:33, schrieb Junio C Hamano:
 In the meantime, are Windows folks happy with the four topics queued
 on 'pu' so far?  I would like to start moving them down to 'next'
 and to 'master' soonish.
 
 They consist of these individual patches:
 
 $ git shortlog ^master \
   sk/mingw-dirent \
   sk/mingw-main \
   sk/mingw-uni-console \
   sk/mingw-unicode-spawn-args

Topic sk/test-cmp-bin revealed a new breakage in t5000-tar-tree,
specifically, the penultimate test remote tar.gz is allowed by
default. I have yet to find out what it is (I suspect a LF-CRLF
conversion issue) and whether it is in connection with one of these topics.

I haven't had a chance to test the topics in the field. In particular, I
have a few files with Shift-JIS content (but ASCII file names), and I
would like to see how well I fare with the unicode topics in this situation.

-- 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 3/5] Warn if the Windows console font doesn't support Unicode

2014-06-07 Thread Stepan Kasal
Hi,

On Fri, Jun 06, 2014 at 10:18:43PM +0100, Peter Krefting wrote:
 Stepan Kasal:
 +switching to a TrueType font such as Lucida Console!);
[...]
 modernizing the suggestion here to recomment Consolas. It is available 

Indeed.

So, I'll keep this patch as it is, for the records, and apply your
suggestion to the subsequent
[PATCH 5/5] Win32: Thread-safe windows console output

Stepan
--
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 0/5] First part of Unicode console support for msysgit

2014-06-06 Thread Stepan Kasal
Hello Karsten,

On Fri, Jun 06, 2014 at 07:44:33PM +0200, Karsten Blees wrote:
 Nicely done, thanks!

thank you for your kind words.

Please hold back, I will re-submit in a few days.

 Note: this one was submitted seperately on May 29 and May 1 (can't
 find it in the gmane archive, though).

It was cc'ed to msysgit as usual and gmane selected it as the primary
place to store it:
http://thread.gmane.org/gmane.comp.version-control.msysgit/20324

regards,
Stepan
--
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 0/5] First part of Unicode console support for msysgit

2014-06-06 Thread Stepan Kasal
Hello,

On Fri, Jun 06, 2014 at 07:44:33PM +0200, Karsten Blees wrote:
  Karsten Blees (5):
Support Unicode console output on Windows
 
 [..] you could have squashed half of
 Win32: fix segfault in WriteConsoleW when debugging in gdb [2] (second  
 half in [5/5]).
 
Detect console streams more reliably on Windows
Warn if the Windows console font doesn't support Unicode
 
 I think this one includes
 MSVC: fix winansi.c compile errors  [3] and
 Unicode console: fix font warning on Vista and Win7 [4]
[...]
Win32: move main macro to a function
Win32: Thread-safe windows console output

 [2] https://github.com/msysgit/git/commit/cd0792af
 [3] https://github.com/msysgit/git/commit/3abcb04d
 [4] https://github.com/msysgit/git/commit/981aa538

Indeed, you identified them correctly.  And [2] is actually squashed
in [5/5]; I think I can keep it that way.

I'll add the missing fix, take care about original dates, improve the
cover letter (the above links), and resubmit.

Thanks for review this batch of your patches.

Regards,
Stepan
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-05 Thread Johannes Schindelin
Hi Karsten,

On Thu, 5 Jun 2014, Karsten Blees wrote:

 After a bit of digging in the history and the old googlegroups issue
 tracker, I think this patch is completely unrelated to the non-ASCII
 problems.

Actually, the non-ASCII problems were the trigger for my patch.

 In summary, this patch fixes 'git config' for the portable version only,
 and it only does so partially.

Care to elaborate?

 Am 04.06.2014 17:46, schrieb Johannes Schindelin:
 
  I would be strongly in favor of fixing the problem by the root:
  avoiding to have Git rely on the HOME environment variable to be set,
  but instead add a clean API call that even says what it is supposed to
  do: gimme the user's home directory's path. And that is exactly what
  the patch does.
 
 By that argument we'd have to introduce API abstractions for every
 environment variable that could possibly resemble a path (PATH, TMPDIR,
 GIT_DIR, GIT_WORK_DIR, GIT_TRACE* etc.).

But of course you are mixing things here. GIT_* are purely Git-specific
constructs, so there is no possibility for confusion. PATH and TMPDIR need
to be handled specially (as does HOME) because we are reusing environment
variable concepts that pose their own set of problems on Windows because
of the separator, the path separator and the encoding problems.

I understand that it is easy to confuse my want for a API function for the
home variable with handling for other environment variables. But that HOME
is an environment variable is not the point at all! It just *happens* to
be an environment variable on Linux/Unix.

 We already have similar fallback logic for TMPDIR that is completely
 non-intrusive to core git code (fully encapsulated in mingw.c, see
 mingw_getenv (upstream) or mingw_startup (msysgit)). IMO such a solution
 would be hugely preferable over adding an additional
 get_home_directory() API (and continuously checking that no new upstream
 code accidentally introduces another 'getenv(HOME)').

Well, since you mention that TMPDIR hack: this is a hack. We are bending
over in order for upstream not having to accomodate non-POSIX operating
systems. But how much cleaner would it be if there was an API call with
varargs. After all, by the reasoning TMPDIR is a standard on Unix you
would also have to special case /tmp/ in all the open/opendir/etc
functions because the temporary directory is /tmp/ on Linux/Unix, right?

Render me even more convinced that the API call is the cleanest way to go,
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-05 Thread Stepan Kasal
Hi,

On Thu, Jun 05, 2014 at 02:03:39PM +0200, Johannes Schindelin wrote:
 Render me even more convinced that the API call is the cleanest way to go,

But not me.  

In a paralel post, Duy Nguyen wrote:
 Thank you for working on pushing msysgit patches upstream. I don't use
 git on windows, but it's nice to see all windows-specific changes in
 one code base so we can try to workaround it when new patches/features
 are developed.

... but we should not obscure that more than necessary.  If the API
call is   getenv(HOME);  it helps.  And the hack with
mingw_getenv() is not that bad, so we should be pragmatic and accept
it.

Stepan
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-05 Thread Karsten Blees
Am 05.06.2014 14:03, schrieb Johannes Schindelin:
 Hi Karsten,
 
 On Thu, 5 Jun 2014, Karsten Blees wrote:
 
 After a bit of digging in the history and the old googlegroups issue
 tracker, I think this patch is completely unrelated to the non-ASCII
 problems.
 
 Actually, the non-ASCII problems were the trigger for my patch.

The commit message explicitly claims that it fixes issue 482, which is: 'git 
config --global' in the portable version fails with fatal: $HOME not set (not 
unable to access '...', which you would get for a mangled path that doesn't 
exist).

As outlined in the previous mail (analysis 1.), the non-ASCII problem is caused 
by a bug in msys.dll, and it is in fact impossible to fix in git (even if that 
was your intention).

 
 In summary, this patch fixes 'git config' for the portable version only,
 and it only does so partially.
 
 Care to elaborate?
 

See previous mail analysis 3. In short: it doesn't work with disconnected home 
share (issue 259), and it doesn't setenv(HOME) (so child processes such as 
git-gui will most likely fail).

 Am 04.06.2014 17:46, schrieb Johannes Schindelin:

 I would be strongly in favor of fixing the problem by the root:
 avoiding to have Git rely on the HOME environment variable to be set,
 but instead add a clean API call that even says what it is supposed to
 do: gimme the user's home directory's path. And that is exactly what
 the patch does.

 By that argument we'd have to introduce API abstractions for every
 environment variable that could possibly resemble a path (PATH, TMPDIR,
 GIT_DIR, GIT_WORK_DIR, GIT_TRACE* etc.).
 
 But of course you are mixing things here. GIT_* are purely Git-specific
 constructs, so there is no possibility for confusion. PATH and TMPDIR need
 to be handled specially (as does HOME) because we are reusing environment
 variable concepts that pose their own set of problems on Windows because
 of the separator, the path separator and the encoding problems.
 
 I understand that it is easy to confuse my want for a API function for the
 home variable with handling for other environment variables. But that HOME
 is an environment variable is not the point at all! It just *happens* to
 be an environment variable on Linux/Unix.
 
 We already have similar fallback logic for TMPDIR that is completely
 non-intrusive to core git code (fully encapsulated in mingw.c, see
 mingw_getenv (upstream) or mingw_startup (msysgit)). IMO such a solution
 would be hugely preferable over adding an additional
 get_home_directory() API (and continuously checking that no new upstream
 code accidentally introduces another 'getenv(HOME)').
 
 Well, since you mention that TMPDIR hack: this is a hack. We are bending
 over in order for upstream not having to accomodate non-POSIX operating
 systems.

Exactly. In order to support different platforms, we need to agree on a common 
abstraction layer to access platform-specific functionality. For the git 
project, this common abstraction layer happens to be the POSIX standard 
(actually: the subset of the standard that is used by core git code). And 
compat/mingw.c implements that abstraction layer for the native Windows 
platform.

There are cases where conforming to the standard is simply not feasible, e.g. 
fork() (we don't want to build another cygwin). So we sometimes need special 
handling for certain functionality in core-git (see run-command.c in case of 
fork()).

However, getenv(HOME), getenv(TMPDIR) and getenv(PATH) are all fully 
POSIX compliant, including the standardised variable names. In this particular 
case, conforming to the standard (via special handling in mingw_getenv or 
mingw_startup) is actually even _simpler_ than inventing a new, non-standard, 
undocumented get_home_directory() API.

 But how much cleaner would it be if there was an API call with
 varargs. After all, by the reasoning TMPDIR is a standard on Unix you
 would also have to special case /tmp/ in all the open/opendir/etc
 functions because the temporary directory is /tmp/ on Linux/Unix, right?

No, POSIX doesn't specify path names. The standard way to get the temp 
directory is 'getenv(TMPDIR)'. A hardcoded /tmp in core git code would be a 
bug.


--
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] mingw: redefine the wrapper macro after the corresponding function

2014-06-05 Thread Stepan Kasal
Hello Karsten,

On Thu, Jun 05, 2014 at 04:51:39PM +0200, Karsten Blees wrote:
 In the current msysgit HEAD, most of these #undef's can simply be
 removed or have already been removed [...]

not most of.  According to my quick count, 6 of 20 have been removed,
2 more can be removed.  The remaining 12 do play their role.
(The point you overlooked is that there are several socket related,
like bind().)

 If you apply this patch in msysgit, you'll most likely get compile
 errors due to redefining macros.

It would be warnings only.  But a quick test shows that redefining
with identical definition does not trigger the warning.

Stepan
--
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] mingw: redefine the wrapper macro after the corresponding function

2014-06-05 Thread Karsten Blees
Am 05.06.2014 17:13, schrieb Stepan Kasal:
 Hello Karsten,
 
 On Thu, Jun 05, 2014 at 04:51:39PM +0200, Karsten Blees wrote:
 In the current msysgit HEAD, most of these #undef's can simply be
 removed or have already been removed [...]
 
 not most of.  According to my quick count, 6 of 20 have been removed,
 2 more can be removed.  The remaining 12 do play their role.
 (The point you overlooked is that there are several socket related,
 like bind().)
 

Right, premature generalization on my part from looking at the first two or so 
entries.

However, I suspect some of the remaining 12 could be improved so that no #undef 
is necessary. E.g. gethostbyname could probably be implemented using 
GetAddrInfoW (supports non-ASCII names and IPv6).


--
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] t5000, t5003: do not use test_cmp to compare binary files

2014-06-04 Thread Thomas Braun
Hi Stephan,

Am 04.06.2014 14:42, schrieb Stepan Kasal:
 On Wed, Jun 04, 2014 at 02:13:44PM +0200, Thomas Braun wrote:
 Wouldn't a function like test_cmp_bin() be better suited for all?

 I also considered it.  The advantage is that is shows that
 this intentionally differs from test_cmp.

 The windows folks can then use cmp inside test_cmp_bin() and all others

 ... would use cmp as well because it is better suited for the task
 than diff -u.  So test_cmp_bin would be just an alias for cmp, on all
 platforms.  Doesn't that sound weird?

I actually like the idea that the test assertions follow a common naming
scheme and can easily be overriden by $arbitrary-crazy-platform.

Using test_cmp_bin instead of cmp would result in then four assertions
for comparing arbitrary data
test_cmp
test_18ncmp
test_cmp_text
test_cmp_bin
where I think the purpose of each function is clear from its name.
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Erik Faye-Lund
On Wed, Jun 4, 2014 at 3:47 PM, Duy Nguyen pclo...@gmail.com wrote:
 On Wed, Jun 4, 2014 at 6:47 PM, Stepan Kasal ka...@ucw.cz wrote:
 @@ -133,7 +133,7 @@ char *git_path(const char *fmt, ...)
  void home_config_paths(char **global, char **xdg, char *file)
  {
 char *xdg_home = getenv(XDG_CONFIG_HOME);
 -   char *home = getenv(HOME);
 +   const char *home = get_home_directory();
 char *to_free = NULL;

 if (!home) {

 Just checking. Instead of replace the call sites, can we check and
 setenv(HOME) if it's missing instead? MinGW port already replaces
 main(). Extra initialization should not be a problem. I feel
 getenv(HOME) a tiny bit more familiar than get_home_directory(),
 but that's really weak argument as the number of call sites has not
 increased in 4 years.

Yeah. But we already set %HOME% to %HOMEDRIVE%%HOMEPATH% in
/etc/profile, git-cmd.bat, gitk.cmd *and* git-wrapper... Do we really
need one more place?

It seems some of these could be dropped...
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Karsten Blees
Am 04.06.2014 16:05, schrieb Erik Faye-Lund:
 On Wed, Jun 4, 2014 at 3:47 PM, Duy Nguyen pclo...@gmail.com wrote:
 On Wed, Jun 4, 2014 at 6:47 PM, Stepan Kasal ka...@ucw.cz wrote:
 @@ -133,7 +133,7 @@ char *git_path(const char *fmt, ...)
  void home_config_paths(char **global, char **xdg, char *file)
  {
 char *xdg_home = getenv(XDG_CONFIG_HOME);
 -   char *home = getenv(HOME);
 +   const char *home = get_home_directory();
 char *to_free = NULL;

 if (!home) {

 Just checking. Instead of replace the call sites, can we check and
 setenv(HOME) if it's missing instead? MinGW port already replaces
 main(). Extra initialization should not be a problem. I feel
 getenv(HOME) a tiny bit more familiar than get_home_directory(),
 but that's really weak argument as the number of call sites has not
 increased in 4 years.
 

Setting the variable instead of wrapping getenv has the additional benefit that 
it also affects child processes (read: scripted commands).

 Yeah. But we already set %HOME% to %HOMEDRIVE%%HOMEPATH% in
 /etc/profile, git-cmd.bat, gitk.cmd *and* git-wrapper... Do we really
 need one more place?
 

...all of these also do the string concatenation correctly (i.e. not 
C:/\Users\MyName as this patch does), fall back to %USERPROFILE% if 
%HOMEPATH% is not set, and most (except git-wrapper) even check that the 
directory exists. So IMO this patch has been superseded by more robust 
solutions and should be dropped.


--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Johannes Schindelin
Hi Duy,

On Wed, 4 Jun 2014, Duy Nguyen wrote:

 On Wed, Jun 4, 2014 at 6:47 PM, Stepan Kasal ka...@ucw.cz wrote:
  @@ -133,7 +133,7 @@ char *git_path(const char *fmt, ...)
   void home_config_paths(char **global, char **xdg, char *file)
   {
  char *xdg_home = getenv(XDG_CONFIG_HOME);
  -   char *home = getenv(HOME);
  +   const char *home = get_home_directory();
  char *to_free = NULL;
 
  if (!home) {
 
 Just checking. Instead of replace the call sites, can we check and
 setenv(HOME) if it's missing instead? MinGW port already replaces
 main(). Extra initialization should not be a problem. I feel
 getenv(HOME) a tiny bit more familiar than get_home_directory(),
 but that's really weak argument as the number of call sites has not
 increased in 4 years.

There is a good reason why we did not go for that (noticably cheaper)
solution. In fact, it used to be our solution until too many things got
broken by setting the HOME variable: Git is not the only program making
use of that variable (and IIRC Putty or a merge helper got seriously
confused when we set it).

So I am afraid, no, we cannot simply setenv(HOME).

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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Johannes Schindelin
Hi Erik,

On Wed, 4 Jun 2014, Erik Faye-Lund wrote:

 On Wed, Jun 4, 2014 at 3:47 PM, Duy Nguyen pclo...@gmail.com wrote:
  On Wed, Jun 4, 2014 at 6:47 PM, Stepan Kasal ka...@ucw.cz wrote:
  @@ -133,7 +133,7 @@ char *git_path(const char *fmt, ...)
   void home_config_paths(char **global, char **xdg, char *file)
   {
  char *xdg_home = getenv(XDG_CONFIG_HOME);
  -   char *home = getenv(HOME);
  +   const char *home = get_home_directory();
  char *to_free = NULL;
 
  if (!home) {
 
  Just checking. Instead of replace the call sites, can we check and
  setenv(HOME) if it's missing instead? MinGW port already replaces
  main(). Extra initialization should not be a problem. I feel
  getenv(HOME) a tiny bit more familiar than get_home_directory(),
  but that's really weak argument as the number of call sites has not
  increased in 4 years.
 
 Yeah. But we already set %HOME% to %HOMEDRIVE%%HOMEPATH% in
 /etc/profile, git-cmd.bat, gitk.cmd *and* git-wrapper... Do we really
 need one more place?
 
 It seems some of these could be dropped...

No. Git is not always called through Bash or the git-wrapper,
unfortunately.

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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Erik Faye-Lund
On Wed, Jun 4, 2014 at 5:14 PM, Johannes Schindelin
johannes.schinde...@gmx.de wrote:
 Hi Erik,

 On Wed, 4 Jun 2014, Erik Faye-Lund wrote:

 On Wed, Jun 4, 2014 at 3:47 PM, Duy Nguyen pclo...@gmail.com wrote:
  On Wed, Jun 4, 2014 at 6:47 PM, Stepan Kasal ka...@ucw.cz wrote:
  @@ -133,7 +133,7 @@ char *git_path(const char *fmt, ...)
   void home_config_paths(char **global, char **xdg, char *file)
   {
  char *xdg_home = getenv(XDG_CONFIG_HOME);
  -   char *home = getenv(HOME);
  +   const char *home = get_home_directory();
  char *to_free = NULL;
 
  if (!home) {
 
  Just checking. Instead of replace the call sites, can we check and
  setenv(HOME) if it's missing instead? MinGW port already replaces
  main(). Extra initialization should not be a problem. I feel
  getenv(HOME) a tiny bit more familiar than get_home_directory(),
  but that's really weak argument as the number of call sites has not
  increased in 4 years.

 Yeah. But we already set %HOME% to %HOMEDRIVE%%HOMEPATH% in
 /etc/profile, git-cmd.bat, gitk.cmd *and* git-wrapper... Do we really
 need one more place?

 It seems some of these could be dropped...

 No. Git is not always called through Bash or the git-wrapper,
 unfortunately.

I'm aware of that. But you said in a previous e-mail that e.g putty
got confused when we set HOME. How is this a problem for git.exe, but
not when we set it in the shell?
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Johannes Schindelin
Hi kusma,

On Wed, 4 Jun 2014, Erik Faye-Lund wrote:

 On Wed, Jun 4, 2014 at 5:14 PM, Johannes Schindelin
 johannes.schinde...@gmx.de wrote:
 
  On Wed, 4 Jun 2014, Erik Faye-Lund wrote:
 
  On Wed, Jun 4, 2014 at 3:47 PM, Duy Nguyen pclo...@gmail.com wrote:
   On Wed, Jun 4, 2014 at 6:47 PM, Stepan Kasal ka...@ucw.cz wrote:
   @@ -133,7 +133,7 @@ char *git_path(const char *fmt, ...)
void home_config_paths(char **global, char **xdg, char *file)
{
   char *xdg_home = getenv(XDG_CONFIG_HOME);
   -   char *home = getenv(HOME);
   +   const char *home = get_home_directory();
   char *to_free = NULL;
  
   if (!home) {
  
   Just checking. Instead of replace the call sites, can we check and
   setenv(HOME) if it's missing instead? MinGW port already replaces
   main(). Extra initialization should not be a problem. I feel
   getenv(HOME) a tiny bit more familiar than
   get_home_directory(), but that's really weak argument as the number
   of call sites has not increased in 4 years.
 
  Yeah. But we already set %HOME% to %HOMEDRIVE%%HOMEPATH% in
  /etc/profile, git-cmd.bat, gitk.cmd *and* git-wrapper... Do we really
  need one more place?
 
  It seems some of these could be dropped...
 
  No. Git is not always called through Bash or the git-wrapper,
  unfortunately.
 
 I'm aware of that. But you said in a previous e-mail that e.g putty got
 confused when we set HOME. How is this a problem for git.exe, but not
 when we set it in the shell?

The problem arises whenever git.exe calls subprocesses. You can pollute
the environment by setting HOME, I do not recall the details, but I
remember that we had to be very careful *not* to do that, hence the patch.
Sorry, has been a long time.

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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Stepan Kasal
Hi dscho,

  On Wed, Jun 4, 2014 at 5:14 PM, Johannes Schindelin
  johannes.schinde...@gmx.de wrote:
   No. Git is not always called through Bash or the git-wrapper,
   unfortunately.

but you have to admit, that in most cases it is called through bash
or the git wrapper.

 The problem arises whenever git.exe calls subprocesses. You can pollute
 the environment by setting HOME, I do not recall the details, but I
 remember that we had to be very careful *not* to do that, hence the patch.
 Sorry, has been a long time.

Yeah, memories.  Is this experience still valid?  How many users do
profit from this, using c:/Program\ Files \(86\)/bin/git.exe instead of 
c:/Program\ Files \(86\)/cmd/git.exe, either by pure luck or
intentionally?

It seems that we should keep the patch, to minimize surprise if
bin/git.exe is used directly.

But we should probably make it consistent with other places:
- $HOMEDRIVE$HOMEPATH (without the slash)
- $USERPROFILE if the above dir does not exist.
- setenv HOME instead of wrapper

We can make this change for msysGit 2.0.0 only, so that we do not
break 1.9.4 ;-)

Does this make sense?
Stepan
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Johannes Schindelin
Hi kusma,

On Wed, 4 Jun 2014, Johannes Schindelin wrote:

 The problem arises whenever git.exe calls subprocesses. You can pollute
 the environment by setting HOME, I do not recall the details, but I
 remember that we had to be very careful *not* to do that, hence the patch.
 Sorry, has been a long time.

Actually, a quick search in my Applegate vaults^W^Wmail archives suggests
that we had tons of troubles with non-ASCII characters in the path.

Given that none of us really has time to recreate the problems, or to take
care of them if there arises a new problem due to setting the HOME
variable again (remember: while we have UTF-8 support in Git, thanks to
Karsten's tireless efforts, and while that seems to fix the biggest bugs
for us, other MinGW software does not have that luxury and will continue
to barf on non-ASCII characters in the HOME variable), I would be strongly
in favor of fixing the problem by the root: avoiding to have Git rely on
the HOME environment variable to be set, but instead add a clean API call
that even says what it is supposed to do: gimme the user's home
directory's path. And that is exactly what the patch does.

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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Johannes Schindelin
Hi Stepan,

On Wed, 4 Jun 2014, Stepan Kasal wrote:

   On Wed, Jun 4, 2014 at 5:14 PM, Johannes Schindelin
   johannes.schinde...@gmx.de wrote:
No. Git is not always called through Bash or the git-wrapper,
unfortunately.
 
 but you have to admit, that in most cases it is called through bash or
 the git wrapper.

It would seem so. But the plan was always to make the user experience on
Windows less abysmal than now (I just do not have enough time these days
to pursue that goal myself), which includes the goal to make git.exe the
main entrance point, not Bash nor the git-wrapper.

  The problem arises whenever git.exe calls subprocesses. You can pollute
  the environment by setting HOME, I do not recall the details, but I
  remember that we had to be very careful *not* to do that, hence the patch.
  Sorry, has been a long time.
 
 Yeah, memories.

*Very* vague. Sorry.

 Is this experience still valid?  How many users do profit from this,
 using c:/Program\ Files \(86\)/bin/git.exe instead of c:/Program\ Files
 \(86\)/cmd/git.exe, either by pure luck or intentionally?

Keep in mind that the most problems were introduced by the fact that
USERPROFILE disagrees with HOMEDRIVE\HOMEPATH at times.

 It seems that we should keep the patch, to minimize surprise if
 bin/git.exe is used directly.

I am also in favor of keeping the patch because it introduces a bit of
documentation. It says pretty precisely what it wants and allows
platform-specific handling without having to play games with the
environment, as was suggested earlier.

And of course you cannot deny that it had four years of testing. The HOME
problems never came back after we included this patch.

 But we should probably make it consistent with other places:
 - $HOMEDRIVE$HOMEPATH (without the slash)
 - $USERPROFILE if the above dir does not exist.
 - setenv HOME instead of wrapper

Possibly. But again, it is hard to argue with four years of testing. Any
change you make now will lack that kind of vetting.

 We can make this change for msysGit 2.0.0 only, so that we do not
 break 1.9.4 ;-)

So we can break 2.0.0! ;-)

Actually, 2.0.0 for Windows needs to wait a little longer (it is a little
bit unfortunate that we could not coordinate it with upstream) because the
plan is to switch to mingwGitDevEnv for said release. No more msysGit.
Like, bu-bye. Thanks for all the fish.

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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Stepan Kasal
Hi dscho,

your arguments seem really strong.  (Especially the four years of
battle testing, with the memories of constant problems with HOME before.)

I hope they are strong enough to convince Junio to accept this patch;
that would help.

Stepan

PS (about mingwGitDevEnv):
 plan is to switch to mingwGitDevEnv for said release. No more msysGit.
 Like, bu-bye. Thanks for all the fish.

Interesting.

With msysgit, there is the net installer - first time I installed
msys/mingw sucessfully, it was as easy as Cygwin, perhaps even
easier.

When I go to mingwGitDevEnv home page, I read about chickens, eggs,
and upgrading Perl (which msysGit simply gives up, hinting that it is
almost impossible).
So I decided to wait for their Git 2.0.0 release before I try to
install it (again).

I apologize for being so cheeky, I hope it will help anyway...

PPS: from marketing point of view, mingwGitDevEnv is far from usable
name.  Dscho, if you support the idea, would you mind franchising
msysGit 2.0 for a decent amount?
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Johannes Schindelin
Hi Stepan,

On Wed, 4 Jun 2014, Stepan Kasal wrote:

 PS (about mingwGitDevEnv):
  plan is to switch to mingwGitDevEnv for said release. No more msysGit.
  Like, bu-bye. Thanks for all the fish.
 
 Interesting.
 
 With msysgit, there is the net installer - first time I installed
 msys/mingw sucessfully, it was as easy as Cygwin, perhaps even
 easier.
 
 When I go to mingwGitDevEnv home page, I read about chickens, eggs, and
 upgrading Perl (which msysGit simply gives up, hinting that it is almost
 impossible).  So I decided to wait for their Git 2.0.0 release before I
 try to install it (again).

I understand. And now that upstream Git 2.0.0 is out, it will be very hard
to use that as a deadline to push against. So: don't hold your breath.

 PPS: from marketing point of view, mingwGitDevEnv is far from usable
 name.  Dscho, if you support the idea, would you mind franchising
 msysGit 2.0 for a decent amount?

Make me an offer :-P

Seriously again, I am in favor of calling it the Git for Windows SDK. But
really, it is bikeshedding at this point. There is real work to do, still,
before we can switch. Lots of unaddressed questions. Too little time.
Speaking of which... budget's depleted for today ;-)

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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Duy Nguyen
On Wed, Jun 4, 2014 at 11:16 PM, Stepan Kasal ka...@ucw.cz wrote:
 Hi dscho,

 your arguments seem really strong.  (Especially the four years of
 battle testing, with the memories of constant problems with HOME before.)

 I hope they are strong enough to convince Junio to accept this patch;
 that would help.

I think you should include the problems Dscho described in the commit
message too.
-- 
Duy
--
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] Add a Windows-specific fallback to getenv(HOME);

2014-06-04 Thread Karsten Blees
Am 04.06.2014 17:46, schrieb Johannes Schindelin:
 Hi kusma,
 
 On Wed, 4 Jun 2014, Johannes Schindelin wrote:
 
 The problem arises whenever git.exe calls subprocesses. You can pollute
 the environment by setting HOME, I do not recall the details, but I
 remember that we had to be very careful *not* to do that, hence the patch.
 Sorry, has been a long time.
 
 Actually, a quick search in my Applegate vaults^W^Wmail archives suggests
 that we had tons of troubles with non-ASCII characters in the path.
 

After a bit of digging in the history and the old googlegroups issue tracker, I 
think this patch is completely unrelated to the non-ASCII problems.

In summary, this patch fixes 'git config' for the portable version only, and it 
only does so partially. Thus I don't think its ready for upstream, at least not 
in its current form. See below for the nasty details.


 I would be strongly
 in favor of fixing the problem by the root: avoiding to have Git rely on
 the HOME environment variable to be set, but instead add a clean API call
 that even says what it is supposed to do: gimme the user's home
 directory's path. And that is exactly what the patch does.
 

By that argument we'd have to introduce API abstractions for every environment 
variable that could possibly resemble a path (PATH, TMPDIR, GIT_DIR, 
GIT_WORK_DIR, GIT_TRACE* etc.).

We already have similar fallback logic for TMPDIR that is completely 
non-intrusive to core git code (fully encapsulated in mingw.c, see mingw_getenv 
(upstream) or mingw_startup (msysgit)). IMO such a solution would be hugely 
preferable over adding an additional get_home_directory() API (and continuously 
checking that no new upstream code accidentally introduces another 
'getenv(HOME)').

Cheers,
Karsten




Analysis of $HOME-realted issues:


1. mangled non-ASCII characters in environment variables

E.g. issue 491 [1], reportedly fixed in v1.7.10 ([1] comment #10).

This is actually a bug in msys.dll, and there's nothing that can be done about 
it from within git.exe. It is also not a problem if git is launched from 
cmd.exe.

The root cause is that the msys environment is initialized using 
GetEnvironmentStringsA(), which returns GetOEMCP()-encoded strings (e.g. 
cp850), rather than GetACP() (e.g. cp1252) as all other *A API functions do 
[2]. This adds one level of mangling whenever a native Windows program starts 
an msys program (so e.g. the call chain bash-git-bash-wish would mangle 
twice, see [1] comment #3).

For the fixed GetEnvironmentStringsA(), see [3] lines 459ff.

(As a side note, $HOMEDRIVE and $HOMEPATH originally did not have this problem, 
as they were separately initialized from NetUserGetInfoA(). This was changed in 
v1.6.3, however, at that time etc/profile was still using the broken 
$USERPROFILE. See [4], [5].)


2. 'git config' doesn't work with disconnected network drives

Issues 259 [6], 497 [7] and 512 [8], fixed in v1.7.0.2 for bash and v1.7.2.3 
for cmd.

Apparently, $HOMEDRIVE$HOMEPATH is the home directory on the network, and 
$USERPROFILE is local. To be able to work offline, we need to check if 
$HOMEDRIVE$HOMEPATH exists and fall back to $USERPROFILE otherwise.

Note that git-wrapper does _not_ check if $HOMEDRIVE$HOMEPATH actually exists, 
as the original git.cmd did. This is probably a regression wrt issue 259.


3. HOME is not set when using the portable version

Issue 482 [9], partially fixed in v1.7.2.3 by this patch.

'Partially' because:
- there's no fallback to $USERPROFILE, so it doesn't work with disconnected 
network drives (see problem 2.)
- it doesn't setenv(HOME) for child processes (at least git-gui accesses 
$env(HOME) directly, but I haven't checked what happens if HOME is not set)

Incidentally, this patch was first released with v1.7.2.3, which also sets 
$HOME correctly in both etc/profile and git.cmd. So I suspect that this patch 
has always been essentially dead code (except perhaps for the portable version, 
I've never used that).


[1] https://code.google.com/p/msysgit/issues/detail?id=491
[2] 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683187%28v=vs.85%29.aspx
[3] 
https://github.com/msysgit/msysgit/blob/msys/src/rt/patches/0013-msys.dll-basic-Unicode-support.patch
[4] 
https://github.com/msysgit/msysgit/blob/msys/src/rt/patches/0007-only-override-the-variables-HOMEPATH-and-HOMEDRIVE-i.patch
[5] https://github.com/msysgit/msysgit/commit/6b096c9
[6] https://code.google.com/p/msysgit/issues/detail?id=259
[7] https://code.google.com/p/msysgit/issues/detail?id=497
[8] https://code.google.com/p/msysgit/issues/detail?id=512
[9] https://code.google.com/p/msysgit/issues/detail?id=482

--
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 v2] t5000, t5003: do not use test_cmp to compare binary files

2014-06-04 Thread Michael Geddes
I have the problem that the overridden test_cmp crashes on a couple of places 
where it is doing a binary compare, so this is definitely needed.

I actually used cmp -q   in my override as it's the return code that is most 
important.

//.

On Wed, 4 Jun 2014 11:22:56 AM Junio C Hamano wrote:
 Stepan Kasal ka...@ucw.cz writes:
  test_cmp() is primarily meant to compare text files (and display the
  difference for debug purposes).
  
  Raw cmp is better suited to compare binary files (tar, zip, etc.).
  
  On MinGW, test_cmp is a shell function mingw_test_cmp that tries to
  read both files into environment, stripping CR characters (introduced
  in commit 4d715ac0).
  
  This function usually speeds things up, as fork is extremly slow on
  Windows.  But no wonder that this function is extremely slow and
  sometimes even crashes when comparing large tar or zip files.
  
  Signed-off-by: Stepan Kasal ka...@ucw.cz
  ---
  
  Hi Thomas,
  
  On Wed, Jun 04, 2014 at 02:59:44PM +0200, Thomas Braun wrote:
  Using test_cmp_bin instead of cmp would result in then four assertions
  for comparing arbitrary data
  test_cmp
  test_i18ncmp
  test_cmp_text
  test_cmp_bin
  where I think the purpose of each function is clear from its name.
  
  [test_cmp_text does not exist (yet)]
  
  OK, I agree, hence this modified version of the patch.
 
 Yeah, I think the above reasoning is sound.  And I do not think we
 ever need to have test_cmp_text -- our payload and our messages
 compared by tests to make sure our expectations hold are text by
 default.
 
 Will queue; thanks.

--
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/RFC] send-pack.c: Allow to disable side-band-64k

2014-05-20 Thread Erik Faye-Lund
On Tue, May 20, 2014 at 10:46 AM, Thomas Braun
thomas.br...@byte-physics.de wrote:
 Am 19.05.2014 22:29, schrieb Erik Faye-Lund:
  [...]
 Would we need to wrap both ends, shouldn't wrapping only reading be
 good enough to prevent deadlocking?

 compat/poll/poll.c already contains a function called IsSocketHandle
 that is able to tell if a HANDLE points to a socket or not.

 This very quick attempt did not work out :(

 diff --git a/compat/mingw.c b/compat/mingw.c
 index 0335958..ec1d81f 100644
 --- a/compat/mingw.c
 +++ b/compat/mingw.c
 @@ -370,6 +370,65 @@ int mingw_open (const char *filename, int oflags, ...)
   return fd;
   }

 +#define is_console_handle(h) (((long) (h)  3) == 3)
 +
 +static int is_socket_handle(HANDLE h)
 +{
 +WSANETWORKEVENTS ev;
 +
 +if (is_console_handle(h))
 +return 0;
 +
 +/*
 + * Under Wine, it seems that getsockopt returns 0 for pipes too.
 + * WSAEnumNetworkEvents instead distinguishes the two correctly.
 + */
 +ev.lNetworkEvents = 0xDEADBEEF;
 +WSAEnumNetworkEvents((SOCKET) h, NULL, ev);
 +return ev.lNetworkEvents != 0xDEADBEEF;
 +}
 +
 +#undef read
 +ssize_t mingw_read(int fd, void *buf, size_t count)
 +{
 +int ret;
 +HANDLE fh = (HANDLE)_get_osfhandle(fd);
 +
 +if (fh == INVALID_HANDLE_VALUE) {
 +errno = EBADF;
 +return -1;
 +}
 +
 +if (!is_socket_handle(fh))
 +return read(fd, buf, count);
 +
 +ret = recv((SOCKET)fh, buf, count, 0);
 +if (ret  0)
 +errno = WSAGetLastError();
 +return ret;
 +}
 +
 +#undef write
 +ssize_t mingw_write(int fd, const void *buf, size_t count)
 +{
 +int ret;
 +HANDLE fh = (HANDLE)_get_osfhandle(fd);
 +
 +if (fh == INVALID_HANDLE_VALUE) {
 +errno = EBADF;
 +return -1;
 +}
 +
 +if (!is_socket_handle(fh))
 +return write(fd, buf, count);
 +
 +return send((SOCKET)fh, buf, count, 0);
 +if (ret  0)
 +errno = WSAGetLastError();
 +return ret;
 +}
 +
 +
   static BOOL WINAPI ctrl_ignore(DWORD type)
   {
   return TRUE;
 diff --git a/compat/mingw.h b/compat/mingw.h
 index 08b83fe..1690098 100644
 --- a/compat/mingw.h
 +++ b/compat/mingw.h
 @@ -177,6 +177,12 @@ int mingw_rmdir(const char *path);
   int mingw_open (const char *filename, int oflags, ...);
   #define open mingw_open

 +ssize_t mingw_read(int fd, void *buf, size_t count);
 +#define read mingw_read
 +
 +ssize_t mingw_write(int fd, const void *buf, size_t count);
 +#define write mingw_write
 +
   int mingw_fgetc(FILE *stream);
   #define fgetc mingw_fgetc

 According to [1] you also have to pass WSA_FLAG_OVERLAPPED to avoid the 
 deadlock.

 With that change I don't get a hang anymore but a read error with
 errno 10054 aka WSAECONNRESET.

 [1]: https://groups.google.com/forum/#!msg/msysgit/at8D7J-h7mw/PM9w-d41cDYJ


Yeah, sorry, I noticed this right after sending and tested with that
as well. My results were the same :/
--
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 v2] config: preserve config file permissions on edits

2014-05-19 Thread Erik Faye-Lund
On Mon, May 19, 2014 at 9:13 AM, Johannes Sixt j.s...@viscovery.net wrote:
 Am 5/6/2014 2:17, schrieb Eric Wong:
 Users may already store sensitive data such as imap.pass in
 ..git/config; making the file world-readable when git config
 is called to edit means their password would be compromised
 on a shared system.

 [v2: updated for section renames, as noted by Junio]

 Signed-off-by: Eric Wong normalper...@yhbt.net
 ---
  config.c   | 16 
  t/t1300-repo-config.sh | 10 ++
  2 files changed, 26 insertions(+)

 diff --git a/config.c b/config.c
 index a30cb5c..c227aa8 100644
 --- a/config.c
 +++ b/config.c
 @@ -1636,6 +1636,13 @@ int git_config_set_multivar_in_file(const char 
 *config_filename,
   MAP_PRIVATE, in_fd, 0);
   close(in_fd);

 + if (fchmod(fd, st.st_mode  0)  0) {
 + error(fchmod on %s failed: %s,
 + lock-filename, strerror(errno));
 + ret = CONFIG_NO_WRITE;
 + goto out_free;
 + }

 This introduces a severe failure in the Windows port because we do not
 implement fchmod. Existing fchmod invocations do not check the return
 value, and they are only interested in removing the write bits, and we
 generally don't care a lot if files remain writable.

 I'm not proficient enough to add any ACL fiddling to fchmod that would be
 required by the above change, whose purpose is to be strict about
 permissions. Nor am I interested (who the heck is sharing a Windows box
 anyway? ;-)

 Therefore, here's just a work-around patch to keep things going on
 Windows. Any opinions from the Windows corner?


Since we use MSVCRT's chmod implementation directly which only checks
for S_IWRITE,and Get/SetFileAttributes to simply set or clear the
FILE_ATTRIBUTE_READONLY-flag, perhaps we could do the same except
using Get/SetFileInformationByHandle instead? That takes us in a
better direction, IMO. Adding full ACL support seems like a bigger
project.

If there's no objection, I'll sketch up a patch for that...
--
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 v2] config: preserve config file permissions on edits

2014-05-19 Thread Erik Faye-Lund
On Mon, May 19, 2014 at 9:44 AM, Erik Faye-Lund kusmab...@gmail.com wrote:
 On Mon, May 19, 2014 at 9:13 AM, Johannes Sixt j.s...@viscovery.net wrote:
 Am 5/6/2014 2:17, schrieb Eric Wong:
 Users may already store sensitive data such as imap.pass in
 ..git/config; making the file world-readable when git config
 is called to edit means their password would be compromised
 on a shared system.

 [v2: updated for section renames, as noted by Junio]

 Signed-off-by: Eric Wong normalper...@yhbt.net
 ---
  config.c   | 16 
  t/t1300-repo-config.sh | 10 ++
  2 files changed, 26 insertions(+)

 diff --git a/config.c b/config.c
 index a30cb5c..c227aa8 100644
 --- a/config.c
 +++ b/config.c
 @@ -1636,6 +1636,13 @@ int git_config_set_multivar_in_file(const char 
 *config_filename,
   MAP_PRIVATE, in_fd, 0);
   close(in_fd);

 + if (fchmod(fd, st.st_mode  0)  0) {
 + error(fchmod on %s failed: %s,
 + lock-filename, strerror(errno));
 + ret = CONFIG_NO_WRITE;
 + goto out_free;
 + }

 This introduces a severe failure in the Windows port because we do not
 implement fchmod. Existing fchmod invocations do not check the return
 value, and they are only interested in removing the write bits, and we
 generally don't care a lot if files remain writable.

 I'm not proficient enough to add any ACL fiddling to fchmod that would be
 required by the above change, whose purpose is to be strict about
 permissions. Nor am I interested (who the heck is sharing a Windows box
 anyway? ;-)

 Therefore, here's just a work-around patch to keep things going on
 Windows. Any opinions from the Windows corner?


 Since we use MSVCRT's chmod implementation directly which only checks
 for S_IWRITE,and Get/SetFileAttributes to simply set or clear the
 FILE_ATTRIBUTE_READONLY-flag, perhaps we could do the same except
 using Get/SetFileInformationByHandle instead? That takes us in a
 better direction, IMO. Adding full ACL support seems like a bigger
 project.

 If there's no objection, I'll sketch up a patch for that...

OK, this turned out a bit more yucky than I assumed, because
SetFileInformationByHandle is only available on Windows Vista and up.
There's a static library (FileExtd.lib) that ships with MSVC that
emulates it for legacy support, I guess I should have a look at what
that does.
--
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 v2] config: preserve config file permissions on edits

2014-05-19 Thread Marius Storm-Olsen

On 5/19/2014 2:44 AM, Erik Faye-Lund wrote:

On Mon, May 19, 2014 at 9:13 AM, Johannes Sixt j.s...@viscovery.net
wrote:

I'm not proficient enough to add any ACL fiddling to fchmod that
would be required by the above change, whose purpose is to be
strict about permissions. Nor am I interested (who the heck is
sharing a Windows box anyway? ;-)


Since we use MSVCRT's chmod implementation directly which only
checks for S_IWRITE,and Get/SetFileAttributes to simply set or clear
the FILE_ATTRIBUTE_READONLY-flag, perhaps we could do the same
except using Get/SetFileInformationByHandle instead? That takes us in
a better direction, IMO. Adding full ACL support seems like a bigger
project.

If there's no objection, I'll sketch up a patch for that...


IMO, try to stay away from full ACL support, as ACL is slow as hell.
If it's only triggered in edge cases, that's fine, but be sure not to 
add any ACL in the main call-paths as it will surely kill performance.


The major speedup which was done by circumventing MSYS/Cygwin standard 
posix implementations was bypassing much of the ACL slowness.


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


  1   2   >