Git Post-receive hook获取修改后的文件/ foldes

时间:2015-12-22 14:04:41

标签: git hook git-post-receive

我正在编写一个post-receive挂钩来更新一些服务器。

我的git repo有一个每个服务器的文件夹。我的目标是让所有已修改的文件夹(服务器)只在那些服务器上运行一些脚本。

以下是我工作树的示例:

├── host1
│   ├── examplefile.json
│   └── configfile.cfg
├── host2
│   └── file1.txt
├── host3
│   └── binfile.rpm

可以在收件后写出类似的内容吗?

更新1 : 我的post-receive到目前为止在另一台服务器上执行了一个脚本,该服务器上有这个repo的副本,这个服务器比fetch,reset和执行脚本更新每个主机上的那些文件。

1 个答案:

答案 0 :(得分:0)

我刚刚发现,在接收后执行的服务器上运行差异要简单得多:

我的收到后,这只是对ssh的命令:

#!/usr/bin/env bash
ssh root@controller-host -C /root/sync.sh

控制器主机上的同步脚本

cd /root/mytest/myrepo
git fetch --all
git diff --name-only origin/master
git reset --hard origin/master
git diff --name-only origin/master

输出:

Fetching origin
host1/file1
host2/file1
host3/file1
host4/file1
HEAD is now at 8e57e51 startei

现在可以解析diff输出只有同步的host1,host2,host3和host4。

如果有人找到更好的方法,请分享。

相关问题