[PATCH] Allow "+remote:local" refspec to cause --force when fetching.

With this we could say:

    Pull: master:ko-master +pu:ko-pu

to mean "fast forward ko-master with master, overwrite ko-pu with pu",
and the latter one does not require the remote "pu" to be descendant
of local "ko-pu".

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2005-08-22 22:52:43 -07:00
parent 521003ff52
commit efe9bf0f3b
2 changed files with 26 additions and 7 deletions

View File

@ -5,7 +5,7 @@
get_data_source () {
case "$1" in
*/*)
# Not so fast. This could be the partial URL shorthand...
# Not so fast. This could be the partial URL shorthand...
token=$(expr "$1" : '\([^/]*\)/')
remainder=$(expr "$1" : '[^/]*/\(.*\)')
if test -f "$GIT_DIR/branches/$token"
@ -69,6 +69,13 @@ get_remote_default_refs_for_push () {
canon_refs_list_for_fetch () {
for ref
do
force=
case "$ref" in
+*)
ref=$(expr "$ref" : '\+\(.*\)')
force=+
;;
esac
expr "$ref" : '.*:' >/dev/null || ref="${ref}:"
remote=$(expr "$ref" : '\([^:]*\):')
local=$(expr "$ref" : '[^:]*:\(.*\)')
@ -80,7 +87,7 @@ canon_refs_list_for_fetch () {
'') local= ;;
*) local="refs/heads/$local" ;;
esac
echo "${remote}:${local}"
echo "${force}${remote}:${local}"
done
}
@ -132,12 +139,12 @@ get_remote_refs_for_fetch () {
else
case "$ref" in
tag)
tag_just_seen=yes
tag_just_seen=yes
continue
;;
esac
fi
canon_refs_list_for_fetch "$ref"
canon_refs_list_for_fetch "$ref"
done
;;
esac