OT: SVN checkout checksumming
keramida at ceid.upatras.gr
Wed Feb 4 15:37:47 PST 2009
On Wed, 04 Feb 2009 10:20:25 -0500, FreeBSD <freebsd at optiksecurite.com> wrote:
> Hi everyone,
> I have asked this question on the svnforum.org and didn't got a good
> answer, so I try it here.
> I want to use SVN to automate the update process of a custom
> application. So, I'm planning to indicate to every PC to update
> periodically to a specific branch of the repository. The problem is
> that I need to be sure the files where not corrupted during the
> transfer. So, I'm planning to generate the hash (SHA or MD5, doesn't
> really matters) of every file downloaded by SVN on the client. For
> this to work, I need to compare the hashes with their server-side
> equivalent. I looked at the post-commit hooks and it looks pretty
> interesting but is anyone doing something similar? How are you
> creating the file containing the hash of the committed file?
Let's assume for a moment that you install a post-commit hook that
generates a SHA-256 checksum of all the files in the latest repo
revision on the svn server.
For the sake of simplicity, let's assume that this file is a simple,
plain text file that is named db/revs/NUMBER.sha256 where 'NUMBER' is
the revision number you are check-summing.
How are you going to *safely* transmit those SHA-256 checksums to the
client on 'svn checkout'?
If you have a communication channel between the SVN server and its
clients that it "secure enough", why would you want to go through the
extra hoops to communicate the checksums of the files and not tunnel the
checkout itself through the secure channel?
> I got 2 answers on the forum from people thinking that SVN takes care
> of the checksumming by itself, but I would like a little more
> information than that. What is the algorithm used would be a nice
They were probably referring to the internal checksums of the FSFS
storage format of the SVN repository itself.
There is a description of the internal FSFS storage format at:
This may be useful as you try to understand what is stored in an
FSFS-based Subversion repository.
More information about the freebsd-questions