Просто чтобы уточнить: когда вы говорите, что они будут добавлять / фиксировать, вы имеете в виду, что они не делали svn-копию старой версии с именем новой версии, правильно? Исходя из предположения, что я правильно понял ...
Возможно ли это? Да, но не на месте и не легко.
Для этого я бы написал сценарий, который по сути воспроизводил бы коммиты так, как вы этого хотите, создавал дамп нового репозитория в svn-дамп-файл, настраивал дамп-файл с помощью svndumptool.py и, возможно, немного настраивал. сценарии для установки дат и авторов и тому подобное.
Вы можете получить svn, чтобы помочь вам. Попробуйте этот подход:
Сделайте копию своего репозитория , чтобы вы могли работать с этим и не создавать беспорядок для других. Затем в этом хранилище создайте каталоги /project
/project/trunk
, /project/tags
и /project/branches
. Оформить заказ на проект / багажник. Используйте svn export
, чтобы получить версию 1 вашей версии 1.0.0 в вашу рабочую копию. Захватите исходное сообщение о фиксации, используя svn log --xml
, используйте svn add
, чтобы добавить все файлы, и подтвердите. Это дает вам исходную отправную точку.
Теперь, для каждого коммита, сделанного в /version/1.0.0
, объедините этот набор изменений с вашим новым транком, извлеките сообщение о коммите, используя svn log --xml
, и подтвердите.
Как только вы исчерпаете коммиты до 1.0.0, выполните svn copy
с trunk
до tags/1.0.0
. Затем используйте svn merge --ignore-ancestry .../version/1.0.0 .../version/1.0.1@xyz
(где xyz - первый коммит версии 1.0.1). Это должно дать вам любые изменения, которые произошли как часть вашего процесса выпуска. (Возможно, вам придется немного поэкспериментировать, чтобы сделать это правильно.)
Повторите этот процесс для каждой из оставшихся версий.
Как только вы закончите с этим, у вас будет хранилище с лучшей историей под /project
, но все еще будет старая уродливая история под /versions
. Чтобы убрать это, используйте svn dump project
, чтобы создать дамп-файл, содержащий только новую историю. Теперь вам придется немного поработать над сценариями и, возможно, свободно использовать svndumptool.py
для исправления временных отметок и авторов фиксации в файле дампа, извлекая эту информацию из вывода svn log --xml
. Возможно, вам придется «придумать» эту информацию для коммитов, которые вы сделали.
Наконец, используйте svn load
, чтобы импортировать этот дамп-файл в новый репозиторий. Убедитесь, что вся ваша новая, славная история выглядит вменяемой, а затем используйте ваш новый репозиторий в будущем.
(О, и вы получите бонусные баллы, если вы установите отметку времени коммита вашей первоначальной svn mkdir /project /project/trunk /project/tags /project/branches
равной 1984 .;))
Раскрытие информации: я внес вклад в svndumptool.py