On Friday, 17 April 2009 9:11:39 Adrian Schröter wrote:
Hi Andreas,
without going into detail, I just want to say that using source links without revision is actually a wanted feature
Apparently I wasn't clear enough in my initial email. We are talking about two different things here: * Recording which revision of the target package a link was generated against vs. * "Freezing" a link to a specific revision of the target package. Freezing here means that no changes in the target package will propagate to link packages; this obviously changes the meaning of links significantly. The --revision=rev an --current options of osc linkpac both freeze the link package; this shows up as <directory trev=...> and as <link rev=...> when you look at the metadata. I am not arguing against the link mechanism per se. Propagating and merging changes in two packages at build time is a desired feature, it makes sense, and I am perfectly fine with keeping it. Recording the ancestor of a link (which will become the common ancestor when merging future revisions of the link and the target package) does not mean to freeze the link to that revision. This is the part sorely missing at the moment.
and you should not compare this to branch mechanisms of other SVC's.
I'm afraid to point out that what the link mechanism is trying to achieve is exactly a merge of two packages (which have a common ancestor). The merge is done temporarily before building, but that doesn't mean it's not a merge. The build service uses a poor man's merge using the diff(a, b) and apply(d, c) operations as I have called them, where diff() is done by the diff utility, and apply() is done by the patch utility. More serious version control systems use the merge(c, a, b) operation, which often uses the merge or diff3 utilities. [If you look more closely at those tools, you will find that merge actually uses diff3 internally, and that diff3 uses the base operations diff(a, b) and diff(a, c) and merges the result.] So please forget the argument that build service source links are different from anything anyone has ever done before; conceptually they are really what version control systems have done since forever. It's an elegant mechanism used in a clever way, but the mechanism itself is not new at all. Thanks, Andreas -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-packaging+help@opensuse.org