It extracts all the information for pull from the config file. If you have a config file as: [branch "master"] remote=origin merge=next #the remote name octopus=octopus twohead=recursive When doing a "git pull" without extra parameters in the master branch it will fetch the origin remote repository and will merge the next branch (the remote name). And you can also put the equivalent of the pull.{octopus,twohead} options for each branch. This only changes the behavour when these keys exist and when git-pull is used without extra parameters. Signed-off-by: Santi Béjar <sbejar@xxxxxxxxx> --- Hi *, Now that we have the arbitrary keys in the config file... It does not affect the integrator that pulls from different places. I don't know exactly what is needed but just for discuss it could be something as: [branch "master"] remote=net remote=ata merge=for-linus from ata merge=upstream from net diff --git a/git-pull.sh b/git-pull.sh index f380437..e7630b1 100755 --- a/git-pull.sh +++ b/git-pull.sh @@ -44,6 +44,14 @@ do shift done +if [ $# -eq 0 ] ; then + default=yes + curr_branch=$(git-symbolic-ref HEAD) + curr_branch=${curr_branch##refs/heads/} + remote=$(git-repo-config --get "branch.$curr_branch.remote") + test "$remote" && set x "$remote" && shift +fi + orig_head=$(git-rev-parse --verify HEAD) || die "Pulling into a black hole?" git-fetch --update-head-ok --reflog-action=pull "$@" || exit 1 @@ -70,9 +78,19 @@ to recover.' fi +if [ "$default" == yes ] ; then + merge_head=$(git repo-config --get-all "branch.$curr_branch.merge") + for ref in $merge_head ; do + refspec=$(git-repo-config --get "remote.$remote.fetch" "^$ref:") + [ -z "$refspec" ] && die "Branch $ref does not exist in the repository: $remote." + locref="$locref ${refspec##$ref:}" + done + merge_head=$locref +else merge_head=$(sed -e '/ not-for-merge /d' \ -e 's/ .*//' "$GIT_DIR"/FETCH_HEAD | \ tr '\012' ' ') +fi case "$merge_head" in '') @@ -85,6 +103,11 @@ case "$merge_head" in then strategy_default_args="-s $var" fi + var=`git-repo-config --get branch.$curr_branch.octopus` + if test -n "$var" + then + strategy_default_args="-s $var" + fi ;; *) var=`git-repo-config --get pull.twohead` @@ -92,6 +115,11 @@ case "$merge_head" in then strategy_default_args="-s $var" fi + var=`git-repo-config --get branch.$curr_branch.twohead` + if test -n "$var" + then + strategy_default_args="-s $var" + fi ;; esac - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html