【问题标题】:How can I make Gitolite post-receive hook to show full path to modified file?如何使 Gitolite 接收后挂钩显示修改文件的完整路径?
【发布时间】:2017-12-30 14:35:04
【问题描述】:

这是我的 post-receive 钩子:

#!/bin/bash

while read oldrev newrev ref; do
        git diff --name-only oldrev..newrev
        git --work-tree=/tmp checkout HEAD -- plugin.yml
        echo -e "Test complete maybe..." | tee >(exec logger)
done

这是输出:

如果我将 oldrev..newrev 替换为 oldrev -- newrev,则输出为:

我需要获取修改此文件(plugin.yml)的文件夹。谢谢。

【问题讨论】:

  • 是的,这应该是循环中的 $oldrev 和 $newrev。在cyberciti.biz/faq/…cyberciti.biz/faq/bash-for-loop 上查看更多示例
  • 是的,它显示了它:D 最后一个问题:我怎样才能把这个路径放入变量中?也许 test=${git diff --name-only oldrev..newrev}?
  • 是的,但它是 test=$(),而不是 ${}。请参阅unix.stackexchange.com/a/4570/7490 处的“命令替换”
  • @VonC 我非常喜欢你! :3 没有其他人会帮助我这么长时间并容忍我。 1.000.000 再次感谢,你太棒了!!!我连Linux的基础知识都不懂,真丢人。会尽我所能去研究它,不要问愚蠢的问题。再次感谢!

标签: git hook gitolite git-post-receive


【解决方案1】:

首先,每个钩子都可以简单地检查其execution path:这将为您提供存储库的名称。

其次,我在your previous question中提到的git diff --name-only会给你推送文件的相对路径(包括mod1/2)。

git diff --name-only $1..$2

因为 post-receive 挂钩在标准输入上接收 oldrevnewrevref

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多