about summary refs log tree commit diff
path: root/contrib/remotes2config.sh
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/remotes2config.sh')
-rwxr-xr-xcontrib/remotes2config.sh33
1 files changed, 33 insertions, 0 deletions
diff --git a/contrib/remotes2config.sh b/contrib/remotes2config.sh
new file mode 100755
index 000000000000..1cda19f66af9
--- /dev/null
+++ b/contrib/remotes2config.sh
@@ -0,0 +1,33 @@
+#!/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