【问题标题】:How to replace local git hooks with updated versions with git init?如何使用 git init 用更新版本替换本地 git 钩子?
【发布时间】:2012-06-03 05:23:06
【问题描述】:

我和这个用户有完全相同的问题:

git init template, replacing modified hooks

我的全局 git 挂钩中有一个新模板文件。但是,原始模板文件已经加载,所以git init 不会覆盖。我在这里读到了同样的内容,这似乎是正确的 git 行为:

来自http://www.cs.potsdam.edu/cgi-bin/man/man2html?1+git-init

在现有存储库中运行 git init 是安全的。它不会 覆盖已经存在的东西。主要原因 重新运行 git init 是为了获取新添加的模板。

那么什么是强制重新加载新的 git 模板钩子的好方法呢?我在许多 git repos 中有很多钩子,在几台计算机上并被各种用户使用。最实用的方法是让用户运行特定的命令,而不是告诉他们先删除钩子,然后再运行 git init 命令。有没有办法做到这一点?

【问题讨论】:

    标签: git githooks


    【解决方案1】:

    最实用的方法是让用户运行一个特定的命令,而不是告诉他们先删除钩子,然后运行 ​​git init 命令

    在这种情况下,一种可能的方法是向这些用户分发一个执行此操作的脚本(您可以在每个存储库中对该脚本进行版本控制)。
    他们不会直接执行git init,而是调用该脚本:

    • 取下挂钩
    • 拨打git init --template=

    但请注意您使用 --temaplate 选项使用的路径。
    给“git init --template=<path> <repo>”的亲戚pathname 应该相对于被调用的目录“git init”, 但它是相对于存储库制作的,它已经 使用 Git 2.22.1(2019 年第二季度)更正。

    参见Nguyễn Thái Ngọc Duy (pclouds)commit e1df7fe(2019 年 5 月 10 日)。
    (由 Junio C Hamano -- gitster -- 合并于 commit 35d7715,2019 年 7 月 25 日)

    init: 使--template 相对于$CWD 的路径

    git-init我们chdir()到目标目录,但是--template是 未调整。
    所以它是相对于目标目录而不是当前目录的。

    如果有文档就可以了,但是--templategit-init.txt 没有提及这种行为。
    将其更改为相对于$CWD,这样更直观。

    【讨论】:

      猜你喜欢
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2020-07-11
      • 1970-01-01
      • 2021-03-02
      • 2018-07-14
      相关资源
      最近更新 更多