我希望我的 post-receive 挂钩负责在某些条件下更新 repo 本身中的版本文件。所以,假设我的存储库中有一个文件 version.txt,我希望发布接收挂钩来更新 version.txt 中的版本字符串。
这将意味着再次推动回购。这可能吗?
谢谢!
我希望我的 post-receive 挂钩负责在某些条件下更新 repo 本身中的版本文件。所以,假设我的存储库中有一个文件 version.txt,我希望发布接收挂钩来更新 version.txt 中的版本字符串。
这将意味着再次推动回购。这可能吗?
谢谢!
你可以在你的服务器上拥有你的 repo 的工作目录。在 post-receive 中,在工作目录上 git pull,根据需要更新 version.txt 并提交和推送。这将再次触发 post-receive,因此请注意您是如何进行条件更新的,否则它将进入一个循环。
#!/bin/sh
unset GIT_DIR
cd /path/to/repo.wd
git pull
echo "new content" > version.txt
git add version.txt
git commit -m "updating version.txt"
git push origin master
我宁愿不尝试进一步提交/推送,而是按顺序使用过滤器驱动程序,在结帐/更新时能够为该version.txt
文件生成正确的内容(即,里面有正确的版本字符串)
如果smudge
脚本能够识别version.txt
文件的内容(即它不会将所述文件的名称/路径作为参数),它将用正确的信息替换该文件的模板部分。