Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [egit-dev] How to build [EJ]Git?

On Jan 6, 2010, at 15:42, Jason van Zyl wrote:


On 2010-01-06, at 10:23 AM, Alex Blewitt wrote:

So, we've got EGit which builds manifest-first, and JGit which builds pom-first? That sounds like a recipe for disaster. Surely it would be better to do them both in the same way, so that you don't have to have two sets of instructions, one for each?


I think this is the way it should be done actually. Go read Shawn's diatribe on the review commits. I think he's right in most cases. The JGit artifact needs to be a good Maven artifact and a lot of people looking at just JGit don't care about Eclipse or anything OSGi related.

That's fine, I have no objections to the Maven artefact being something that is consumable outside of OSGi. But then again, all OGSi JARs are consumable outside OSGi as normal JARs anyway. The only difference between the two is whether there's any code dependencies on OSGi, and I don't see anyone ever having suggested that that was the case.

The other point to note is that consumers != developers. A maven build, even if it's Manifest first, is still something that's buildable by the commandline outside of Eclipse. So people who want to integrate/use JGit are entitled to do so outside of an Eclipse/OGSi environment with no problems.

It will likely just turn folks off having to deal with the extra complication. The approach we would like to take here is make the maven-bundle-plugin more efficient and integrate it with PDE. Stuart works at Sonatype so this is fully within our realm to complete.

The extra complication, of having two project styles, is already here. Having one way of building them makes sense. It makes absolutely no sense to remove Eclipse metadata from an SCM just because some people might not use Eclipse. There's no reason to not have it, and just ignore it if it doesn't make sense to you. I've edited files by hand with Vi before when doing updates to an Eclipse project without even caring where it was come from. I've also multi-sourced projects to include Eclipse and NetBeans and IntelliJ data in the same project to allow developers to use whatever tool they're comfortable with. Yes, it means that if you need to make a dependency change, there's multiple places that it needs to be done - but JGit is almost obsessive about not introducing more dependencies than is absolutely necessary.

I suspect in the Eclipse world, it's only EGit that will consume JGit. That doesn't prevent other IDEs from consuming JGit, but I don't think that is relevant - development of JGit is mostly done in Eclipse.

I don't think that's true.

Really? Hands up anyone who develops JGit outside of Eclipse right now ...

So, what was the purpose behind being a 'normal' Maven build?


Proper POM that's easily maintainable, and having a build that doesn't expose any OSGi for other integrators. JGit will be integrated into IDEA and Netbeans I'm sure.

Manifest-first doesn't expose OSGi for other integrators. It's just a different format. Again, this doesn't prevent integration into IDEA and NetBeans, either from a consumer perspective or from a developer perspective.


As a maven-bundle-plugin project the manifest is generated. Though I think creating a BND file which represents the final manifest would be better ...

If we're doing that, we might as well use Manifest-first development. After all, the only difference is syntax - you still have a file you must manage/maintain in SCM.

Seriously go read the review commit log from Shawn about having to deal with the manifest-first mode for JGit. I don't think it can be at this point.

Based on what assertion? There seems no technical reason why we need to do this in order to develop JGit. All there are are misunderstandings which can be rectified.

We'll make it work, and it's another important bridge between POM- first and manifest-first builds. We don't mind getting that work. Cases like this are going to be pretty normal for a few years.

Why don't we just have something that works now? We seem to have bazooka'd ourselves in the foot at this point to make it more difficult to develop. I'm all for Maven and Tycho, but this seems to be absolutely the worst way to convince Eclipse(.org) that building OSGi artefacts with Maven is a sensible way of doing things.

I believe the right way it is:

JGit = POM-first
EGit = Manifest-first

I believe this prevents people working on JGit, and by extension, EGit. Whether it's correct from a purists perspective or not is a different matter.

And we'll just have to make it work in the workspace.

This seems to be a big distraction in terms of time and effort purely to satisfy a philosophical argument that detracts from being able to do work on E/JGit. Even before both moved to Eclipse, it was still possible to build these as Eclipse projects. Now we don't even have that.

Sure it's wrong, but integrating POM-first and Manifest-first in Eclipse is new territory and we're happy to do the work. But ultimately this is your project, we're just trying to help so choose the tool that works best for you.

I appreciate the help, and I look forward to this working. But this still doesn't answer the observation that doing JGit one way and EGit the other way is wrong. That, I believe , is the decision that needs to be unmade in order to move forwards, rather than wasting time solving meta-problems.

Alex

PS The JGit list is separate; however, when one was created, it didn't seem to copy over the membership. This sounds like the kind of decision that should cc both mailing lists for respective input.


Back to the top