Our SVN repositories have different hooks depending on each module. Here we split them out into modules with the same hooks, and modules with custom hooks.
hooks.tar.gz is the set of per-module hooks, and the /svn/bin directory. This was imported into git here: http://gitorious.org/projects/gnome-svn-hooks/repos/mainline
With "git cat-file -p HEAD" we get this:
tree 57da047dd5e64803eb084e971b30dfdc1fd459a4 ...
Then with "git cat-file -p 57da04" we get the list of modules and their subtree hashes. Subtrees with identical hashes have the same content, and thus the same hooks.
We separate the modules into those with different content for the hooks, and those that have identical hooks among them.
We look at what each group of hooks do:
In that file, note that there are groups A through D, with mostly the same content for hooks (with just whitespace changes), except for a few cases noted below. That file also has the modules that have custom hooks, which turn out to be mostly the same to each other, just slightly different for each web module that needs to update a web page.
Overview of the hooks used by modules:
- All modules run exactly the same post-commit hook.
- All modules except (mango, mhonarc, sysadmin-bin) run exactly the same pre-commit hook. Those three exceptions don't have a pre-commit hook at all.
Modules for web sites run the common post-commit hook, and then something like echo $REPOS $REV | mail -s "UPDATE art-web" email@example.com However, not all of them mail the same address or even addresses within the gnome.org domain. One module (torrent-web) even mails an IP address, apparently a torrent site.