如何在git的post接收钩子中处理分支上的文件

如何在git的post接收钩子中处理分支上的文件,git,githooks,Git,Githooks,我有一个远程服务器,我在上面创建了一个裸git存储库 我想创建一个钩子,以便在任何给定分支上收到的最新代码上运行给定脚本 我知道可以使用post receivehook。但是,我想做以下工作: 获取接收代码的分支 在临时位置签出代码并对其运行操作 我如何做上述工作? 对于1),您有一个读取分支名称(通过stdin)的示例: “” 对于2),您需要适当地设置GIT\u WORK\u树: “” 请参见“”中合并的两种技术: #!/bin/bash while read oldrev newrev

我有一个远程服务器,我在上面创建了一个裸git存储库

我想创建一个钩子,以便在任何给定分支上收到的最新代码上运行给定脚本

我知道可以使用
post receive
hook。但是,我想做以下工作:

  • 获取接收代码的分支
  • 在临时位置签出代码并对其运行操作
  • 我如何做上述工作?

    • 对于1),您有一个读取分支名称(通过stdin)的示例:
      “”
    • 对于2),您需要适当地设置GIT\u WORK\u树:
      “”
    请参见“”中合并的两种技术:

    #!/bin/bash
    
    while read oldrev newrev ref
    do
      branch=`echo $ref | cut -d/ -f3`
    
      if [ "master" == "$branch" ]; then
        git --work-tree=/path/under/root/dir/live-site/ checkout -f $branch
        echo 'Changes pushed live.'
      fi
    
      if [ "dev" == "$branch" ]; then
        git --work-tree=/path/under/root/dir/dev-site/ checkout -f $branch
        echo 'Changes pushed to dev.'
      fi
    done