Импортировать устаревший проект (датированный ряд папок) в Subversion

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

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

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

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

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

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

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
437
2

Ответы 2

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

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) каждый раз, когда вы копируете и фиксируете. Однако это может быть немного преувеличением.

Вы можете передать --message "Commit version from $ d" --non-interactive to svn commit. Это добавляет сообщение о фиксации и предотвращает любые интерактивные вопросы.

Simon Lehmann 18.10.2008 01:20

Это не приведет к удалению удаленных файлов.

wnoise 18.10.2008 02:24

Спасибо всем. У меня есть каталоги, которые приходят и уходят, и я хотел бы удалить их по мере необходимости. Что касается сохранения метки времени, я подумал, что это можно использовать: (прокрутите вниз до красного кружка): svnbook.red-bean.com/en/1.5/svn-book.html#svn.tour.revs.date‌ s

Dan 18.10.2008 03:05

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

Большое спасибо, я его закружу. Цените помощь.

Dan 22.10.2008 07:31

Другие вопросы по теме