[openstack-dev] Cross-Repo Dependencies in Zuul
Ihar Hrachyshka
ihrachys at redhat.com
Tue Feb 10 23:33:03 UTC 2015
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 02/11/2015 12:09 AM, Sean Dague wrote:
> On 02/10/2015 05:47 PM, Ihar Hrachyshka wrote:
>> So cool! A comment inline.
>>
>> On 02/10/2015 11:26 PM, James E. Blair wrote:
>>> Hi,
>>
>>> We have added support for cross-repo dependencies (CRD) in
>>> Zuul. The important bits:
>>
>>> * To use them, include "Depends-On: <gerrit-change-id>" in the
>>> footer of your commit message. Use the full Change-ID ('I' +
>>> 40 characters).
>>
>>> * These are one-way dependencies only -- do not create a
>>> cycle.
>>
>>> * This is what all the grey dots and lines are in the check
>>> pipeline.
>>
>>> Cross-Repo Dependencies Explained
>>> =================================
>>
>>> There are two behaviors that might go by the name "cross-repo
>>> dependencies". We call them one-way and multi-way.
>>
>>> Multi-way CRD allow for bidirectional links between changes.
>>> For instance, A depends on B and B depends on A. The theory
>>> there is that both would be tested together and merged as a
>>> unit. This is _not_ what we have implemented in Zuul.
>>> Discussions over the past two years have revealed that this
>>> type of behavior could cause problems for continuous deploments
>>> as it means that two components must be upgraded
>>> simultaneously. Not supporting this behavior is a choice we
>>> have made.
>>
>> Though I understand your reasoning behind not providing atomic
>> merges of multiple commits, I want to say that the feature would
>> be very useful for projects that are not decoupled enough. F.e.
>> see neutron advanced services repos that are split out of main
>> neutron project but still use lots of code from neutron
>> namespace, making it hard to introduce changes into the main repo
>> without breaking advanced services for some time. The same is
>> true for decomposed plugins and mechanism drivers for neutron.
>
> Atomic merges across git trees is a really bad idea.
>
> If you want atomic merges, there is an easy solution, be one git
> tree.
>
> If you are allowing folks externally to consume your code directly
> via import, then that needs to be a stable interface that has
> deprecation rules associated with it. All else is craziness.
Long term, I can't agree more. Short term, while we decouple stuff and
in the middle of the process, that's too idealistic to be true.
Though we think about stabilizing API, moving it to a separate common
library, and even spinning up advanced services into separate services
with their own REST. It will just take some time.
/Ihar
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAEBAgAGBQJU2pUvAAoJEC5aWaUY1u57+KUH/1j3Yl4fdxGJcCIy26s3otSe
DIYopsOiQ0jb2XQ9ZlJ59Kq/KsYKUnHY46Pn6ZBH+iBBbjJke/VT8RaPZ9dJbI55
seTCi/ODEz1fYoZrhlQxRVKm7H465dBYffGKjp6eNfmL6DnIjBnvFcrL2dmKdSkV
BDGmiGBXaNJ7CDBH1PEdFoHpL7zn8ToPxgaEVEU2AH9WjIyX6gO5jYpDKvMWjvJt
O99WSY3MNVkIveFIyiISswXkJK5Bieif/DFmSlWpMKETiT/vRePjKuY0GlDKqC/r
yjKAEbC63Hu3Q0HUMJPc99XZM7TKJ5+I9krFuTw9zBy/ZfxUay5aBdgVzu65j8g=
=63NO
-----END PGP SIGNATURE-----
More information about the OpenStack-dev
mailing list