[Ovirt-devel] How to handle 3rd party code?
Scott Seago
sseago at redhat.com
Thu Oct 23 16:17:19 UTC 2008
Darryl Pierce wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Jason Guiditta wrote:
>
>> I have been meaning to send an email to the list about this for weeks.
>> I am looking to assemble a consensus on how to handle version control
>> for some 3rd party code we are using in the server suite. These are,
>> for the moment at least, rails plugins (not necessarily available as
>> gems or rpms) and javascript libraries/plugins. There are a couple of
>> issues we need to solve here:
>> 1) Keeping up to date on these bits of code, which may or may not be
>> available in git (a lot of the javascript is hosted in svn, some no
>> version control at all)
>> 2) We may have our own patches that we need to carry, though of course
>> we will try to push them upstream.
>> 3) Many of these items do no follow our practices- specifically
>> whitespace and ^Ms. This makes it difficult to drop in the updated code
>> and compare it to our (cleaned-up) version in git, especially if we have
>> made any changes/customizations.
>>
>> The only idea I have heard/read about that seems to be a possible good
>> solution is sub-modules, but there seems to be a fair amount of
>> maintenance involved in keeping them in synch with our main repo
>> whenever we do an update or patch to one of the modules. From what I
>> have seen, you have to have a reference in the main repo pointing to the
>> sub-module, including correct version. This would mean every update to
>> the sub-module would also require an update to the server repo, which is
>> easy enough, but feels like something that would easily be missed. Maybe
>> this is easier than I think, perhaps someone else can clear that up for
>> me. Also, if there are issues I did not outline above, please speak up
>> so we can consider those as well.
>>
>
> I think the best solution would be to keep their code out of our
> repository and instead package them as separate RPMs and then depend on
> them from ours. As an example, look at how we require rubygem-cobbler
> and rubygem-activeldap. Neither is kept in our repository.
>
> How many dependencies do we have?
>
>
The difficulty here is that we're not talking about the sort of reusable
components that just need to be installed in a standard location and
added to the right search path (as is the case with rubygem-cobbler).
We've got javascript files that need to be included in
/usr/share/ovirt-server/public/javascript and the plugin code that needs
to be installed under /usr/share/ovirt-server/vendor/plugins.
We _could_ package them as separate RPMs but the dependencies would be
messy -- since they must live under the app root they would depend on
ovirt-server, but since ovirt-server needs them, then the dependency
needs to go the other way.
So what we have here is a collection of code from different sources that
actually forms part of our app. On top of that we have some
ovirt-specific customizations to the javascript libraries which does
need to live in our repo.
Scott
More information about the ovirt-devel
mailing list