#!/bin/sh # Copyright © 2014-2015 Jonas Smedegaard # Description: create/update local + remote git and register in mr # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # Depends: git mr set -eu for dir in "$@"; do if [ ! -d "$dir" ]; then echo "Skipping non-dir \"$dir\"" continue fi cd "$dir" if [ ! -d .git ]; then if [ -z "$GIT_INIT_BASEURL" ]; then echo "Skipping non-git dir \"$dir\" (set GIT_INIT_BASEURL to initialize)" cd .. continue fi touch ../.mrconfig git init git add -A git commit -m "Initial commit." fi if ! url=$(git config --get remote.origin.url); then git remote add origin "$GIT_INIT_BASEURL"/"$dir" url=$(git config --get remote.origin.url) mr reg fi host=$(echo "$url" | sed -e 's/:.*//') path=$(echo "$url" | sed -e 's/.*://' -e 's/\.git$//') if ! ssh "$host" test -d "$path.git"; then ssh "$host" mkdir -p "$(dirname "$path")" ssh "$host" git init --bare "$path.git" fi git add -A && git commit -m "Sync." || true git push --set-upstream origin master || true cd .. done printf 'Done (press return)' read foo