[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Ovirt-devel] How to handle 3rd party code?

Darryl Pierce wrote:
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.


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]