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