Страницы

понедельник, 14 февраля 2011 г.

Как разделить репозиторий Subversion

Иногда необходимо разделить хранилище Subversion, и перенести его на другой сервер. Задача решаема, хотя и с некоторыми трудностями. Решить ее удалось на основании этой статьи.
Но как всегда, возникли нюансы.
Но давайте по порядку. Пускай у нас был проект по адресу http://server/svn/Root/Projects/XYProject, а физически хранилище располагалось на F:\Repositories\Root. Задача был заключалась в том, чтобы вырезать проект XYProject со всей историей, и перенести в новое хранилище.
1. Создать дамп хранилища:   

   svnadmin dump F:\Repositories\Root > fullrepo.dump 
Команда отработала без ошибок, через пару минут дамп был готов для дальнейших опытов.


2.Отфильтровать дамп

Дальше нужно отфильтровать дамп по нужному нам пути, что делается командой svndumpfilter. Команда замечательно работала, но отфильтровывала вообще всё. Поковырявшись в дамп (он в простом текстовом формате), удалось написать правильную строку для фильтра.

   svndumpfilter include /Projects/XYProject/trunk < f:\fullrepo.dump > f:\XYProject.dump

Итак, есть готовый отфильтрованный дамп. Дело за малым, выполнить 3-ю рекомендацию статьи: исправить пути, и удалить запись о создании корневого каталога.

3. Исправить пути, и удалить запись о создании корневой папки

Не буду описывать свои попытки заставить работать sed на Windows, но у меня это так и не получилось. От 100Мб файла он оставлял 10-15Кб. В итоге сделал тоже самое через старый добрый notepad++.
Итак, что надо сделать: 

найти все строки пути вида

Node-path: Projects/XYProject/trunk/XYProject.Presentation
Node-copyfrom-path: Projects/XYProject/trunk/XYProject.Presentation/Class1.cs

заменить соответственно на:

Node-path: trunk/XYProject.Presentation
Node-copyfrom-path: trunk/XYProject.Presentation/Class1.cs

а также найти строки вида (создание папки для вашего проекта), и удалить их.

Node-path: Projects/XYProject/trunk
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10

PROPS-END

4. Импорт исправленного дампа на сервер. 

svnadmin load D:\Repositories\XYProject < f:\XYProject.dump


Если вы всё правильно сделали на предыдущих шагах, то проблем возникнуть не должно, и вся история ваших изменений ляжет на новый сервер.

среда, 9 февраля 2011 г.

Как посчитать количество строк кода.

Иногда для себя был интересно узнать количество строк кода в проекте. Но не обладая дорогими редакциями Visual Studio это сложно сделать в одну кнопку. Но недавно нагуглил простой способ посчитать количество строк кода в проекте использая встроенный поиск и регулярные выражения. Подробнее в блоге по ссылке.