相关疑难解决方法(0)

可以将Git钩子脚本与存储库一起管理吗?

我们想制作一些我们可以共享的基本钩子脚本 - 例如预格式化提交消息.Git有通常存储在其下的钩子脚本<project>/.git/hooks/.但是,当人们进行克隆并且它们不受版本控制时,这些脚本不会传播.

有没有一种好方法可以帮助每个人获得正确的钩子脚本?我可以让这些钩子脚本指向我的仓库中的版本控制脚本吗?

git githooks

298
推荐指数
7
解决办法
7万
查看次数

列出Git存储库中的子模块

我有一个Git存储库,里面有几个子模块.如何git submodule init在运行后列出所有子模块的名称?

git submodule foreach命令可以回显子模块的名称,但只有在检出后才能使用,这在init步骤之后没有发生.链中有更多的步骤需要在签出之前发生,我不希望将子模块的名称硬连接到脚本中.

那么是否有一个Git命令来获取所有当前已注册但尚未检出的子模块的名称?

git git-submodules

215
推荐指数
16
解决办法
15万
查看次数

将git钩子放入存储库

它被认为是一种不好的做法 - 将.git/hooks放入项目存储库(例如,使用符号链接).如果是的话,为不同的git用户提供相同的钩子的最佳方法是什么?

git hook githooks

189
推荐指数
6
解决办法
8万
查看次数

git-clone和post-checkout hook

根据手册,post-checkout钩子在a git checkout(正如预期)之后运行,但也在a之后运行git clone(除非你通过--no-checkout).

很好,现在,考虑以下因素:

  • 你之前没有本地存储库 git clone
  • 钩子不在遥控器之间同步
  • 存储在与之一起使用的自定义模板目录中的钩子--template被复制为不可执行,因此之后执行git clone(实际上不是Jefromi在他的回答中所说的那样,但钩子仍然没有被执行)

一个post-checkout钩子似乎不可能在一个之后被执行git clone.尽管如此,http: //git-scm.com/docs/githooks上的githooks手册页明确说明了一种避免执行的方法,并且在执行时也传递了参数,这表明可以执行自定义钩子经过.git-clone

那么,怎么可能呢?我显然在这里遗漏了一些东西.

结果

git hook git-clone

28
推荐指数
2
解决办法
2万
查看次数

编写拒绝无效子模块提交的git update hook的最佳方法是什么?

我正在尝试update为git 编写一个钩子,如果子模块被更新为子模块的上游存储库中不存在的提交ID,则会跳转.换句话说,我想强制用户在将更改推送到子模块指针之前将更改推送到子模块存储库.

一个警告:

  • 我只想测试其子上游存储库与父存储库位于同一服务器上的子模块.否则我们开始做一些疯狂的事情,比如在git hook中调用'git clone'或'git fetch',这不会很有趣.

我一直在玩一个想法,但感觉必须有一个更好的方法来做到这一点.这是我计划在更新钩子中做的事情:

  1. 检查传递给钩子的refname,看看我们是否正在更新refs/heads/.如果没有,请尽早退出.
  2. 使用git rev-list得到被推版本列表.
  3. 对于每个修订:
    1. 调用git show <revision_id>并使用一个正则表达式,查看子模块是否已更新(通过搜索`+子项目提交[0-9a-f] +).
    2. 如果此提交确实更改了子模块,请获取该.gitmodules特定commit(git show <revision_id>:.gitmodules)所看到的文件内容.
    3. 使用3.1和3.2的结果获取子模块URL及其更新的提交ID列表.
    4. 检查3.3中创建的列表,对应于将子模块URL映射到文件系统上的本地裸git存储库的外部文件.
    5. cd到3.4中找到的路径并执行git rev-parse --quiet --verify <updated_submodule_commit_id>以查看该存储库中是否存在该提交.如果没有,则以非零状态退出.

(注意:我相信3.2的结果可能会在修订版本中缓存,只要输出git rev-parse --quiet --verify <revision_id>:.gitmodules不会从一个修订版更改为下一个修订版.我将此部分留下来以简化解决方案.)

所以是的,这看起来相当复杂,我不禁想知道是否有一些内部git命令可能会让我的生活变得更轻松.或者也许有不同的方式来思考这个问题?

git hook git-submodules githooks

11
推荐指数
1
解决办法
1698
查看次数

标签 统计

git ×5

githooks ×3

hook ×3

git-submodules ×2

git-clone ×1