mirror of
https://github.com/git/git
synced 2024-08-26 11:09:18 +00:00
![Jakub Narebski](/assets/img/avatar_default.png)
The remotes2config.sh script replaced all 'unsafe' characters in repo name with '.'; include '-' in the 'safe' characters set (the set is probably even larger). Script required also space after "URL:", "Push:" and "Pull:" in remotes file. This for example made the following remote URL: git://git.kernel.org/pub/scm/git/git.git Pull: refs/heads/master:refs/heads/origin Pull:+refs/heads/pu:refs/heads/pu miss 'pu' branch (forced branch) in config file after conversion. Allow for any number of whitespace after "URL:", "Push:", "Pull:". Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
34 lines
770 B
Bash
Executable file
34 lines
770 B
Bash
Executable file
#!/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=$(printf "$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 config $key "$value" $regex"
|
|
git config $key "$value" $regex || error=1 ;;
|
|
esac
|
|
done
|
|
fi
|