Git 标签 checkout 和 git hook

标签 git githooks git-tag

该应用程序是用 Angular JS 编写的。我希望能够将 ver={%tag%} 更新为 ver=v1,其中 v1 是 git 标签。

例如在这样的索引文件中。

<script src="js/controllers/AController.js?ver={%tag%}"></script>
<script src="js/controllers/BController.js"?ver={%tag%}></script>

我想在生产中检查标签时实现此功能。这样我就不必手动更新每个文件的版本号来与 git 标签保持同步。 如果有办法用 git hook 来做到这一点。我也会接受这一点。但请举例说明。 这将允许用户获取文件的最新版本而不是缓存版本,并防止用户手动清除缓存以进行更改。 只是为了让您知道我正在使用 bitbucket。

最佳答案

如果您知道要更新哪些文件,则可以使用 content filter driver 将污点 .gitattributes declaration 与它们关联起来。

smudge
(图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)

这个想法是在 checkout 时应用过滤器,在您的情况下,这将是一个简单的 sed (将占位符 %tag% 替换为 git describe --abbrev=0 --tags to get the latest tag 的内容)

服务器上存储库的本地配置中的过滤器声明如下所示

[filter "replaceTag"]
        smudge = sed \"s/%tag%/`git describe --abbrev=0 --tags`/g\"

关于Git 标签 checkout 和 git hook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44792601/

相关文章:

预提交 Hook 中的 git stash 在第一次提交时失败

continuous-integration - 推送标签时未触发 GitHub 操作

git - git describe --match在TeamCity上不起作用

git - git 标签到底指向什么?

git - 如何从 git 存储库中完全删除/销毁提交?

git - 试图删除远程分支;在本地列出,repos 说它不存在

git - 如何使用 Git 的 `describe` 命令导出应用程序构建版本字符串?

每个作者的 GIT 贡献(行)

git - 接收后 Hook 失败 - 有机会了解原因吗?

git - 如何使用 github webhooks 阻止特定的推送?