Add documentation of how repository mirroring leverages aspects of project import.
Problem
Project mirroring is owned by groupsource code, project import/export is owned by groupimport and integrate. However, project mirroring leverages project import functionality. There's no developer documentation how the two features intersect which makes it difficult for engineers from the respective groups to be mindful about side effects when working on one of these two features. Just recently, a production incident was caused because of groupimport and integrate introduced a change that notifies project creators upon completion of their project import. This also caused emails being sent to users who had set up project mirrors.
Proposal
repository mirroring must be setting the
ProjectImportState
state fromfinished
toschedule
and then restarting using the same object over and over, so our hooks on state transitions need to account forfinished
not being a final endpoint.
We should document how repository mirroring leverages importer functionality to allow developers better understand how the two features depend on each other.