gitolite 安装程序修复了什么?

what does gitolite setup fix?

gitolite 信息不起作用,添加密钥将它们变成 no access 密钥并且没有在 auth-keys 文件中创建相应的条目。

要在 gitolite 服务器上修复这个 运行 gitolite setup

问题:是什么让我陷入困境?

第 n 次调用时 gitolite setup 做了什么(它不再设置,根据它修复钩子的文档,但我想知道用例是什么,哪个是我的)?

关于 gitolite 信息的更多详细信息

gitolite 信息命令是这样调用的:

> ssh git-user@ser-git
PTY allocation request failed on channel 0
hello git-admin, this is ...@... running gitolite3 3.6.7-2 (Debian) on git 2.17.1

 R W    some-repository
 R W    gitolite-admin
 R W    testing
Connection to ser-git closed.

错误的输出是:FATAL: unknown git/gitolite command: 'info'

更多详细信息:无法访问的密钥。

gitolite sshkeys-lint 显示带有 (no access) 的键,现在这些键在我设置时可以访问(现在表示在 gitolite setup 之后)。

ssh-keygen -lf /home/repo/.ssh/authorized_keys | wc -l(或没有管道部分,无论如何)键的数量和它们的名称表明我没有添加最新的。

对我不起作用的类似问题:keydir entries not propagating to authorized_keys

我想,一旦我深入挖掘,文档几乎就有了答案。 @sitaramc 相当不错。

  • Without options, 'gitolite setup' is a general "fix up everything" command (for example, if you brought in repos from outside, or someone messed around with the hooks, or you made an rc file change that affects access rules, etc.)

症状键停止传播,ssh git-user@ser-git 上出现错误 FATAL: unknown git/gitolite command: 'info'。修复是 运行 gitolite setup。所以第一个问题,标题一:

gitolite 设置修复了什么?

  1. gitolite setup 已实施 here
  2. 我的 Perl 比较弱,但是 line 56 中有一个设置函数。它调用 args(它解析选项,所以这里它没有什么可解析的),然后 unless h_only(只挂钩 arg 用于设置),它没有被使用,所以我们跳过 compilePOST_COMPILE 触发并寻找钩子。

    子设置{ 我的 ($admin, $pubkey, $h_only, $message ) = args();

    unless ($h_only) {
        setup_glrc();
        setup_gladmin( $admin, $pubkey, $message );
    
        _system("gitolite compile");
        _system("gitolite trigger POST_COMPILE");
    }
    
    hook_repos();    # all of them, just to be sure
    

    }

  3. package Gitolite::conf::storehook_repos()line 228:我们将目录更改为 repo base 目录(根据配置文件),并且对于每个 phy_repo 我们做 hook_1(phy_repo)。什么是 phy_repo? 物理物理。

  4. 相同的包,不同的方法和线路:hook_1($repo) in line 354

方法hook_1($repo)

字面意思就是修复所有挂钩。

  1. 为公共挂钩和管理挂钩重新创建目录。
  2. 重写 update_hook(通用)和 post_update_hook(管理员)。
  3. 为公共挂钩和管理挂钩设置 755 权限。
  4. 然后使用 ln_sf 它为 common/admin 挂钩的文件夹建立符号链接。
  5. ln_sf在公共模块中,在line 162