Merge branch 'js/fetchconfig'
* js/fetchconfig: Add a conversion tool to migrate remote information into the config fetch, pull: ask config for remote information
This commit is contained in:
commit
288c038450
35
contrib/remotes2config.sh
Normal file
35
contrib/remotes2config.sh
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Use this tool to rewrite your .git/remotes/ files into the config.
|
||||||
|
|
||||||
|
. git-sh-setup
|
||||||
|
|
||||||
|
if [ -d "$GIT_DIR"/remotes ]; then
|
||||||
|
echo "Rewriting $GIT_DIR/remotes" >&2
|
||||||
|
error=0
|
||||||
|
# rewrite into config
|
||||||
|
{
|
||||||
|
cd "$GIT_DIR"/remotes
|
||||||
|
ls | while read f; do
|
||||||
|
name=$(echo -n "$f" | tr -c "A-Za-z0-9" ".")
|
||||||
|
sed -n \
|
||||||
|
-e "s/^URL: \(.*\)$/remote.$name.url \1 ./p" \
|
||||||
|
-e "s/^Pull: \(.*\)$/remote.$name.fetch \1 ^$ /p" \
|
||||||
|
-e "s/^Push: \(.*\)$/remote.$name.push \1 ^$ /p" \
|
||||||
|
< "$f"
|
||||||
|
done
|
||||||
|
echo done
|
||||||
|
} | while read key value regex; do
|
||||||
|
case $key in
|
||||||
|
done)
|
||||||
|
if [ $error = 0 ]; then
|
||||||
|
mv "$GIT_DIR"/remotes "$GIT_DIR"/remotes.old
|
||||||
|
fi ;;
|
||||||
|
*)
|
||||||
|
echo "git-repo-config $key "$value" $regex"
|
||||||
|
git-repo-config $key "$value" $regex || error=1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
@ -10,7 +10,10 @@ get_data_source () {
|
|||||||
# Not so fast. This could be the partial URL shorthand...
|
# Not so fast. This could be the partial URL shorthand...
|
||||||
token=$(expr "z$1" : 'z\([^/]*\)/')
|
token=$(expr "z$1" : 'z\([^/]*\)/')
|
||||||
remainder=$(expr "z$1" : 'z[^/]*/\(.*\)')
|
remainder=$(expr "z$1" : 'z[^/]*/\(.*\)')
|
||||||
if test -f "$GIT_DIR/branches/$token"
|
if test "$(git-repo-config --get "remote.$token.url")"
|
||||||
|
then
|
||||||
|
echo config-partial
|
||||||
|
elif test -f "$GIT_DIR/branches/$token"
|
||||||
then
|
then
|
||||||
echo branches-partial
|
echo branches-partial
|
||||||
else
|
else
|
||||||
@ -18,7 +21,10 @@ get_data_source () {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if test -f "$GIT_DIR/remotes/$1"
|
if test "$(git-repo-config --get "remote.$1.url")"
|
||||||
|
then
|
||||||
|
echo config
|
||||||
|
elif test -f "$GIT_DIR/remotes/$1"
|
||||||
then
|
then
|
||||||
echo remotes
|
echo remotes
|
||||||
elif test -f "$GIT_DIR/branches/$1"
|
elif test -f "$GIT_DIR/branches/$1"
|
||||||
@ -35,6 +41,15 @@ get_remote_url () {
|
|||||||
case "$data_source" in
|
case "$data_source" in
|
||||||
'')
|
'')
|
||||||
echo "$1" ;;
|
echo "$1" ;;
|
||||||
|
config-partial)
|
||||||
|
token=$(expr "z$1" : 'z\([^/]*\)/')
|
||||||
|
remainder=$(expr "z$1" : 'z[^/]*/\(.*\)')
|
||||||
|
url=$(git-repo-config --get "remote.$token.url")
|
||||||
|
echo "$url/$remainder"
|
||||||
|
;;
|
||||||
|
config)
|
||||||
|
git-repo-config --get "remote.$1.url"
|
||||||
|
;;
|
||||||
remotes)
|
remotes)
|
||||||
sed -ne '/^URL: */{
|
sed -ne '/^URL: */{
|
||||||
s///p
|
s///p
|
||||||
@ -56,8 +71,10 @@ get_remote_url () {
|
|||||||
get_remote_default_refs_for_push () {
|
get_remote_default_refs_for_push () {
|
||||||
data_source=$(get_data_source "$1")
|
data_source=$(get_data_source "$1")
|
||||||
case "$data_source" in
|
case "$data_source" in
|
||||||
'' | branches | branches-partial)
|
'' | config-partial | branches | branches-partial)
|
||||||
;; # no default push mapping, just send matching refs.
|
;; # no default push mapping, just send matching refs.
|
||||||
|
config)
|
||||||
|
git-repo-config --get-all "remote.$1.push" ;;
|
||||||
remotes)
|
remotes)
|
||||||
sed -ne '/^Push: */{
|
sed -ne '/^Push: */{
|
||||||
s///p
|
s///p
|
||||||
@ -111,8 +128,11 @@ canon_refs_list_for_fetch () {
|
|||||||
get_remote_default_refs_for_fetch () {
|
get_remote_default_refs_for_fetch () {
|
||||||
data_source=$(get_data_source "$1")
|
data_source=$(get_data_source "$1")
|
||||||
case "$data_source" in
|
case "$data_source" in
|
||||||
'' | branches-partial)
|
'' | config-partial | branches-partial)
|
||||||
echo "HEAD:" ;;
|
echo "HEAD:" ;;
|
||||||
|
config)
|
||||||
|
canon_refs_list_for_fetch \
|
||||||
|
$(git-repo-config --get-all "remote.$1.fetch") ;;
|
||||||
branches)
|
branches)
|
||||||
remote_branch=$(sed -ne '/#/s/.*#//p' "$GIT_DIR/branches/$1")
|
remote_branch=$(sed -ne '/#/s/.*#//p' "$GIT_DIR/branches/$1")
|
||||||
case "$remote_branch" in '') remote_branch=master ;; esac
|
case "$remote_branch" in '') remote_branch=master ;; esac
|
||||||
|
Loading…
Reference in New Issue
Block a user