Add an is_absolute_path function to abstract out platform differences in checking for an absolute or relative path. Specifically fixes t4150-am on Windows. Signed-off-by: Pat Thoyts <patthoyts@xxxxxxxxxxxxxxxxxxxxx> --- In response to the following comment... >Johannes Sixt <j6t@xxxxxxxx> writes: >>> git-am: fix absolute path logic on Windows >> >>This mistakes a file that has a colon in the second position as absolute, even >>on non-Windows. IIUC, this patch is not intended for upstream git. >> This patch is an alternative solution that only tries the Windows paths on msysGit. This is_absolute_path might find use elsewhere in the future so I elected to place it in the sh-setup script. Also added support for identifying a UNC path as absolute. git-am.sh | 12 ++++++------ git-sh-setup.sh | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/git-am.sh b/git-am.sh index e7f008c..9317b38 100755 --- a/git-am.sh +++ b/git-am.sh @@ -444,12 +444,12 @@ else set x first= } - case "$arg" in - /*) - set "$@" "$arg" ;; - *) - set "$@" "$prefix$arg" ;; - esac + if is_absolute_path "$arg" + then + set "$@" "$arg" + else + set "$@" "$prefix$arg" + fi done shift fi diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 6131670..b9eb0bf 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -209,5 +209,20 @@ case $(uname -s) in find () { /usr/bin/find "$@" } + is_absolute_path () { + case "$1" in + /* | ?:* | \\\\*) + return 0 ;; + esac + return 1 + } ;; +*) + is_absolute_path () { + case "$1" in + /*) + return 0 ;; + esac + return 1 + } esac -- 1.7.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html