如何在Gerrit中采用几个顶级项目并将其移至另一个“容器”项目下?

时间:2012-12-06 07:01:15

标签: git gerrit

我有一个Gerrit安装,其中有几个相关项目(每个都在一个git存储库中)。另一个即将上线的项目也将使用gerrit,但为了整洁,我想采用现有的一组项目并将它们置于一个新的超级项目之下(这样在顶层就可以看到“伞形”项目我还想保留我们为此提供的数据(例如,审核历史)。

如何做这样的事情?另一种看待这种情况的方法是,如何将gerrit中的子项目从一个超级项目转移到另一个超级项目?

1 个答案:

答案 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