Subject: Re: [PATCH] git-am: Pass the --directory option through to git-apply

From: Junio C Hamano <[email-masked]>
Date: Sat, 30 Aug 2008 23:30:30 -0700

Kevin Ballard <[email-masked]> writes:

> diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
> index b9c6fac..64c8178 100644
> --- a/Documentation/git-am.txt
> +++ b/Documentation/git-am.txt
> @@ -66,6 +66,7 @@ default.   You could use `--no-utf8` to override this.
>  
>  -C<n>::
>  -p<n>::
> +--directory=<root>::
>  	These flags are passed to the 'git-apply' (see linkgit:git-apply[1])
>  	program that applies
>  	the patch.
> diff --git a/git-am.sh b/git-am.sh
> index aa60261..7e7a86f 100755
> --- a/git-am.sh
> +++ b/git-am.sh
> @@ -18,6 +18,7 @@ k,keep          pass -k flag to git-mailinfo
>  whitespace=     pass it through git-apply
>  C=              pass it through git-apply
>  p=              pass it through git-apply
> +directory=      pass it through git-apply
>  resolvemsg=     override error message when patch failure occurs
>  r,resolved      to be used after a patch failure
>  skip            skip the current patch
> @@ -155,7 +156,7 @@ do
>  		;;
>  	--resolvemsg)
>  		shift; resolvemsg=$1 ;;
> -	--whitespace)
> +	--whitespace|--directory)
>  		git_apply_opt="$git_apply_opt $1=$2"; shift ;;
>  	-C|-p)
>  		git_apply_opt="$git_apply_opt $1$2"; shift ;;

Thanks, will queue.

This inherits an ancient breakage that was introduced to the --whitespace
option by 67dad68 (add -C[NUM] to git-am, 2007-02-08), in that you need to
give the next "git am" session the same option when you get a conflict and
need to restart.  We should fix this ancient breakage by recording the
miscellaneous options that we append to $git_apply_opt variable (we should
remove the use of "$dotest/whitespace" that is now a no-op but 67dad68 did
not remove).  That is a separate topic anyway, but the end result should:

 * Save the options in effect in $dotest/, just like "sign", "utf8" and
   "keep" are kept;

 * Upon command startup, read the saved options, and then let the command
   line options override them (which is not what the current code does, by
   the way);

so that you can give necessary --directory, --whitespace, -C etc. options
when you feed your series to "git-am", and after fixing up a rejected
patch, you can continue without typing the same set of options again.