也许这可能是一种奇怪的需求,但我相信这样的事情会有所帮助:
if($branch$ === "master) {
// Special code for the master branch
} else {
// Something special for tests. Like extended logging
}
在SVN中这没问题,而且我知道GIT没有关键字扩展系统,无论如何,找到解决方案仍然很有意思。
答案 0 :(得分:3)
不,所有元文件信息都存储在根目录下的.git
下。您可以使用以下bash命令检测当前分支(已修改代码,但最初找到here):
function parse_git_branch() {
git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/\1/"
}
答案 1 :(得分:1)
Git没有关键字扩展,但Git有filters:
您可以设置smudge
过滤器,每次将文件签出到工作副本时都会运行该过滤器。在此过滤器中,您可以检查当前分支并在您的来源中执行一些神奇的操作(从(过期的)http://git-scm.com/book/ch7-2.html获取的原始图片,现在为http://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#Keyword-Expansion):
您还可以设置一个clean
过滤器,每次播放文件时都会运行该过滤器:
当然,您可以将过滤器设置为不是您正在使用的所有文件,而是仅设置为项目的其他文件所包含的单个文件。
这将是Git的方式来做你想要的。
答案 2 :(得分:0)
如果您需要钩子中的信息,通常的方法是不依赖于porcelain command, but on plumbing ones:
#!/bin/sh
branch=$(git rev-parse --symbolic --abbrev-ref HEAD)