aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/22_forge/files/git-shell-commands/rename
blob: 8586991577f0cfab1c9c5c172f3e313056ae3f81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/sh
if [ -z "$1" ] || [ -z "$2" ]; then
    echo "Usage: rename [OLD_NAME] [NEW_NAME]"
    exit 1
fi
if [ ! -d "$1.git" ]; then
    echo "Repository $1 does not exist"
    exit 1
fi
if [ -d "$2.git" ]; then
    echo "Repository $2 already exists"
    exit 1
fi

OLD_GROUP="r_$(echo "$1" | sed 's/^\.//' | sha1 -q | cut -c1-14)"
NEW_GROUP="r_$(echo "$2" | sed 's/^\.//' | sha1 -q | cut -c1-14)"

mv "$1.git" "$2.git"

# Rename group
pw groupmod "$OLD_GROUP" -l "$NEW_GROUP" 2>/dev/null || {
    pw groupadd "$NEW_GROUP" 2>/dev/null || true
    pw groupmod "$NEW_GROUP" -m "$USER" 2>/dev/null || true
    pw groupdel "$OLD_GROUP" 2>/dev/null || true
}

chown -R "$USER:$NEW_GROUP" "$2.git"
echo "Renamed $1 to $2"