On 21/05/15 12:48, Jan Lahoda wrote:
As an example, consider we would be currently storing data for 6, 7 and 8. We could have full 8 APIs stored, and then 8->7 diff and 7->6 diff. So the baseline for 7 would be 8 and the baseline for 6 would be 7.

When the data for 9 would be added(*), we could keep the full APIs for 8 (to avoid wasting space in the repository), and then store 8->9 and 8->7 diffs (and drop 6). So 8 would be the baseline for both 7 and 9. So, some flexibility may be useful here.

Does this make some sense?
It seems to me that versions form a total order. If you pick N to be your baseline, you should generate a full API for that K, and then generate incremental diffs for K < N and K > N - example:

case 1:

platforms: { 6, 7, 8 }
baseline = 8

files: 8, 8->7, 7->6

case 2:

platforms { 7, 8, 9 }
baseline = 8

files: 8->9, 8, 8->7

So, can't we just assume that there's a set of platforms (which can be sorted), and a baseline K pointing at one of them? Then it's easy to figure out how you should generate diffs:

sym(N) := <full N file>, where N == K
sym(N) := diff between sym(N-1) and N, where N > K
sym(N) := diff between N and sym(N + 1), where N < K

Maurizio

Reply via email to