Импортировать устаревший проект (устаревший ряд папок) в Subversion - PullRequest
3 голосов
/ 18 октября 2008

Кто-нибудь знает простой способ импортировать устаревший проект, чья «система управления версиями» представляет собой серию устаревших папок, в SVN, чтобы сохранить историю изменений?

Проект, который я унаследовал, не находился под контролем версий, и существуют сотни папок, каждая из которых имеет вид: 2006-11-26, 2006-11-27 и т. Д. К счастью, похоже, они проделали довольно хорошую работу старательно создавая папки, даже когда (в течение нескольких недель) ничего не изменилось.

Что мне понравилось бы, так это скрипт / инструмент, который создаст новый репозиторий с самой старой папкой, а затем последовательно и автоматически применяет все команды subversion для преобразования каждой последующей папки в новую ревизию.

Надеюсь, это имеет смысл. Старый сценарист оболочки во мне испытывает искушение попытаться решить это сам, но а) я уверен, что это больше работы, чем я первоначально представлял, б) это не лучшее использование моего времени (я не эксперт в написание сценариев оболочки) и в) Могу поспорить, кто-то уже сделал это.

Дополнительные кредиты: пусть скрипт / инструмент также изменят свойства отметки времени на основе имен папок, чтобы история в Subversion была ближе к реальности.

Я надеюсь, что все имеет смысл.

Большое спасибо за любую помощь.

P.S. Я бы предпочел сделать все это под Linux, но если есть (задыхаясь!) Решение для Windows, нищие не могут быть выбором, не так ли?

Ответы [ 2 ]

3 голосов
/ 18 октября 2008

Я думаю, что решение сценария оболочки не будет слишком сложным. Примерно так:

for d in 200*
do
    cp -a $d/* svndir/
    cd svndir
    svn add *
    svn commit
    cd ..
done

Довольно наивный код, который я знаю, но я бы подумал, что что-то вроде этого будет работать (при условии, что в svndir уже проверено хранилище). Предположительно есть аргумент для svn commit, который пропускает требование для ввода комментариев, иначе это было бы довольно утомительно.

cp -a сохранит временные метки, но, конечно, история svn покажет все, что было зафиксировано на текущую дату. Возможно, вы могли бы использовать команду date для фактической установки даты сервера в соответствии с именем каталога (значение $ d) при каждом копировании и фиксации. Однако это может быть немного выше.

2 голосов
/ 18 октября 2008

Для этого случая использования был создан load-dirs.pl , он берет ваши каталоги и импортирует их в Subversion, а также может поддерживать историю версий для переименований и удалений. Хорошая документация доступна в хранилище Subversion (ссылка выше)

...