# Usage: ssh git@host rename [-c] # # Renames repo1 to repo2. You must be the creator of repo1, and have # create ("C") permissions for repo2, which of course must not exist. # Alternatively you must be an account admin, that is, you must have # write access to the gitolite-admin repository. If you have "C" # permissions for repo2 then you can use the -c option to take over # as creator of the repository. die() { echo "$@" >&2; exit 1; } usage() { perl -lne 'print substr($_, 2) if /^# Usage/../^$/' < $0; exit 1; } [ -z "$1" ] && usage [ "$1" = "-h" ] && usage [ -z "$GL_USER" ] && die GL_USER not set # ---------------------------------------------------------------------- if [ "$1" = "-c" ] then shift takeover=true else takeover=false fi from="$1"; shift to="$1"; shift [ -z "$to" ] && usage topath=$GL_REPO_BASE/$to.git checkto() { gitolite access -q "$to" $GL_USER ^C any || die "'$to' already exists or you are not allowed to create it" } if gitolite access -q gitolite-admin $GL_USER then # the user is an admin so we can avoid most permission checks if $takeover then checkto elif [ -e $topath ] then die "'$to' already exists" fi else # the user isn't an admin, so do all the checks checkto gitolite creator "$from" $GL_USER || die "'$from' does not exist or you are not allowed to delete it" fi # ---------------------------------------------------------------------- mv $GL_REPO_BASE/$from.git $topath [ $? -ne 0 ] && exit 1 $takeover && echo $GL_USER > $topath/gl-creator # Rebuild projects.list gitolite trigger POST_COMPILE echo "$from renamed to $to" >&2 exit