-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix subtree on Windows #3264
Fix subtree on Windows #3264
Conversation
e061cfa
to
fad2b68
Compare
fad2b68
to
4e1a569
Compare
GitGitGadget companion: gitgitgadget#978. |
4e1a569
to
7ff2c16
Compare
In 22d5507 (subtree: don't fuss with PATH, 2021-04-27), `git subtree` was broken thoroughly on Windows. The reason is that it assumes Unix semantics, where `PATH` is colon-separated, and it assumes that `$GIT_EXEC_PATH:` is a verbatim prefix of `$PATH`. Neither are true, the latter in particular because `GIT_EXEC_PATH` is a Windows-style path, while `PATH` is a Unix-style path list. Let's make extra certain that `$GIT_EXEC_PATH` and the first component of `$PATH` refer to different entities before erroring out. We do that by using the `test <path1> -ef <path2>` command that verifies that the inode of `<path1>` and of `<path2>` is the same. Sadly, this construct is non-portable, according to https://pubs.opengroup.org/onlinepubs/009695399/utilities/test.html. However, it does not matter in practice because we still first look whether `$GIT_EXEC_PREFIX` is string-identical to the first component of `$PATH`. This will give us the expected result everywhere but in Git for Windows, and Git for Windows' own Bash _does_ handle the `-ef` operator. Just in case that we _do_ need to show the error message _and_ are running in a shell that lacks support for `-ef`, we simply suppress the error output for that part. This fixes git-for-windows#3260 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
On Windows, both forward and backslash are valid separators. In 22d5507 (subtree: don't fuss with PATH, 2021-04-27), however, we added code that assumes that it can only be the forward slash. Let's fix that. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
7ff2c16
to
a6f7aa4
Compare
This topic has finally advanced to upstream's |
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
Fix subtree on Windows
I still have issues on Windows
I'm using a bash (git bash) and there are multiple cases where the issue reproduces. Case 1 a) from bash terminal command "git subtree" results correctly
Case 2 a) from bash terminal command "git subtree" results correctly
Case 3 a) from bash terminal command "git subtree" results correctly
Case 4 a) from bash terminal command "git subtree" end up with:
b) when i run
Case 5 a) from bash terminal command "git subtree" end up with:
b) when i run
And the cherry on the pie - almost in all use cases Windows Powershell executes all commands correctly (both in shell and inside npm task) Any thoughts ? |
That error message comes from here. If I were you, I would edit |
Please note that it is recommended to add |
This fixes #3260.