Maison > Questions et réponses > le corps du texte
Il y a trois hooks côté serveur git
pre-receive: 推送接受前
update: 推送更新中
post-receive: 推送接受后
Je souhaite exécuter un script après la réception et j'ai besoin de connaître le nom de la branche poussé lorsque le client pousse. Cependant, après avoir consulté de nombreuses informations, il n'y a aucune mention de la manière dont le script hooks obtient les informations push du client.
PHPz2017-05-17 10:05:16
Selon le contenu du lien Hooks côté serveur, vous pouvez savoir que la post-réception, comme la pré-réception, obtiendra 3 paramètres avant l'exécution : <old-value> ;ref-name>
<old-value> <new-value> <ref-name>
The script takes no parameters, but each ref that is being pushed is passed to the script on a separate line on standard input in the following format:
<old-value> <new-value> <ref-name>
如b6b36c697eb2d24302f89aa22d9170dfe609855b 85baa88c22b52ddd24d71f05db31f4e46d579095 refs/heads/master
所以既然知道了ref-name
和相应的hash
值,就可以根据git相应的命令得到对应的信息.如git log refs/heads/master
Le script ne prend aucun paramètre, mais chaque référence poussée est transmise au script sur une ligne distincte sur une entrée standard au format suivant :🎜🎜Alors maintenant que vous connaissez<old-value> <new-value> & lt; Nom de référence & gt;
🎜B6B36C697EB2D24302F89AA22D9170DFE609855B 85baa88C22DDDD71F05D579095 Refs/H Eads/Master
🎜
ref-name
et la valeur hash
correspondante, vous pouvez obtenir les informations correspondantes selon la commande git correspondante. Par exemple, git log. refs/heads/ master
.🎜怪我咯2017-05-17 10:05:16
https://git-scm.com/book/zh/v...
Différents Hooks porteront différents paramètres dans le flux d'entrée,
pré-réception
pre-receive
处理来自客户端的推送操作时,最先被调用的脚本是 pre-receive。 它从标准输入获取一系列被推送的引用。如果它以非零值退出,所有的推送内容都不会被接受。 你可以用这个钩子阻止对引用进行非快进(non-fast-forward)的更新,或者对该推送所修改的所有引用和文件进行访问控制。
update
update 脚本和 pre-receive 脚本十分类似,不同之处在于它会为每一个准备更新的分支各运行一次。 假如推送者同时向多个分支推送内容,pre-receive 只运行一次,相比之下 update 则会为每一个被推送的分支各运行一次。 它不会从标准输入读取内容,而是接受三个参数:引用的名字(分支),推送前的引用指向的内容的 SHA-1 值,以及用户准备推送的内容的 SHA-1 值。 如果 update 脚本以非零值退出,只有相应的那一个引用会被拒绝;其余的依然会被更新。
post-receive
Lors du traitement des opérations push du client, le premier script à être appelé est la pré-réception. Il obtient une série de références poussées à partir de l’entrée standard. S'il sort avec une valeur non nulle, tout le contenu push ne sera pas accepté. Vous pouvez utiliser ce hook pour empêcher les mises à jour non rapides des références ou pour contrôler l'accès à toutes les références et fichiers modifiés par le push.
update
🎜Le script de mise à jour est très similaire au script de pré-réception, sauf qu'il sera exécuté une fois pour chaque branche à mettre à jour. Si le pousseur pousse le contenu vers plusieurs branches en même temps, la pré-réception n'est exécutée qu'une seule fois, contrairement à la mise à jour, qui est exécutée une fois pour chaque branche poussée. Il ne lit pas le contenu de l'entrée standard, mais prend trois paramètres : le nom de la référence (branche), la valeur SHA-1 du contenu pointé par la référence avant le push et la valeur SHA-1 du contenu vers lequel la référence est pointée. l'utilisateur a l'intention de pousser. Si le script de mise à jour se termine avec une valeur non nulle, seule la référence correspondante sera rejetée, le reste sera quand même mis à jour. 🎜
🎜post-réception
🎜Le hook de post-réception s'exécute une fois l'ensemble du processus terminé et peut être utilisé pour mettre à jour d'autres services système ou avertir les utilisateurs. Il accepte les mêmes données d'entrée standard que la pré-réception. Ses utilisations incluent la publication sur une liste de diffusion, la notification à un serveur d'intégration continue ou la mise à jour d'un système de suivi des tickets. Vous pouvez même analyser les informations de validation pour déterminer si un ticket pose un problème ou non. Ce script ne peut pas tuer le processus push, mais le client restera connecté jusqu'à la fin de son exécution, utilisez-le donc avec prudence si vous souhaitez faire autre chose, car cela vous prendra beaucoup de temps. 🎜