threads / bug / 35369

Bug: Pathspec parsing on Windows fails when branch specified

Subject: Bug: Pathspec parsing on Windows fails when branch specified

## tl;dr

2 messages between Nov 20, 2013 and Nov 20, 2013.

replies: 1people: 2as markdown or json

Eris Belew· Nov 20, 2013, 21:09 UTC · lore
System: Windows Server 2008 R2
Git: git version 1.8.4.msysgit.0
Shell: Powershell V3 (No third-party modules loaded)
Summary:
  When specifying a pathspec including a branch/commit, path separator
characters are not translated. Since tab-completion in windows shells (ex:
CMD, PowerShell, not unix-style shells running on windows) uses the windows
path separator, and other git commands work fine with the windows path
separator, the expected behavior would be to translate for me.
Reproduction:
    git diff BRANCH:path\to\file path\to\file
Result:
    fatal: Path 'path\to\file' does not exist in 'BRANCH'
Expected:
    Normal diff operation
Workaround:
    Manually convert pathspec. Examples of working command:
        git diff BRANCH:path/to/file path\to\otherfile
        git diff BRANCH:path/to/file path/to/otherfile
Thanks,
Eris
Johannes Sixt· Nov 20, 2013, 22:12 UTC · re: Eris Belew · lore

Re: Bug: Pathspec parsing on Windows fails when branch specified

Am 20.11.2013 22:09, schrieb Eris Belew:
Show 24 quoted lines
> System: Windows Server 2008 R2
> Git: git version 1.8.4.msysgit.0
> Shell: Powershell V3 (No third-party modules loaded)
> 
> Summary:
>   When specifying a pathspec including a branch/commit, path separator
> characters are not translated. Since tab-completion in windows shells (ex:
> CMD, PowerShell, not unix-style shells running on windows) uses the windows
> path separator, and other git commands work fine with the windows path
> separator, the expected behavior would be to translate for me.
> 
> Reproduction:
>     git diff BRANCH:path\to\file path\to\file
> 
> Result:
>     fatal: Path 'path\to\file' does not exist in 'BRANCH'
> 
> Expected:
>     Normal diff operation
> 
> Workaround:
>     Manually convert pathspec. Examples of working command:
>         git diff BRANCH:path/to/file path\to\otherfile
>         git diff BRANCH:path/to/file path/to/otherfile

That's not a bug, it is expected behavior. "BRANCH:path/to/file" is not "file on disk" syntax, but Git's syntax to reference a particular object in the database. For this reason, forward-slashes are mandated; there is no option to use backslashes in this case.

Backslashes could actually be part of directory and file names in the database. It would be impossible to check out a tree with such names on Windows, obviously.

-- Hannes

← back to recent threads