Insofar as I understand it, tools like Git and Mercurial derive checksums from their data, and those checksums are used to derive other checksums used in aggregate, leading to a kind of accumulative checksumming (checksums being the input to other checksums), that ensures a high level of integrity.
Is there a name for that, and if so, what is it? (Other than “accumulative checksumming” (which, according to Google, is not well used, or I just made up.) My Google foo is failing me here…
Another way to put it, is there a name for the way a Git repository ensures its integrity?
Sorry for the vagueness – grasping for terminology I sense should exist but I can’t actually find.
It’s called a hierarchical checksum.
The corresponding tree is known as a Merkle Tree or hash tree or more rarely authentication tree.
6
I would call it a recurrence checksum.
In mathematics, a recurrence relation is used for a sequence recursively defined, starting with an initial value, and where the following term is defined from the previous one: u(0)=u0, u(n+1)=f(u(n))
.
The git checksum mechanism is a typical example of that kind of function. I would stick with the commonly-accepted term in the mathematical circle, which is usually intersecting with the computer science one.
For another version of a recurrence checksum, please see this paper on rolling checksum, used by rsync. However you can’t generally call them rolling checksum
as this algorithm is only a special case.
2
As far as I’m concerned it’s still just “checksum”.
The “sum” part of the name is a little misleading – the algorithms used to create checksums usually involve much more than just addition*. When you aggregate checksums, you’re really just creating a more complicated algorithm.
*
In fact, checksum algorithms which just involve summing are typically going to do a much poorer job of detecting differences.
You understand it correctly. A Git initial commit checksum can be used to identify the entire repo. I have never heard / seen an exact term for it. It’s just a method of ensuring integrity, as you said.