На самом деле я бы смешал метаданные в свойствах svn и (версионные) простые xml-подобные файлы.
1) Все, что связано с сервером, может быть удобно сохранено в свойствах svn, если вам нужно то, что может быть не так здесь. Я имею в виду свойства делать что-то особенное с файлом или каталогом, когда вы переходите к фиксации, извлечению / экспорту, ... Например, если вы хотите использовать скрипты ловушек для обновления какой-либо внешней документации каждый раз, когда вы прикасаетесь к конкретному файлу.
Использование таких скриптов-ловушек для поддержания отдельной информации в актуальном состоянии обычно позволяет избежать более трудоемких процедур, которые сканируют всю базу данных, и менее тяжелым для сервера.
2) Сценарии для обработки вашей базы данных будут лучше размещаться в файлах репозитория (в формате xml или в любом другом формате). Типичным примером является сценарий, который компилирует все или часть ваших инструментов и создает инсталлятор, поэтому имеет смысл хранить сведения о ваших инструментах в легко читаемом / управляемом файле. И, как вы указали, он должен быть максимально независимым от сервера (однако у вас может быть несколько ссылок, например, включение ревизии в окончательное приложение для отслеживания их версий).
Это то, как я сейчас поступаю, и это работает хорошо (хотя пока не очень подробно проработано в скриптах хуков). Это помогло разделить оба.
Я просто еще не уверен, какой лучший язык будет для реализации хуков. Python (с pysvn ) великолепен, но каждый раз вызывает перезагрузку интерпретатора и динамически печатается - не проверял влияние. Я не смог найти ни одного надежного API для C #, который бы также работал на Linux с Mono, может быть, C или C ++. Я полагаю, это в основном зависит от того, что должно быть сделано.