我有一个Gerrit安装,其中有几个相关项目(每个都在一个git存储库中)。另一个即将上线的项目也将使用gerrit,但为了整洁,我想采用现有的一组项目并将它们置于一个新的超级项目之下(这样在顶层就可以看到“伞形”项目我还想保留我们为此提供的数据(例如,审核历史)。
如何做这样的事情?另一种看待这种情况的方法是,如何将gerrit中的子项目从一个超级项目转移到另一个超级项目?
答案 0 :(得分:3)
感谢我this blog post今天早上偶然发现,我找到了解决问题的坚实途径!虽然它不是很简单但它很强大而且很有效。
确保您已经创建了将子项目重新为子项目的伞形项目,并执行以下步骤:
MYGERRIT=ssh://${MYGERRIT_IP}:${MYGERRIT_PORT}
mkdir ~/x
cd ~/x
# Clone the repo for the subproject you want to re-parent
git clone ${MYGERRIT}/<subproject>
cd <subproject>
git fetch origin refs/meta/config:refs/remotes/origin/meta/config
git checkout meta/config
# Make changes to project.config
-----> inheritFrom = <your_umbrella_project_name>
# Commit changes
git add -A
EDITOR=vi git commit -a
# Push changes
git push origin meta/config:meta/config # If pushing directly
#git push origin meta/config:refs/for/meta/config # If going through gerrit
# Flush gerrit caches
ssh -p ${MYGERRIT_PORT} ${MYGERRIT_IP} gerrit flush-caches --cache project_list
ssh -p ${MYGERRIT_PORT} ${MYGERRIT_IP} gerrit flush-caches --cache projects