diff options
Diffstat (limited to 'roles/git')
-rwxr-xr-x | roles/git/files/init-git-repo.sh | 58 | ||||
-rw-r--r-- | roles/git/tasks/main.yml | 8 |
2 files changed, 66 insertions, 0 deletions
diff --git a/roles/git/files/init-git-repo.sh b/roles/git/files/init-git-repo.sh new file mode 100755 index 0000000..881ee55 --- /dev/null +++ b/roles/git/files/init-git-repo.sh @@ -0,0 +1,58 @@ +#! /usr/bin/env bash + +# Usage examples +# +# Init private repository and mirror it to github. +# ./init-git-repo.sh --private --mirror repo.git + +private=0 +mirror=0 +repo="" + +while [[ $# -gt 0 ]]; do + case $1 in + -p|--private) + private=1 + shift + ;; + -m|--mirror) + mirror=1 + shift + ;; + -*|--*) + echo "Unknown option $1" 1>&2 + exit 1 + ;; + *) + repo=$1 + shift + ;; + esac +done + +if [ -z $repo ]; then + echo "Provide repository name!" 1>&2 + exit 1 +fi + +mkdir $repo +cd $repo +git init --bare + +if [ $private -eq 0 ]; then + touch git-daemon-export-ok +fi + +if [ $mirror -eq 1 ]; then + git remote add --mirror github git@github.com:ilvokhin/$repo + + cat > hooks/post-receive <<EOF +#! /bin/sh + +git push --quiet github & +EOF + + chmod +x hooks/post-receive +fi + +cd .. diff --git a/roles/git/tasks/main.yml b/roles/git/tasks/main.yml index 72fb025..e66217c 100644 --- a/roles/git/tasks/main.yml +++ b/roles/git/tasks/main.yml @@ -135,3 +135,11 @@ state: link notify: - Reload nginx + +- name: Copy managing scripts + ansible.builtin.copy: + src: files/init-git-repo.sh + dest: /srv/git/init-git-repo.sh + owner: git + group: git + mode: u+rwx,g-rwx,o-rwx |