2017-07-23 4 views
0

Actuellement, inotifywait surveille les dossiers du serveur git. Fin il n'émet que lorsque le fichier spécifique a été modifié. Le problème est, lorsque les changements sont poussés vers le serveur git, inotifywait se déclenche plusieurs fois. Je ne sais pas pourquoi. Alors, comment puis-je faire la suivante: empêcher inotifywait de faire des doublons? Supprimer ou empêcher les événements inotifywait en double?

Je pensais à l'algorithme: lorsqu'il est déclenché la première fois-> script de veille afin qu'il ne va pas scanner les changements suivants pendant 5 secondes-> reprendre le script. Mais ça a l'air idiot ... Pouvez-vous m'aider à atteindre cet objectif? Merci!!

+0

Vous devriez probablement montrer la partie pertinente de votre code. Peut-être lié: [événement inotify IN_MODIFY survenant deux fois pour tftp put] (https://stackoverflow.com/q/32377517/608639). Selon la réponse acceptée, vous devriez probablement utiliser 'IN_CLOSE_WRITE'. Voir aussi [Pourquoi les événements inotify se déclenchent plus d'une fois] (https://askubuntu.com/q/710422) sur Ubuntu.SE. – jww

+0

Quel fichier tracez-vous exactement? Il se pourrait que cela n'ait pas changé une seule fois. – max630

Répondre

1

Comme je l'ai mentionné dans votre other question, vous pouvez configurer d'abord un hook post-réception qui vérifierait le repo pour vous chaque fois qu'une poussée est effectuée sur le serveur Git.

Non seulement vous pouvez tester votre fonction inotify lors de la surveillance de ces fichiers modifiés à la caisse, mais vous pourriez même envisager pas en utilisant inotify du tout, et en utilisant le crochet pour déclencher votre notification.
A post-receive hook can list files, et vous pouvez ensuite déclencher votre notification uniquement pour certains fichiers.