3

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

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

我知道post-receive钩子可以用它。但是我想做以下事情:

  1. 获取收到代码的分支。
  2. 在临时位置签出代码并对其运行操作。

我该怎么做以上?

4

1 回答 1

9

请参阅“ Git post-receive for multiple remote branches and work-trees ”中结合的两种技术:

#!/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
于 2012-07-04T05:41:01.833 回答