Am Freitag, 17. April 2009 11:59:05 schrieb Andreas Gruenbacher:
On Friday, 17 April 2009 11:40:04 Michael Schroeder wrote:
On Thu, Apr 16, 2009 at 11:59:42PM +0200, Andreas Gruenbacher wrote:
* When checking out a link, always expand it against the revision of the target package that the link was created against. That way, links cannot break (unless the target package is deleted).
Just to make sure I understand you: This is just about the checkout? The build service still builds packages with the link applied to the latest revision?
Yes, *exactly*. This is about what osc checks out, and it is about recording which revision of the target a link was generated against in the first place in order to even allow that. It has nothing to do with the existing <link rev=...> mechanism aka osc linkpac --revision aka osc linkpac --current.
So your checked out sources don't match the sources used for building?
When links are involved, the version that a checkout produces by definition cannot be the same as the version used for building the link package at different points in time: the very idea of source links is to have changes propagate automatically without requiring a manual merge.
I absolutely want to be able to reproduce the original version of a link package as it was originally created. The easiest way to get there is to simply make this the default checkout behavior (but to indicate to the user that more recent revisions of the target package are available and that a merge is required).
If you really, really insist on performing an automatic merge upon checkout, feel free to go ahead and implement that, but please do give users a choice to check out the original version if they want to, and use three-way merges instead of just apply a basically random diff which may misapply in the most obscure ways without without the user even noticing.
I do not think it is a good idea to checkout out something different than to build against on the server. And your "really, really" indicates that you still not accept that our main goal is to show up changes and conflicts as soon as possible. But this is the approach of the OBS. We trigger builds automatically when something below changes, so we need also show conflicting source changes immediatly to all parties. Otherwise we will not scale for getting stuff merged into Factory from multiple sides (so far the small autobuild group had to fix other peoples way too often. This will not work with even larger world wide groups. So we need to report this back automatically to let the submitter fix their stuff first). So we desperately need the server side merge for automatic package building from my point of view. And no, I am not aware how to do this with some other SVC systems (except you build code which is doing this on top). However, can we agree on the following: * osc needs the merge command based on diff3 as it Michael has already as perl prototype. * We can store for the cases where the server created the diff the used source revision. (so you can not rely on the existence) So you can write your tool (or a second osc checkout mode via option?) depending on this. bye adrian -- Adrian Schroeter SUSE Linux Products GmbH email: adrian@suse.de -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-packaging+help@opensuse.org