diff options
Diffstat (limited to 'git-submodule.sh')
| -rwxr-xr-x | git-submodule.sh | 37 | 
1 files changed, 23 insertions, 14 deletions
| diff --git a/git-submodule.sh b/git-submodule.sh index 77d223292c..2dd372a21d 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -222,7 +222,7 @@ cmd_add()  		module_clone "$path" "$realrepo" "$reference" || exit  		( -			unset GIT_DIR +			clear_local_git_env  			cd "$path" &&  			# ash fails to wordsplit ${branch:+-b "$branch"...}  			case "$branch" in @@ -278,7 +278,7 @@ cmd_foreach()  			name=$(module_name "$path")  			(  				prefix="$prefix$path/" -				unset GIT_DIR +				clear_local_git_env  				cd "$path" &&  				eval "$@" &&  				if test -n "$recursive" @@ -434,7 +434,7 @@ cmd_update()  			module_clone "$path" "$url" "$reference"|| exit  			subsha1=  		else -			subsha1=$(unset GIT_DIR; cd "$path" && +			subsha1=$(clear_local_git_env; cd "$path" &&  				git rev-parse --verify HEAD) ||  			die "Unable to find current revision in submodule path '$path'"  		fi @@ -454,7 +454,7 @@ cmd_update()  			if test -z "$nofetch"  			then -				(unset GIT_DIR; cd "$path" && +				(clear_local_git_env; cd "$path" &&  					git-fetch) ||  				die "Unable to fetch in submodule path '$path'"  			fi @@ -477,14 +477,14 @@ cmd_update()  				;;  			esac -			(unset GIT_DIR; cd "$path" && $command "$sha1") || +			(clear_local_git_env; cd "$path" && $command "$sha1") ||  			die "Unable to $action '$sha1' in submodule path '$path'"  			say "Submodule path '$path': $msg '$sha1'"  		fi  		if test -n "$recursive"  		then -			(unset GIT_DIR; cd "$path" && cmd_update $orig_args) || +			(clear_local_git_env; cd "$path" && cmd_update $orig_args) ||  			die "Failed to recurse into submodule path '$path'"  		fi  	done @@ -492,7 +492,7 @@ cmd_update()  set_name_rev () {  	revname=$( ( -		unset GIT_DIR +		clear_local_git_env  		cd "$1" && {  			git describe "$2" 2>/dev/null ||  			git describe --tags "$2" 2>/dev/null || @@ -553,12 +553,17 @@ cmd_summary() {  	test $summary_limit = 0 && return -	if rev=$(git rev-parse -q --verify "$1^0") +	if rev=$(git rev-parse -q --verify --default HEAD ${1+"$1"})  	then  		head=$rev -		shift +		test $# = 0 || shift +	elif test -z "$1" -o "$1" = "HEAD" +	then +		# before the first commit: compare with an empty tree +		head=$(git hash-object -w -t tree --stdin </dev/null) +		test -z "$1" || shift  	else -		head=HEAD +		head="HEAD"  	fi  	if [ -n "$files" ] @@ -688,7 +693,11 @@ cmd_summary() {  		echo  	done |  	if test -n "$for_status"; then -		echo "# Modified submodules:" +		if [ -n "$files" ]; then +			echo "# Submodules changed but not updated:" +		else +			echo "# Submodule changes to be committed:" +		fi  		echo "#"  		sed -e 's|^|# |' -e 's|^# $|#|'  	else @@ -753,7 +762,7 @@ cmd_status()  		else  			if test -z "$cached"  			then -				sha1=$(unset GIT_DIR; cd "$path" && git rev-parse --verify HEAD) +				sha1=$(clear_local_git_env; cd "$path" && git rev-parse --verify HEAD)  				set_name_rev "$path" "$sha1"  			fi  			say "+$sha1 $displaypath$revname" @@ -763,7 +772,7 @@ cmd_status()  		then  			(  				prefix="$displaypath/" -				unset GIT_DIR +				clear_local_git_env  				cd "$path" &&  				cmd_status $orig_args  			) || @@ -814,7 +823,7 @@ cmd_sync()  		if test -e "$path"/.git  		then  		( -			unset GIT_DIR +			clear_local_git_env  			cd "$path"  			remote=$(get_default_remote)  			say "Synchronizing submodule url for '$name'" | 
