【问题标题】:Create v3 gitolite repositories from existing v2 repos从现有的 v2 存储库创建 v3 gitolite 存储库
【发布时间】:2023-03-17 01:10:01
【问题描述】:

我在公司的服务器上安装了 gitolite v2,现在我必须管理它。由于那里真的很混乱,我决定安装一个新的,现在是 v3。我有大约 8 个存储库要移动到新安装中。

我不需要旧的 .rc 文件或任何配置,只需要(工作!)$GIT_HOME/repositories/*.git

我尝试了什么:(在寻找解决方案时发现)
将所有$GIT_OLD_HOME/repositories/*.git 复制到$GIT_HOME/repositories/*.git(gitolite-admin.git 和 testing.git 除外)

然后我用这种条目更新了gitolite-admin.git/conf/gitolite.conf(通过克隆和推回更改):

repo myrepo1
RW+ = @all

现在,如果我想克隆 gitolite-admin 或测试以外的任何内容,它是:
FATAL: R any myrepo1 myusername DENIED by fallthru

我检查过的几件事:
ls -l $GIT_HOME -> gitolite:gitolite 没关系,我想 gitolite 是我想使用的用户
我对repositories 目录中的所有条目都做了同样的事情,并且权限是一样的。

我在谷歌上搜索解决方案,但没有找到适合我的情况。如果您可以帮助我或建议我任何事情,请不要退缩:)

如果您需要更多详细信息来找出答案,请告诉我。

【问题讨论】:

    标签: gitolite


    【解决方案1】:

    我遇到了同样的问题,升级没有按预期进行,所以我使用了以下策略 - 粗体文本表示执行步骤的位置:

    1- 新功能:安装 Gitolite (https://github.com/sitaramc/gitolite)。

    2- 工作站: 在新的空目录中克隆旧版本的 gitolite-admin 并将其重命名为 gitolite-admin-old。删除 gitolite-admin-old/conf/gitolite.conf 中除您自己以外的所有用户的访问权限 - 在迁移存储库时禁止任何人进行任何更改。

    3- 工作站:从旧 Gitolite 克隆所有存储库。 git clone git@oldserver.com:repo.

    4- 旧:我们已经从旧存储库中得到了我们想要的东西。通过在 .gitolite.rc 文件的顶部添加 exit 0 来永久禁用旧 gitolite。

    5- 工作站:从新服务器git clone git@newserver.com:gitolite-admin gitolite-admin-new克隆gitolite-admin

    6- 工作站:将密钥从gitolite-admin-old/keydir 复制到gitolite-admin-new/keydir,使用用户权限在新的gitolite-admin-new/conf/gitolite.conf 中添加您要传输的存储库。添加、提交和推送。

    7- 工作站:将每个所需的存储库推送到新服务器

    git push --all git@newserver.com:repo
    git push --tags git@newserver.com:repo
    or
    git push --mirror git@newserver.com:repo
    

    8- 工作站:从每个工作存储库更改 DNS 或远程 URL。

    希望对你有帮助

    【讨论】:

    • 有趣的解决方法(如果我自己的答案不适合你)。 +1
    【解决方案2】:

    确保您已迁移您的 .gitolite.rc file,如 g2->g3 migration page

    中所述

    如果您从 g2 迁移,在运行 gitolite setup 之前必须处理一些设置;请阅读迁移页面和链接页面,尤其是“预设 rc 文件”

    g3 的 rc 文件与 g2 的完全不同。

    或者如果您不需要旧的,正如您提到的,请确保默认新的内容具有适当的值。

    确保您的新 ~git/.ssh/authorized_keys 文件确实包含包含 myusername 的行。


    OP Attila Horvathconfirms:

    注意:任何 gitolite install/setup/etc 中的任何内容都不会触及除 gitolite-admin 存储库之外的任何存储库中的数据。它在正常 repos 中通常会触及的唯一东西是更新钩子。”

    最后一句话引起了我的注意,现在看来这就是问题所在。
    我首先安装了 gitolite,然后在那里复制了 repos,所以我不得不再次运行 gitolite setup -pk mykey.pub,现在它似乎工作了

    【讨论】:

    • 感谢您的回复VonC!我的~git/.ssh/authorized_keys 中有一个适当的条目,例如:# gitolite start command=... mypubkey # gitolite end
    • 我之前也检查过官方迁移页面,但我认为我做得很好,因为我不需要以前的配置或 .rc 文件。
    • @AttilaHorvath 您的条目是否包含“我的用户名”?如command="/home/git/bin/gitolite-shell myusername",no-port-forwarding,... g3 应该使用gitolite-shell
    • 是的,确实如此,但有一点不同。这是我的:command="$GIT_HOME/src/gitolite-shell myusername",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty 我在 $GIT_HOME 中有一个 bin 目录,但它只包含 gitolite。
    猜你喜欢
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2014-10-20
    • 2012-01-26
    • 2013-05-04
    • 2011-06-20
    • 2011-09-20
    相关资源
    最近更新 更多