mergetool--lib: improve support for vimdiff-style tool variants
The merge tools vimdiff2, vimdiff3, gvimdiff2, gvimdiff3 and bc3 are all variants of the main tools vimdiff and bc. They are implemented in the main and a one-liner script that just sources it exist for each. Allow variants ending in [0-9] to be correctly wired without the need for such one-liners, so instead of 5 scripts, only 1 (gvimdiff) is needed. Signed-off-by: pudinha <rogi@skylittlesystem.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
							parent
							
								
									47ae905ffb
								
							
						
					
					
						commit
						83bbf9b92e
					
				|  | @ -43,7 +43,14 @@ show_tool_names () { | |||
|  | ||||
| 	shown_any= | ||||
| 	( cd "$MERGE_TOOLS_DIR" && ls ) | { | ||||
| 		while read toolname | ||||
| 		while read scriptname | ||||
| 		do | ||||
| 			setup_tool "$scriptname" 2>/dev/null | ||||
| 			variants="$variants$(list_tool_variants)\n" | ||||
| 		done | ||||
| 		variants="$(echo "$variants" | sort | uniq)" | ||||
|  | ||||
| 		for toolname in $variants | ||||
| 		do | ||||
| 			if setup_tool "$toolname" 2>/dev/null && | ||||
| 				(eval "$condition" "$toolname") | ||||
|  | @ -157,6 +164,10 @@ setup_tool () { | |||
| 		echo "$1" | ||||
| 	} | ||||
|  | ||||
| 	list_tool_variants () { | ||||
| 		echo "$tool" | ||||
| 	} | ||||
|  | ||||
| 	# Most tools' exit codes cannot be trusted, so By default we ignore | ||||
| 	# their exit code and check the merged file's modification time in | ||||
| 	# check_unchanged() to determine whether or not the merge was | ||||
|  | @ -178,19 +189,26 @@ setup_tool () { | |||
| 		false | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	if ! test -f "$MERGE_TOOLS_DIR/$tool" | ||||
| 	if test -f "$MERGE_TOOLS_DIR/$tool" | ||||
| 	then | ||||
| 		. "$MERGE_TOOLS_DIR/$tool" | ||||
| 	elif test -f "$MERGE_TOOLS_DIR/${tool%[0-9]}" | ||||
| 	then | ||||
| 		. "$MERGE_TOOLS_DIR/${tool%[0-9]}" | ||||
| 	else | ||||
| 		setup_user_tool | ||||
| 		return $? | ||||
| 	fi | ||||
|  | ||||
| 	# Load the redefined functions | ||||
| 	. "$MERGE_TOOLS_DIR/$tool" | ||||
| 	# Now let the user override the default command for the tool.  If | ||||
| 	# they have not done so then this will return 1 which we ignore. | ||||
| 	setup_user_tool | ||||
|  | ||||
| 	if ! list_tool_variants | grep -q "^$tool$" | ||||
| 	then | ||||
| 		return 1 | ||||
| 	fi | ||||
|  | ||||
| 	if merge_mode && ! can_merge | ||||
| 	then | ||||
| 		echo "error: '$tool' can not be used to resolve merges" >&2 | ||||
|  |  | |||
|  | @ -21,3 +21,8 @@ translate_merge_tool_path() { | |||
| 		echo bcompare | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| list_tool_variants () { | ||||
| 	echo bc | ||||
| 	echo bc3 | ||||
| } | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| . "$MERGE_TOOLS_DIR/bc" | ||||
|  | @ -1 +0,0 @@ | |||
| . "$MERGE_TOOLS_DIR/vimdiff" | ||||
|  | @ -1 +0,0 @@ | |||
| . "$MERGE_TOOLS_DIR/vimdiff" | ||||
|  | @ -46,3 +46,11 @@ translate_merge_tool_path() { | |||
| exit_code_trustable () { | ||||
| 	true | ||||
| } | ||||
|  | ||||
| list_tool_variants () { | ||||
| 	for prefix in '' g; do | ||||
| 		for suffix in '' 2 3; do | ||||
| 			echo "${prefix}vimdiff${suffix}" | ||||
| 		done | ||||
| 	done | ||||
| } | ||||
|  |  | |||
|  | @ -1 +0,0 @@ | |||
| . "$MERGE_TOOLS_DIR/vimdiff" | ||||
|  | @ -1 +0,0 @@ | |||
| . "$MERGE_TOOLS_DIR/vimdiff" | ||||
		Loading…
	
		Reference in New Issue
	
	 pudinha
						pudinha