Skip to content
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

Merged
merged 2 commits into from
Jul 5, 2021
Merged

Commits on Jun 14, 2021

  1. subtree: fix the GIT_EXEC_PATH sanity check to work on Windows

    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>
    dscho committed Jun 14, 2021
    Configuration menu
    Copy the full SHA
    5f2d943 View commit details
    Browse the repository at this point in the history
  2. subtree: fix assumption about the directory separator

    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>
    dscho committed Jun 14, 2021
    Configuration menu
    Copy the full SHA
    a6f7aa4 View commit details
    Browse the repository at this point in the history