Thank you xtifr and Anonymous for directing my attention to the question of how
git actually does store its information. Searching found this very detailed and
very technical discussion in the form of commented quotes from an IRC discussion
in which Linus himself explained the critical algorithms and heuristics used by
git. This is actually now a file in the git technical documentation
pack-heuristics.txt
To summarize the points relevant
to this discussion:
Linus summed up the description by
saying
More importantly, they allow git to still _conceptually_
never deal with deltas at all, and be a "whole object" store
In
other words, routines within git can act like all the files are stored, the way
xitfr said, but actually when a file is requested it may be generated on the fly
from the packed object representation that makes use of compressed
deltas.
The base files from which deltas are generated are selected using
heuristics that favour using the most recent versions of files and producing the
deltas going back in time. Thus if an old version of a file contained copied
Sun/Oracle code and the code was removed, most likely after the git repository
is garbage collected or repacked the only full version of the file is in a
compressed latest version, while the older versions are represented only by
compressed deltas from that latest version.
There are more complicating
factors. In a case like the file PolicyNodeImpl.java being removed completely
rather than changed, then even with the packing heuristics the original
allegedly infringing file may be what is stored as the compressed base - There
is no delta to store other than something to indicate that the file no longer
exists.
However, Google does not even supply a full git repository with all
archived version history. Following their instructions for getting the source
tree involves using a wrapper around git that gives you just the version
requested.
Probably the best way to simplify all of this is to argue that
Google did delete the allegedly infringing code fro the versions of Android that
it distributes. That the files can still be found somewhere on a Google server
is not relevant to the question as to whether Android being distributed nowadays
contains those files. [ Reply to This | Parent | # ]
|