From: "Santi Béjar" <sbejar@gmail.com>
To: Git Mailing List <git@vger.kernel.org>
Subject: [RFC/PATCH] Per branch properties for pull
Date: Fri, 21 Jul 2006 16:51:53 +0200 [thread overview]
Message-ID: <87hd1b9fjq.fsf@gmail.com> (raw)
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@gmail.com>
---
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
next reply other threads:[~2006-07-21 14:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-07-21 14:51 Santi Béjar [this message]
2006-07-24 7:31 ` [RFC/PATCH] Per branch properties for pull Junio C Hamano
2006-07-24 12:58 ` Santi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87hd1b9fjq.fsf@gmail.com \
--to=sbejar@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).