forked from robur/blog.robur.coop
Add @hannesm's reviews
This commit is contained in:
parent
f9b9b712ec
commit
04e71b2485
1 changed files with 9 additions and 7 deletions
|
@ -28,8 +28,9 @@ Furthermore, if we have 2 blobs (2 versions of a file), one of which contains
|
||||||
'A' and the other contains 'A+B', the second blob will probably be saved in the
|
'A' and the other contains 'A+B', the second blob will probably be saved in the
|
||||||
form of a patch requiring the contents of the first blob and adding '+B'. At a
|
form of a patch requiring the contents of the first blob and adding '+B'. At a
|
||||||
higher level and according to our use of Git, we understand that this second
|
higher level and according to our use of Git, we understand that this second
|
||||||
level of compression is very interesting: we generally just add/remove new
|
level of compression is very interesting: we generally just add/remove few lines
|
||||||
keywords in our files of our project.
|
(like introduce a new function) or delete some (removing code) in our files of
|
||||||
|
our project.
|
||||||
|
|
||||||
However, there is a bias in what Git does and what we perceive. We often think
|
However, there is a bias in what Git does and what we perceive. We often think
|
||||||
that when it comes to patching in the case of Git, we think of the
|
that when it comes to patching in the case of Git, we think of the
|
||||||
|
@ -39,14 +40,14 @@ been added or deleted between two files, they are not necessarily optimal for
|
||||||
producing a _small_ patch.
|
producing a _small_ patch.
|
||||||
|
|
||||||
In reality, what interests us in the case of the storage and transmission of
|
In reality, what interests us in the case of the storage and transmission of
|
||||||
these patches over the network is not a form of lisibility in these patches but
|
these patches over the network is not a form of readability in these patches but
|
||||||
an optimality in what can be considered as common between two files and what is
|
an optimality in what can be considered as common between two files and what is
|
||||||
not. It is at this stage that the use of [duff][duff] is introduced.
|
not. It is at this stage that the use of [duff][duff] is introduced.
|
||||||
|
|
||||||
This is a small library which can generate a patch between two files according
|
This is a small library which can generate a patch between two files according
|
||||||
to the series of bytes common to both files. We're talking about 'series of
|
to the series of bytes common to both files. We're talking about 'series of
|
||||||
bytes' here because these elements common to our two files are not necessary
|
bytes' here because these elements common to our two files are not necessary
|
||||||
humanly readable. To find these series of common bytes, we use [Rabin's
|
human readable. To find these series of common bytes, we use [Rabin's
|
||||||
fingerprint][rabin] algorithm: [a rolling hash][rolling-hash] used since time
|
fingerprint][rabin] algorithm: [a rolling hash][rolling-hash] used since time
|
||||||
immemorial.
|
immemorial.
|
||||||
|
|
||||||
|
@ -110,7 +111,7 @@ using a method (such as compression). Isomorphism ensures that we can 'undo'
|
||||||
this method and obtain exactly the same result again:
|
this method and obtain exactly the same result again:
|
||||||
|
|
||||||
```
|
```
|
||||||
x == decode(encode(x))
|
decode(encode(x)) == x
|
||||||
```
|
```
|
||||||
|
|
||||||
This property is very important for emails because signatures exist in your
|
This property is very important for emails because signatures exist in your
|
||||||
|
@ -392,8 +393,8 @@ to move a little faster, especially in terms of serializing our emails. Our
|
||||||
experience with ocaml-git also enabled us to identify the benefits of the PACK
|
experience with ocaml-git also enabled us to identify the benefits of the PACK
|
||||||
file for emails.
|
file for emails.
|
||||||
|
|
||||||
But the development of Miou was particularly helpful in satisfying us in terms
|
But the development of [Miou][miou] was particularly helpful in satisfying us in
|
||||||
of program execution time, thanks to the ability to parallelize certain
|
terms of program execution time, thanks to the ability to parallelize certain
|
||||||
calculations quite easily.
|
calculations quite easily.
|
||||||
|
|
||||||
The format is still a little rough and not quite ready for the development of a
|
The format is still a little rough and not quite ready for the development of a
|
||||||
|
@ -419,3 +420,4 @@ So, if you like what we're doing and want to help, you can make a donation via
|
||||||
[mbox]: https://en.wikipedia.org/wiki/Mbox
|
[mbox]: https://en.wikipedia.org/wiki/Mbox
|
||||||
[donate-github]: https://github.com/sponsors/robur-coop
|
[donate-github]: https://github.com/sponsors/robur-coop
|
||||||
[donate-iban]: https://robur.coop/Donate
|
[donate-iban]: https://robur.coop/Donate
|
||||||
|
[miou]: https://github.com/robur-coop/miou
|
||||||
|
|
Loading…
Reference in a new issue