我希望我的post-receive钩子负责在特定条件下更新repo 本身中的版本文件。所以,假设我在我的存储库中有一个文件version.txt, 我希望post接收挂钩来更新version.txt中的版本字符串。希望git post接收钩子以进行新的提交和推送
这意味着再次推动回购。这可能吗?
谢谢!
我希望我的post-receive钩子负责在特定条件下更新repo 本身中的版本文件。所以,假设我在我的存储库中有一个文件version.txt, 我希望post接收挂钩来更新version.txt中的版本字符串。希望git post接收钩子以进行新的提交和推送
这意味着再次推动回购。这可能吗?
谢谢!
我宁可不尝试进行任何进一步的承诺/推,但为了使用filter driver,在结帐/更新才能够生成用于version.txt
文件(用正确的版本字符串内即)正确的内容
的smudge
脚本,如果它能够识别的version.txt
文件的内容(即它won't have the name/path of said file as parameter),将正确的信息替换该文件的模板部分。
你可以在你的服务器上有一个你的仓库的工作目录。在post-receive,git pull工作目录下,根据需要更新version.txt并提交并推送。这会再次触发后接收,所以要小心你如何做你的条件更新,否则它会进入一个循环。
#!/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
@VonC是否有可能在接收存储库中有这个?由于更新version.txt的条件可能只适用于中央/接收repo,并且过滤器驱动程序仅适用于从本地repo提交(并检出)权限? – manojlds 2011-05-09 18:52:30
@manojolds:这个想法是*永远不会*提交一个包含这些信息的文件,而是提交脚本能够在下游回购需要它时生成正确的内容。过滤器驱动程序是'.gitattributes'文件中的声明,可以在repo中进行克隆/传播。事实上,他们没有在中央仓库中激活(因为你只是推到这些仓库中),而是在本地仓库中,这并不会改变中央仓库不需要额外提交的事实:您将生成正确的内容何时何地您实际上需要它。 – VonC 2011-05-09 19:59:40
太棒了。谢谢,VonC。 .gitattributes似乎对此很完美。 – Jacko 2011-05-09 20:18:32