On Saturday, 18 April 2009 5:15:54 Andreas Gruenbacher wrote:
* When the build service builds a link package, it *also* does a proper three-way merge. (If there are merge conflicts, it gives up, of course.) This merge result is only used for that specific build, and thrown away at the end. (I trust that the build log contains the revisions of all packages involved.) This is almost the same as expanding a source link as done now, except that a three-way merge is more robust against mis- merges. Using the identical operation on the server as on the client ensures that users can easily reproduce the exact state of the sources of a package.
What I should mention (or repeat) here is that the implementation of merge(c, a, b) is based on diff(a, c) and diff(a, b). This could be used to compute merge(c, a, b) more efficiently for source links (remember that source links are stored as diff(a, b). Also, merge(c, a, b) can be computed for any three packages, so storing source links as diffs is not actually a requirement. Arbitrary full packages could be merged just as well; all it would take is to define which project/package/revision is the common ancestor. Andreas -- To unsubscribe, e-mail: opensuse-packaging+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-packaging+help@opensuse.org