68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			68 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| # Copyright (C) 2005 Junio C Hamano
 | |
| #
 | |
| # This script is designed to emulate what the built-in diff driver
 | |
| # does when set as GIT_EXTERNAL_SCRIPT.
 | |
| 
 | |
| case "$#" in
 | |
| 1)
 | |
|     echo "* Unmerged path $1"
 | |
|     exit 0 ;;
 | |
| *)
 | |
|     name1="$1" tmp1="$2" hex1="$3" mode1="$4" tmp2="$5" hex2="$6" mode2="$7"
 | |
|     case "$#" in
 | |
|     7)
 | |
| 	name2="$name1" ;;
 | |
|     9)
 | |
| 	name2="$8" xfrm_msg="$9" ;;
 | |
|     esac ;;	
 | |
| esac
 | |
| 
 | |
| show_create () {
 | |
|     name_="$1" tmp_="$2" hex_="$3" mode_="$4"
 | |
|     echo "diff --git a/$name_ b/$name_"
 | |
|     echo "new file mode $mode_"
 | |
|     diff ${GIT_DIFF_OPTS-'-pu'} -L /dev/null -L "b/$name_" /dev/null "$tmp_"
 | |
| }
 | |
| 
 | |
| show_delete () {
 | |
|     name_="$1" tmp_="$2" hex_="$3" mode_="$4"
 | |
|     echo "diff --git a/$name_ b/$name_"
 | |
|     echo "deleted file mode $mode_"
 | |
|     diff ${GIT_DIFF_OPTS-'-pu'} -L "a/$name_" -L /dev/null "$tmp_" /dev/null
 | |
| }
 | |
| 
 | |
| case "$mode1" in
 | |
| 120*) type1=l ;;
 | |
| 100*) type1=f ;;
 | |
| .)    show_create "$name2" "$tmp2" "$hex2" "$mode2"
 | |
|       exit 0 ;;
 | |
| esac
 | |
| case "$mode2" in
 | |
| 120*) type2=l ;;
 | |
| 100*) type2=f ;;
 | |
| .)    show_delete "$name1" "$tmp1" "$hex1" "$mode1"
 | |
|       exit 0 ;;
 | |
| esac
 | |
| 
 | |
| if test "$type1" != "$type2"
 | |
| then
 | |
| 	show_delete "$name1" "$tmp1" "$hex1" "$mode1"
 | |
| 	show_create "$name2" "$tmp2" "$hex2" "$mode2"
 | |
| 	exit 0
 | |
| fi
 | |
| 
 | |
| echo diff --git "a/$name1" "b/$name2"
 | |
| if test "$mode1" != "$mode2"
 | |
| then
 | |
|     echo "old mode $mode1"
 | |
|     echo "new mode $mode2"
 | |
|     if test "$xfrm_msg" != ""
 | |
|     then
 | |
| 	echo "$xfrm_msg"
 | |
|     fi
 | |
| fi
 | |
| diff ${GIT_DIFF_OPTS-'-pu'} -L "a/$name1" -L "b/$name2" "$tmp1" "$tmp2"
 | |
| exit 0
 | |
| 
 |