Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can one take several top-level projects in Gerrit and move them under another "container" project?

Tags:

git

gerrit

I have a Gerrit installation within which are several related projects (each in a git repository). Another project is coming online would also use gerrit, but for the sake of tidiness I'd like to take the existing set of projects and put them under a new super-project (so that at the top level one sees the "umbrella" projects. I'd also like to retain the data we have for this (e.g., the review history).

How does one go about doing something like this? Another way of looking at this is, how does one move a sub-project in gerrit from one super-project to another?

like image 232
MartyMacGyver Avatar asked Oct 27 '25 05:10

MartyMacGyver


1 Answers

Thanks to this blog post I stumbled upon this morning, I found a solid path to the solution! While it's not exactly simple it's robust and it works.

Ensure you've already created the umbrella project you will be re-parenting the subproject to, and perform the following steps:

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
like image 112
MartyMacGyver Avatar answered Oct 29 '25 21:10

MartyMacGyver



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!