* Windows path handling changed between versions
@ 2015-09-01 16:55 Geofrey Sanders
2015-09-01 17:30 ` Johannes Schindelin
0 siblings, 1 reply; 3+ messages in thread
From: Geofrey Sanders @ 2015-09-01 16:55 UTC (permalink / raw)
To: git
I recently upgraded from Windows Git 1.6.2 to 2.5.0 and found myself
unable to rebase. Turns out paths didn't used to be case-sensitive and
now they are, causing a number of operations to halt. A repo created
by pointing at the directory
c:\core\guidewire\Dev\2.4
would (I suppose) technically have been invalid the whole time because
Windows reports the current path as
C:\core\guidewire\Dev\2.4
, but msys Git 1.6.2 evidently made a case-insensitive path comparison
so the discrepancy was suppressed.
The proximate cause of errors was
git rev-parse --is-inside-work-tree
which would output 'false' even inside the working tree.
"--is-inside-git-dir" also printed 'false' in directories where it
should have said 'true'. I actually missed the problem in plain sight
at first, because I created a new repo (in which everything worked as
expected), and then did a directory diff... the worktree paths were
different but I only noticed the names, not the case difference in the
drive letter. More details in this SO question:
http://stackoverflow.com/q/32280644/2835086
I was able to repair my existing repos by changing the 'worktree'
value in gitconfig - s/c/C/ did the trick - but the whole thing was a
surprise.
Is this a bug in the current version? Windows doesn't distinguish on
case, so maybe applications shouldn't either.
Was this a bug in the prior version? Maybe creating a repo with a
worktree path that doesn't match the file system should have been an
error from the very beginning.
Was this user error? Maybe I did something wrong and should have known
better, but got away with it for a while.
Any feedback welcome,
-gws
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Windows path handling changed between versions
2015-09-01 16:55 Windows path handling changed between versions Geofrey Sanders
@ 2015-09-01 17:30 ` Johannes Schindelin
2015-09-01 19:10 ` Geofrey Sanders
0 siblings, 1 reply; 3+ messages in thread
From: Johannes Schindelin @ 2015-09-01 17:30 UTC (permalink / raw)
To: Geofrey Sanders; +Cc: git
Hi Geofrey,
On 2015-09-01 18:55, Geofrey Sanders wrote:
> I recently upgraded from Windows Git 1.6.2 to 2.5.0 and found myself
> unable to rebase. Turns out paths didn't used to be case-sensitive and
> now they are, causing a number of operations to halt. A repo created
> by pointing at the directory
> c:\core\guidewire\Dev\2.4
> would (I suppose) technically have been invalid the whole time because
> Windows reports the current path as
> C:\core\guidewire\Dev\2.4
> , but msys Git 1.6.2 evidently made a case-insensitive path comparison
> so the discrepancy was suppressed.
Are you sure about that? I seem to recall that `pwd` changed behavior between MSys and MSys2, but Git never made case-insensitive comparisons.
It might help me to understand what is going on if I could have preciser information. What exactly do you mean by "A repo created by pointing at ..."? Could you type out the Git commands you used?
> The proximate cause of errors was
> git rev-parse --is-inside-work-tree
> which would output 'false' even inside the working tree.
Ah, you are apparently talking about a worktree separate from your repository?
> "--is-inside-git-dir" also printed 'false' in directories where it
> should have said 'true'.
Again, I really need preciser information about this: *How* did you end up in that directory? Did you use Git Bash or Git CMD? Did you call `cd` with a relative path, a POSIX path or a POSIX-ified full DOS path?
> I actually missed the problem in plain sight
> at first, because I created a new repo (in which everything worked as
> expected), and then did a directory diff... the worktree paths were
> different but I only noticed the names, not the case difference in the
> drive letter. More details in this SO question:
> http://stackoverflow.com/q/32280644/2835086
Please understand that I have a lot of tickets to juggle about and that it is a bit unfair to send me onto a goose chase. I would have preferred a proper GitHub issue, as the "Contribute" section of https://git-for-windows.github.io/ explicitly asks for, but I am okay with discussing this ticket on the mailing list. But studying a StackOverflow thread in addition is a bit much... next, people would ask me to search their Twitter feed for the little tid bit of information I need to help.
So please summarize that StackOverflow question, and while we are at it: StackOverflow suggests coming up with a Minimal, Complete and Verifiable Example. That would be a nice thing to have. Maybe you find it in you to come up with that MCVE.
> I was able to repair my existing repos by changing the 'worktree'
> value in gitconfig - s/c/C/ did the trick - but the whole thing was a
> surprise.
>
> Is this a bug in the current version? Windows doesn't distinguish on
> case, so maybe applications shouldn't either.
> Was this a bug in the prior version? Maybe creating a repo with a
> worktree path that doesn't match the file system should have been an
> error from the very beginning.
> Was this user error? Maybe I did something wrong and should have known
> better, but got away with it for a while.
I think there is a good chance we can fix this, although a 1.x -> 2.x jump always suggests that certain things change in a backwards-incompatible manner.
Looking forward to more detailed information and that MCVE,
Johannes
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Windows path handling changed between versions
2015-09-01 17:30 ` Johannes Schindelin
@ 2015-09-01 19:10 ` Geofrey Sanders
0 siblings, 0 replies; 3+ messages in thread
From: Geofrey Sanders @ 2015-09-01 19:10 UTC (permalink / raw)
To: git
I can (eventually) make a proper bug report,in the mean time I'll
address a few particulars:
* I've been using git from regular CMD with Git's bin/ in my path. Not Git Bash.
* I created a new repo by cloning, giving an absolute path for the
working tree location. This is the line from the script I used:
git clone --separate-git-dir c:\dev\git\%branch% -o MAIN
c:\core\guidewire\MAIN c:\core\guidewire\%branch%
** Yes, the working tree and gitdir are in separate locations. (I
don't think this would have made a difference.)
* I verified the case-sensitivity problem by comparing cd-ing (in
regular CMD) to absolute paths with upper- and lower-case drive
letters. Starting with 'C' made the rev-parse predicates give the
expected answers.
It was not my intention to drop a bunch of work on you or anyone; I'm
sorry it sounded that way! I started out with an email here on the
advice of https://git-scm.com/community. Day-job permitting, I'll
reinstall 1.6.2 and determine the minimum steps to demonstrate the
problem as I originally observed it. When I've got reproducible test
steps, should I open a bug on Github, or come back here?
And finally, if you tell me outright this was all my own fault for
typing the paths wrongly I won't be offended : )
-gws
On Tue, Sep 1, 2015 at 1:30 PM, Johannes Schindelin
<johannes.schindelin@gmx.de> wrote:
> Hi Geofrey,
>
> On 2015-09-01 18:55, Geofrey Sanders wrote:
>> I recently upgraded from Windows Git 1.6.2 to 2.5.0 and found myself
>> unable to rebase. Turns out paths didn't used to be case-sensitive and
>> now they are, causing a number of operations to halt. A repo created
>> by pointing at the directory
>> c:\core\guidewire\Dev\2.4
>> would (I suppose) technically have been invalid the whole time because
>> Windows reports the current path as
>> C:\core\guidewire\Dev\2.4
>> , but msys Git 1.6.2 evidently made a case-insensitive path comparison
>> so the discrepancy was suppressed.
>
> Are you sure about that? I seem to recall that `pwd` changed behavior between MSys and MSys2, but Git never made case-insensitive comparisons.
>
> It might help me to understand what is going on if I could have preciser information. What exactly do you mean by "A repo created by pointing at ..."? Could you type out the Git commands you used?
>
>> The proximate cause of errors was
>> git rev-parse --is-inside-work-tree
>> which would output 'false' even inside the working tree.
>
> Ah, you are apparently talking about a worktree separate from your repository?
>
>> "--is-inside-git-dir" also printed 'false' in directories where it
>> should have said 'true'.
>
> Again, I really need preciser information about this: *How* did you end up in that directory? Did you use Git Bash or Git CMD? Did you call `cd` with a relative path, a POSIX path or a POSIX-ified full DOS path?
>
>> I actually missed the problem in plain sight
>> at first, because I created a new repo (in which everything worked as
>> expected), and then did a directory diff... the worktree paths were
>> different but I only noticed the names, not the case difference in the
>> drive letter. More details in this SO question:
>> http://stackoverflow.com/q/32280644/2835086
>
> Please understand that I have a lot of tickets to juggle about and that it is a bit unfair to send me onto a goose chase. I would have preferred a proper GitHub issue, as the "Contribute" section of https://git-for-windows.github.io/ explicitly asks for, but I am okay with discussing this ticket on the mailing list. But studying a StackOverflow thread in addition is a bit much... next, people would ask me to search their Twitter feed for the little tid bit of information I need to help.
>
> So please summarize that StackOverflow question, and while we are at it: StackOverflow suggests coming up with a Minimal, Complete and Verifiable Example. That would be a nice thing to have. Maybe you find it in you to come up with that MCVE.
>
>> I was able to repair my existing repos by changing the 'worktree'
>> value in gitconfig - s/c/C/ did the trick - but the whole thing was a
>> surprise.
>>
>> Is this a bug in the current version? Windows doesn't distinguish on
>> case, so maybe applications shouldn't either.
>> Was this a bug in the prior version? Maybe creating a repo with a
>> worktree path that doesn't match the file system should have been an
>> error from the very beginning.
>> Was this user error? Maybe I did something wrong and should have known
>> better, but got away with it for a while.
>
> I think there is a good chance we can fix this, although a 1.x -> 2.x jump always suggests that certain things change in a backwards-incompatible manner.
>
> Looking forward to more detailed information and that MCVE,
> Johannes
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-09-01 19:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-01 16:55 Windows path handling changed between versions Geofrey Sanders
2015-09-01 17:30 ` Johannes Schindelin
2015-09-01 19:10 ` Geofrey Sanders
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).