view scripts/update-git-remotes @ 1197:e083c616cf04 draft

tweak update-git-remotes script
author cathugger <cathugger@cock.li>
date Fri, 10 Mar 2017 14:28:42 +0000
parents 2f57d4d36759
children 79ed5d9678a8
line wrap: on
line source

#!/bin/sh
#
# Creates git remotes from the user db
# TODO: detect users' git address changes
#

if ! `dirname "$0"`/check_db_safety; then
 exit 1
fi

USR_DB_DIR=./db/usr
GIT_REPO=./.git
GIT_REMOTES_DIR=$GIT_REPO/refs/remotes

for u in `ls -1 "$USR_DB_DIR"`; do
  git_url_file="$USR_DB_DIR/$u/git"

  if [ -f "$git_url_file" ]; then
    git_url=`cat "$git_url_file"`
    git_remote_name="anonet_$u"

    if [ -d "$GIT_REMOTES_DIR/$git_remote_name" ]; then
      if [ x"$git_url" != x`git remote get-url "$git_remote_name"` ]; then
        echo "changing $u" >&2
        git remote set-url "$git_remote_name" "$git_url"
      else
        # The remote already exists and is the same
        echo "skipping $u" >&2
      fi
    else
      echo "adding $u" >&2
      git remote add -t master -m master "$git_remote_name" "$git_url"
    fi
  fi
done

for r in `ls -1 "$GIT_REMOTES_DIR" | grep '^anonet_'`; do
  u=`echo $r | sed 's/^anonet_//'`
  if [ ! -f "$USR_DB_DIR/$u/git" ]; then
    echo "deleting $u" >&2
    git remote rm "$r"
    rm -rf "$GIT_REMOTES_DIR/$r"
  fi
done