Git – post-receive hook con git pull "Imansible trovare una directory git valida"

È molto strano, ma quando si imposta un repository di git e crea un hook post-ricezione con:

echo "--initializing hook--" cd ~/websites/testing echo "--prepare update--" git pull echo "--update completed--" 

il hook funziona effettivamente, ma non riesce mai a correre git tirare correttamente:

  • La console di amministrazione di Weblogic è troppo lenta
  • Git clone da Bitbucket.org su server EC2 utilizzando chiavi SSH
  • È ansible staccare un process dal suo terminal? (O, "avrei dovuto usare lo schermo!")
  • Dove posso mettere i file condivisi di gruppo in un sistema Linux?
  • Come si vede chiaramente i dati di process da utente ps -u $?
  • Creare la data di una session di shell specifica
  •  6bfa32c..71c3d2a master -> master --initializing hook-- --prepare update-- fatal: Not a git repository: '.' Failed to find a valid git directory. --update completed-- 

    quindi mi chiedo ora, come è ansible far aggiornare il hook con il clone con post-ricezione?

    in questo caso l'utente che esegue i processi è lo stesso, e tutto ciò che è all'interno della cartella utente quindi non capisco davvero … perché se andrò manualmente

     cd ~/websites/testing git pull 

    funziona senza alcun problema …

    qualsiasi aiuto su questo sarebbe stato molto apprezzato

    molte grazie

  • Git clone da Bitbucket.org su server EC2 utilizzando chiavi SSH
  • Auto-scalare i server EC2 e aggiornare il codice
  • Crittografare il repository di git sul server (sicuro contro il furto di hardware fisico)
  • Come faccio a impedire a Apache di servire la directory git?
  • Come rendere sshfs + VPN + git un ambiente di lavoro tollerabile?
  • Come prevenire la spinta di ssh git per impostare la properties; del file?
  • 6 Solutions collect form web for “Git – post-receive hook con git pull "Imansible trovare una directory git valida"”

    Mentre il hook è in esecuzione, GIT_DIR e (se il lavoro è stato definito esplicitamente) sono impostati GIT_WORK_TREE . Ciò significa che il tiro non verrà eseguito con il secondo repository nella directory che hai cambiato.

    Prova git --git-dir ~/websites/testing/.git --work-tree ~/websites/testing pull ; o distriggersre l'ambiente repo-locale di git con questo:

     unset $(git rev-parse --local-env-vars) 

    Maggiori informazioni su queste variables di ambiente in man 1 git .

    Una cosa che ho sperimentato era che usando il hook post-update '- git-dir' ha funzionato bene ma git era ancora lamentarsi di un tree di lavoro mancante (nonostante utilizzi '–work-tree')

    In breve, questo non ha funzionato:

    git --git-dir /path/to/websites/testing/.git --work-tree /path/to/websites/testing pull

    mentre questo ha funzionato:

    cd /path/to/websites/testing
    git --git-dir /path/to/websites/testing/.git pull

    Non funziona?

     cd /home/smb/websites/testing env -i git pull 

    Modificato

    Meglio ancora

     cd /home/smb/websites/testing unset GIT_DIR git pull 

    Hai provato con il path completo invece del ~?

     cd /home/smb/websites/testing git pull 

    Lo script è probabilmente invocato con /bin/sh , che non comprende ~ . Provare con il path completo a ~ invece.

    La prima risposta consigliata è giusta – quando un hook è in esecuzione GIT_DIR etc sono impostati. Tuttavia, se si desidera essere in grado di utilizzare lo script in un altro repository allora questo metodo è errato perché codici hard-reset il GIT_DIR. Come ha implicato, l'altro modo è quello di rimuovere la variabile usando env come segue: env -i git reset – hard Ovviamente che command si esegue c'è a te – è solo il bit 'env -i' che è il bit importnte .

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.