Skip to content

Commit 6b759a6

Browse files
committed
mingw: only use Bash-ism builtin pwd -W when available
Traditionally, Git for Windows' SDK uses Bash as its default shell. However, other Unix shells are available, too. Most notably, the Win32 port of BusyBox comes with `ash` whose `pwd` command already prints Windows paths as Git for Windows wants them, while there is not even a `builtin` command. Therefore, let's be careful not to override `pwd` unless we know that the `builtin` command is available. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent cbf074b commit 6b759a6

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

git-sh-setup.sh

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,10 +346,16 @@ case $(uname -s) in
346346
/usr/bin/find "$@"
347347
}
348348
fi
349-
# git sees Windows-style pwd
350-
pwd () {
351-
builtin pwd -W
352-
}
349+
# On Windows, Git wants Windows paths. But /usr/bin/pwd spits out
350+
# Unix-style paths. At least in Bash, we have a builtin pwd that
351+
# understands the -W option to force "mixed" paths, i.e. with drive
352+
# prefix but still with forward slashes. Let's use that, if available.
353+
if type builtin >/dev/null 2>&1
354+
then
355+
pwd () {
356+
builtin pwd -W
357+
}
358+
fi
353359
is_absolute_path () {
354360
case "$1" in
355361
[/\\]* | [A-Za-z]:*)

t/test-lib.sh

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,10 +1366,16 @@ case $uname_s in
13661366
/usr/bin/find "$@"
13671367
}
13681368
fi
1369-
# git sees Windows-style pwd
1370-
pwd () {
1371-
builtin pwd -W
1372-
}
1369+
# On Windows, Git wants Windows paths. But /usr/bin/pwd spits out
1370+
# Unix-style paths. At least in Bash, we have a builtin pwd that
1371+
# understands the -W option to force "mixed" paths, i.e. with drive
1372+
# prefix but still with forward slashes. Let's use that, if available.
1373+
if type builtin >/dev/null 2>&1
1374+
then
1375+
pwd () {
1376+
builtin pwd -W
1377+
}
1378+
fi
13731379
# no POSIX permissions
13741380
# backslashes in pathspec are converted to '/'
13751381
# exec does not inherit the PID

0 commit comments

Comments
 (0)