我正试图在一个远程裸存储库上建立一个钩子,这个存储库将复制我从本地git发送的源代码,根据我发送到的分支在不同的文件夹中。我在本地有3个分支:master、development和release,所以我希望在远程有3个文件夹,其中包含每个分支的源代码。我发现使用:
git rev parse—abbrev ref头
再加上一系列的假设条件就能达到目的。唯一的问题是,无论你发送到哪个分支,远程的头都是一样的。钩子里有没有可以使用的代码,以便它知道我要发送到某个分支?或者有其他方法来做这个吗?谢谢!
最佳答案
你的一个光的回购协议将有所有3个分支。您可以使用这样的git修饰符使3个单独的目录更新为每个分支包含的内容:
git --work-tree=/some/project/dir/branch1 --git-dir=/path/to/bare/repo checkout branch1 -- .
要避免指定这些选项,可以设置它们相应的环境变量:
GIT_WORK_TREE
GIT_DIR
这样,您就可以保留一个裸露的repo和3个单独的目录,在推送分支时更新这些目录。记住钩子中提供的参数是什么。第一个是分支名称。