【问题标题】:Can a git pre-commit hook add a file to the repo?git pre-commit hook 可以将文件添加到 repo 吗?
【发布时间】:2011-06-17 15:04:46
【问题描述】:

我在我的工作目录中保存了我的 git 日志的文本文件,并且我有一个在提交后更新它的脚本。这很好,但这样做的效果是 repo 中的版本总是落后一个提交。

是否可以编写一个预提交挂钩来调用脚本并将文件添加到 repo,从而有效地保存日志的文本版本以及其中的当前提交信息?

我是 git hooks 的新手,不知道它是如何工作的,如果可能的话。感谢您的帮助!

【问题讨论】:

    标签: git githooks pre-commit


    【解决方案1】:

    简短的回答:不。日志包含提交的 SHA1,这取决于提交的内容。如果你更改日志,你将更改提交,它仍然是无效的。

    我想知道你为什么要这么做,真的。在存储库中,git logcat saved-git-log 一样好。如果您希望将此作为变更日志,对于已发布的版本,只需将其创建为构建/部署过程的一部分,例如:

    tarname=my-project-$(git describe HEAD).tar
    git log > changelog.txt
    git archive --format=tar HEAD > $tarname
    tar -Af $tarname changelot.txt
    gzip $tarname
    

    【讨论】:

    • 好的,这很好。我想这样做的原因是我试图将我的提交日志嵌入到部署在 Heroku 上的 Rails 应用程序中,这意味着我只能通过将文件添加到 git 存储库并推送到 Heroku 来将文件传输到服务器。然而,一旦应用程序是 AT heroku,它就不能再对自己的 repo 进行任何类型的调用,这是非常糟糕的。感谢您提出替代方案的建议!
    • @Andrew:另一个重要的选择是按照你说的做,作为一个提交落后 - 除了最后一次提交只是一个变更日志修改。如果每次发布只执行一次,而不是每次提交执行一次,那真的还不错。
    【解决方案2】:

    我只是从 Bitbucket/Github 上的 RSS 提要中提取完整日志。这似乎是实现您所要求的最简单的方法,尤其是在使用 Heroku 时。

    【讨论】:

      猜你喜欢
      • 2012-01-18
      • 2023-04-11
      • 1970-01-01
      • 2012-04-11
      • 2015-09-12
      • 1970-01-01
      • 2017-08-16
      • 2015-08-19
      • 2012-03-15
      相关资源
      最近更新 更多