Skip to content

Commit

Permalink
mergetools: teach tortoisemerge to handle filenames with SP correctly
Browse files Browse the repository at this point in the history
TortoiseGitMerge, unlike TortoiseMerge, can be told to handle paths
with spaces in them by using -option "$FILE" (not -option:"$FILE",
which does not work for such paths) syntax.

This change was necessary because of MSYS path mangling [1], the ":"
after the "base" etc. arguments to TortoiseMerge caused the whole
argument instead of just the file name to be quoted in case of file
names with spaces. So TortoiseMerge was passed

    "-base:new file.txt"

instead of

    -base:"new file.txt"

(including the quotes). To work around this, TortoiseGitMerge does not
require the ":" after the arguments anymore which fixes handling file
names with spaces [2] (as written above).

[1] http://www.mingw.org/wiki/Posix_path_conversion
[2] https://github.com/msysgit/msysgit/issues/57

Signed-off-by: Sven Strickroth <email@cs-ware.de>
Reported-by: Sebastian Schuberth <sschuberth@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Sven Strickroth authored and Junio C Hamano committed Feb 2, 2013
1 parent 8bf6719 commit 81ed7b9
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions mergetools/tortoisemerge
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,17 @@ merge_cmd () {
if $base_present
then
touch "$BACKUP"
"$merge_tool_path" \
-base:"$BASE" -mine:"$LOCAL" \
-theirs:"$REMOTE" -merged:"$MERGED"
basename="$(basename "$merge_tool_path" .exe)"
if test "$basename" = "tortoisegitmerge"
then
"$merge_tool_path" \
-base "$BASE" -mine "$LOCAL" \
-theirs "$REMOTE" -merged "$MERGED"
else
"$merge_tool_path" \
-base:"$BASE" -mine:"$LOCAL" \
-theirs:"$REMOTE" -merged:"$MERGED"
fi
check_unchanged
else
echo "$merge_tool_path cannot be used without a base" 1>&2
Expand Down

0 comments on commit 81ed7b9

Please sign in to comment.