从现有的v2 repos创建v3 gitolite存储库

时间:2013-03-20 12:11:05

标签: gitolite

我的公司服务器上安装了一个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或测试之外的任何东西,那就是sais:
FATAL: R any myrepo1 myusername DENIED by fallthru

我检查了几件事:
ls -l $GIT_HOME - > gitolite:gitolite我没想到,因为gitolite是我想要使用的用户
我对repositories目录中的所有条目执行了相同操作,权限相同。

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

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

2 个答案:

答案 0 :(得分: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- 旧:我们已经从旧存储库中获得了我们想要的东西。通过在exit 0文件的顶部添加.gitolite.rc来禁用旧的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 :(得分:0)

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

中所述
  

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

     

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

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

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


OP Attila Horvath confirms

  

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

     

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