我有MainGerritServer,它承载了许多项目。
此外,我有RogueGerritServer,它也托管了许多项目。
我正在寻找一种将ProjectA从RogueGerritServer移动到MainGerritServer的方法,同时保存Git提交历史以及Gerrit回顾历史。
例如,我想将Android项目的Gerrit历史导入到我自己的Gerrit服务器上,这样当我使用一个分叉版本的Android时,我可以在我的本地服务器上查找Gerrit历史记录。做这件事最好的方法是什么?
如果这是一个简单的Git安装,我只需将ProjectA克隆到我的计算机中,然后按下MainGerritServer。基于Gerrit的项目是否以同样的方式工作?
我很担心,因为Gerrit安装在后台使用数据库,我不确定是否也需要迁移数据库中的信息。我看到了许多关于将数据库转储并将其移动到全新服务器的线程。但是,我只想移动一个项目,所以使用DB转储似乎不合适。我所看到的最接近的答案是这,它仍然不是我想要的。
我很感谢你的帮助,尤其是如果你能告诉我我是否误解了如何处理这个问题的话。
谢谢
发布于 2013-07-25 06:53:51
我最近搬了很多git项目,虽然我大部分时间都是从Gerrit搬来搬去的(由于部门法令,Gerrit是个不错的选择,海事组织),这应该是一样的,而且相对容易。然而,移动Gerrit的历史将更加困难。
以下是如何移动回购:
还可以通过添加-u标志将其设置为自动跟踪新回购:
git push --all -u NewGerrit迁移Gerrit数据库是一项更大的工作,老实说,我建议您放弃它,除非绝对必要。您可以通过Gerrit自己的(可怕的)查询语言GSQL直接访问数据库,从而了解所涉及的内容。它很像mysql,只是更容易变化无常,而且缺少很多特性。
ssh -p 24981 HOSTNAME gerrit gsql这将给您一个gsql提示符。试试这个:
gerrit> SHOW TABLES;这些帽子,至少在我能接触到的Gerrit版本中,是很重要的。(诚然,我的已经过时了。)这将向您展示大约29个表,并且您的项目历史记录遍布其中。
根据这是肖恩·皮尔斯的帖子 (Gerrit ),您需要将数据库复制到一个新的db服务器,然后使用SQL手动删除所有其他项目。然后,您可以转储剩余的数据并将其导入到另一个Gerrit服务器。注意到的警告: change_id值可能会发生冲突。不过,他确实建议在这方面做些工作:
您可以找出输入集的最大change_id,手动将目标服务器的change_id_seq设置为预留足够的id空间,然后将所有旧的change_ids都按某个基值,以便它们位于目标空间中的唯一空间.并最终将行加载到目标。
所以这是可以做到的。这是后半身的疼痛。
发布于 2015-08-26 07:53:18
发布于 2017-08-28 17:03:02
我能够让进口商插件工作,但也不断地出现504个错误。这个插件一次需要500个更改(从GlobalCapability.DEFAULT_MAX_QUERY_LIMIT读取,这是硬编码到500个)。我无法成功地构建插件的稳定-2.13分支,所以我只是重新尝试并重新尝试导入,直到它最终成功。
https://stackoverflow.com/questions/17850483
复制相似问题