Проблема такая: хочу перевести свой проект под управление svn, но не могу понять, как организовать хранилище.
Сейчас ситуация такая: проект имеет несколько библиотек функций. Для каждой библиотеки написан отдельный тест-кейз, который проверяет корректность работы этой библиотеки. Тест-кейз сам по себе является проектом -- у него есть свой make-файл и ряд вспомогательных файлов. Естественно, если библиотека вдруг работает неправильно, в ее код вносятся изменения. Сейчас это сделано с помощью символической ссылки -- на самом деле есть один файл библиотеки, который можно изменять как в основном проекте, так и в тест-кейзе. В чем проблема с такой организацией? А в том, что если немного поменять формат библиотеки в основном проекте, то при тестировании приходится "подгонять" тест-кейз к новому формату и много времени уходит, чтобы понять, что и как изменить, чтобы тест-кейз просто заработал. Образно можно себе представить это так: есть два разработчика -- один пишет основной проект, один -- тест-кейз, оба в процессе работы изменяют общий файл -- текст библиотеки, всё остальное у них разное, есть даже файлы с одинаковыми именами, но разным содержимым (Makefile'ы, например), т.е это ситуация двух проектов с одним общим файлом, в котором необходимо разруливать конфликты изменений.
Чего хочется: хочется всю эту систему отдать под управление svn так, чтобы все изменения, сделанные в библиотеке были видны и в тест-кейзе и наоборот, исправления, внесенные при отладке были видны в основном проекте. Если рассматривать проблему предыдущего параграфа, то хотелось бы, чтобы система версий составляла саммари всех изменений в коде библиотеки, которые "видны" из обоих проектов и позволяют облегчить работу по "подгонке" остального кода. Ну и, конечно, хочется поиметь и все "плюшки" от работы с VCS -- протоколирование изменений, версионирование и т.д. и т.п.
Вопрос: как это сделать, минимально ломая структуру обоих проектов? И вообще, с минимумом усилий? Все, что пока пришло мне в голову -- сделать тест-кейз веткой основного проекта, удалить все файлы, кроме исходника библиотеки, добавить туда "свои" файлы и с этим работать, но это... топорно как-то.