diff options
Diffstat (limited to 'config/services/git/shell-commands/repo/src/create_command.sh')
| -rw-r--r-- | config/services/git/shell-commands/repo/src/create_command.sh | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/config/services/git/shell-commands/repo/src/create_command.sh b/config/services/git/shell-commands/repo/src/create_command.sh new file mode 100644 index 0000000..ab8bf3f --- /dev/null +++ b/config/services/git/shell-commands/repo/src/create_command.sh @@ -0,0 +1,25 @@ +repo=$(realpath --canonicalize-missing /srv/git/"${args[repo]}") + +if [[ ! "$repo" == /srv/git/* ]] +then + red "Forbidden path." + exit 2 +fi + +subpath=/srv/git +IFS='/' read -ra dirs <<< "${repo#/srv/git/}" +for dir in "${dirs[@]}"; do + subpath="$subpath/$dir" + if [[ ! -d "$subpath" ]] + then + break + fi +done + +mkdir --parents "$repo" +chmod u=rwX,g=,o= --recursive "$subpath" +git init --bare "$repo" + +args[path]="$repo" +args[--tree]=1 +repo_show_command |
