Loop no bash para criar links simbólicos após cada git pull

0

Eu tenho um cenário onde eu tenho um repositório git que eu faço um git puxar a cada x minutos, no seguinte diretório: / opt / repo /

Neste repositório eu tenho alguns diretórios como:

  • / opt / repo / dir1
  • / opt / repo / dir2
  • / opt / repo / dir3

que são criados no repositório dinamilally e recuperados em cada git pull.

O que eu preciso fazer é, após cada git pull, criar um symlink para esses diretórios (somente os novos) em outro caminho:

/var/www/themes/

Manualmente, o que faço é o seguinte:

$ cd /var/www/themes
$ ln -s /opt/repo/dir1 . 
$ ln -s /opt/repo/dir2 . 
$ ln -s /opt/repo/dir3 . 

Existe uma maneira de fazer isso em todas as chamadas? Eu não quero recriar os links simbólicos existentes, apenas crie para aqueles que ainda não existem.

====

A solução SYN funciona, eu tive que inverter -maxdepth e digitar a ordem (eu estava rodando sobre o Ubuntu 16, o que importa).

    
por Tzn 14.10.2017 / 14:54

1 resposta

0

Na raiz do seu repositório, você teria um subdiretório .git . Lá, você deve conseguir instalar um gancho de pós-atualização:

$ cd /opt/repo
$ test -d .git/hooks || mkdir .git/hooks
$ cat <<EOF >.git/hooks/post-update
#!/bin/sh

cd /opt/repo
find . -maxdepth 1 -type d | while read dir
    do
        test "$dir" = .git && continue
        test -e "/var/www/themes/$dir" && continue
        ln -sf "/opt/repo/$dir" /var/www/themes
    done
EOF
$ chmod +x .git/hooks/post-update

Isto assumindo que o usuário que extrai do git também tem permissões para criar esses links, ...

    
por 14.10.2017 / 15:22