Mailinglist Archive: opensuse-packaging (100 mails)
| < Previous | Next > |
Re: [opensuse-packaging] Source links semantics, broken links, and merging
- From: Andreas Gruenbacher <agruen@xxxxxxx>
- Date: Sat, 18 Apr 2009 00:01:46 +0200
- Message-id: <200904180001.46229.agruen@xxxxxxx>
On Friday, 17 April 2009 14:03:15 Michael Schroeder wrote:
Well ... that's not really true today: when osc checks out a link package in
expanded form, it relies on the server's idea of what that expansion is.
Looking at the example I gave in the email that opened this thread,
target(1)
target(2) <--- link(1)
link(2)
target(3)
When osc checks out link(2) after target(3) has been created, the server
decides to deliver apply(diff(target(2), link(2)), target(3)) instead. The
email stating this thread explains how this is almost but not quite a merge,
and why the result cannot be relied upon.
The two ways to fix it are either:
* to deliver the original version of link(2), i.e.,
link(2) == apply(diff(target(2), link(2)), target(2))
and to implement merging client side, or
* to deliver the actual merge result, i.e.,
merge(target(3), target(2), link(2)) and only resolve merge conflicts
on the client.
So please let's fix this one of these ways. (In my opinion merging belongs on
the client, but either way would actually work.)
Thanks,
Andreas
--
To unsubscribe, e-mail: opensuse-packaging+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-packaging+help@xxxxxxxxxxxx
If you really, really insist on performing an automatic merge upon
checkout, feel free to go ahead and implement that, [...]
That's nothing that we dictate, it's what the client does (in your
case osc).
Well ... that's not really true today: when osc checks out a link package in
expanded form, it relies on the server's idea of what that expansion is.
Looking at the example I gave in the email that opened this thread,
target(1)
target(2) <--- link(1)
link(2)
target(3)
When osc checks out link(2) after target(3) has been created, the server
decides to deliver apply(diff(target(2), link(2)), target(3)) instead. The
email stating this thread explains how this is almost but not quite a merge,
and why the result cannot be relied upon.
The two ways to fix it are either:
* to deliver the original version of link(2), i.e.,
link(2) == apply(diff(target(2), link(2)), target(2))
and to implement merging client side, or
* to deliver the actual merge result, i.e.,
merge(target(3), target(2), link(2)) and only resolve merge conflicts
on the client.
So please let's fix this one of these ways. (In my opinion merging belongs on
the client, but either way would actually work.)
Thanks,
Andreas
--
To unsubscribe, e-mail: opensuse-packaging+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-packaging+help@xxxxxxxxxxxx
| < Previous | Next > |