From: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
To: "Santi Béjar" <sbejar@gmail.com>
Cc: "Junio C Hamano" <junkio@cox.net>,
"Aneesh Kumar K.V" <aneesh.kumar@gmail.com>,
"Johannes Schindelin" <Johannes.Schindelin@gmx.de>,
git@vger.kernel.org
Subject: [PATCH] Add branch.*.localmerge and documentation update
Date: Fri, 8 Dec 2006 20:12:18 +0100 [thread overview]
Message-ID: <200612082012.19167.Josef.Weidendorfer@gmx.de> (raw)
In-Reply-To: <200612081823.45565.Josef.Weidendorfer@gmx.de>
Clarify the meaning of branch.*.merge option and add a similar
branch.*.localmerge option, which can be used to specify a local
tracking branch to be merged by default.
Previously, if branch.*.merge was specified but did not match any
ref, the message "No changes." was not really helpful regarding
the misconfiguration. This now gives a warning.
The value of branch.*.merge can be a list to get an octopus
merge. I chose the same way for branch.*.localmerge, and if
you specify both options, the octopus merge will have even
more parents ;-)
Signed-off-by: Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
---
This implements to branch.*.localmerge option as counterpart
to branch.*.merge as discussed.
To get the "No default merge when any branch.*.(local)merge is given,
but not in current branch" feature, what is the way to check this,
as git-repo-config can not match with regexps against config keys?
Josef
Documentation/config.txt | 23 +++++++++++++++++++++--
git-parse-remote.sh | 40 +++++++++++++++++++++++++++++++---------
2 files changed, 52 insertions(+), 11 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 9090762..6e19130 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -125,10 +125,29 @@ apply.whitespace::
branch.<name>.remote::
When in branch <name>, it tells `git fetch` which remote to fetch.
+ If this option is not given, `git fetch` defaults to "origin".
branch.<name>.merge::
- When in branch <name>, it tells `git fetch` the default remote branch
- to be merged.
+ When in branch <name>, it tells `git fetch` the default refspec to
+ be marked for merging in FETCH_HEAD. The value has to exactly
+ match a remote part of the refspecs which are fetched from the remote
+ repository given by "branch.<name>.remote".
+ The merge information is used by `git pull` (which first calls
+ `git fetch`) for the default merge action.
+ Without this or a "branch.<name>.localmerge" option, `git pull` defaults to
+ the first refspec fetched.
+ Specify multiple values to get an octopus merge.
+
+branch.<name>.localmerge::
+ When in branch <name>, it tells `git fetch` the default refspec to
+ be marked for merging in FETCH_HEAD. The value has to exactly
+ match a local part (i.e. the local tracking branch) of the refspecs
+ which are fetched from the remote repository given by "branch.<name>.remote".
+ The merge information is used by `git pull` (which first calls
+ `git fetch`) for the default merge action.
+ Without this or a "branch.<name>.merge" option, `git pull` defaults to the
+ first refspec fetched.
+ Specify multiple values to get an octopus merge.
pager.color::
A boolean to enable/disable colored output when the pager is in
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index da064a5..08ab272 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -133,7 +133,9 @@ canon_refs_list_for_fetch () {
# leave the branches in branch.${curr_branch}.merge alone,
# or the first one otherwise; add prefix . to the rest
# to prevent the secondary branches to be merged by default.
- merge_branches=
+ merge_remotebranches=
+ merge_localbranches=
+ found_mergerefs=
if test "$1" = "-d"
then
shift ; remote="$1" ; shift
@@ -141,8 +143,10 @@ canon_refs_list_for_fetch () {
then
curr_branch=$(git-symbolic-ref HEAD | \
sed -e 's|^refs/heads/||')
- merge_branches=$(git-repo-config \
+ merge_remotebranches=$(git-repo-config \
--get-all "branch.${curr_branch}.merge")
+ merge_localbranches=$(git-repo-config \
+ --get-all "branch.${curr_branch}.localmerge")
fi
set x $(expand_refs_wildcard "$@")
shift
@@ -160,17 +164,31 @@ canon_refs_list_for_fetch () {
remote=$(expr "z$ref" : 'z\([^:]*\):')
local=$(expr "z$ref" : 'z[^:]*:\(.*\)')
dot_prefix=.
- if test -z "$merge_branches"
+ if test ! -z "$merge_remotebranches"
then
- merge_branches=$remote
- dot_prefix=
- else
- for merge_branch in $merge_branches
+ for merge_branch in $merge_remotebranches
do
- [ "$remote" = "$merge_branch" ] &&
- dot_prefix= && break
+ [ "$remote" = "$merge_branch" ] &&
+ dot_prefix= && break
done
fi
+ if test ! -z "$merge_localbranches"
+ then
+ for merge_branch in $merge_localbranches
+ do
+ [ "$local" = "$merge_branch" ] &&
+ dot_prefix= && break
+ done
+ fi
+ if test -z "$merge_remotebranches" -a -z "$merge_localbranches"
+ then
+ merge_remotebranches=$remote
+ dot_prefix=
+ fi
+ if test -z $dot_prefix
+ then
+ found_mergeref=true
+ fi
case "$remote" in
'') remote=HEAD ;;
refs/heads/* | refs/tags/* | refs/remotes/*) ;;
@@ -191,6 +209,10 @@ canon_refs_list_for_fetch () {
fi
echo "${dot_prefix}${force}${remote}:${local}"
done
+ if test -z $found_mergeref
+ then
+ echo >&2 "Warning: No merge candidate because of no match with branch.*.merge or branch.*.localmerge"
+ fi
}
# Returns list of src: (no store), or src:dst (store)
--
next prev parent reply other threads:[~2006-12-08 19:12 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-06 4:51 git pull and merging Aneesh Kumar
2006-12-06 5:02 ` Junio C Hamano
2006-12-06 5:21 ` Aneesh Kumar
2006-12-06 9:26 ` Johannes Schindelin
2006-12-06 10:00 ` Peter Baumann
2006-12-06 10:14 ` Johannes Schindelin
2006-12-06 10:23 ` Peter Baumann
2006-12-06 10:05 ` Aneesh Kumar
2006-12-06 10:28 ` Jakub Narebski
[not found] ` <cc723f590612060236k7839942el8d048eedfdee3682@mail.gmail.com>
[not found] ` <cc723f590612060248y6f730a54l3a2aadfa6500d36d@mail.gmail.com>
2006-12-06 10:48 ` Fwd: " Aneesh Kumar
2006-12-06 16:44 ` Josef Weidendorfer
2006-12-07 6:46 ` Aneesh Kumar K.V
2006-12-07 11:27 ` Josef Weidendorfer
2006-12-07 19:06 ` Junio C Hamano
2006-12-07 22:54 ` Josef Weidendorfer
2006-12-08 1:56 ` Santi Béjar
2006-12-08 17:23 ` Josef Weidendorfer
2006-12-08 19:12 ` Josef Weidendorfer [this message]
2006-12-08 20:52 ` [PATCH] Add branch.*.localmerge and documentation update Santi Béjar
2006-12-08 21:38 ` Junio C Hamano
2006-12-08 21:48 ` Jakub Narebski
2006-12-08 22:01 ` Josef Weidendorfer
2006-12-08 22:34 ` Junio C Hamano
2006-12-08 23:17 ` Josef Weidendorfer
2006-12-08 23:41 ` Junio C Hamano
2006-12-09 1:28 ` [PATCH] Add branch.*.merge warning " Josef Weidendorfer
2006-12-09 16:14 ` Santi Béjar
2006-12-08 21:39 ` [PATCH] Add branch.*.localmerge " Josef Weidendorfer
2006-12-08 22:15 ` Santi Béjar
2006-12-08 20:09 ` git pull and merging Santi Béjar
2006-12-08 7:07 ` Junio C Hamano
2006-12-07 23:06 ` Junio C Hamano
2006-12-08 2:04 ` Santi Béjar
2006-12-08 11:48 ` Jakub Narebski
2006-12-06 9:31 ` Jakub Narebski
2006-12-06 9:58 ` Johannes Schindelin
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=200612082012.19167.Josef.Weidendorfer@gmx.de \
--to=josef.weidendorfer@gmx.de \
--cc=Johannes.Schindelin@gmx.de \
--cc=aneesh.kumar@gmail.com \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=sbejar@gmail.com \
/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).