Должен ли мой скрипт обновлять сервер SVN? - PullRequest
2 голосов
/ 15 мая 2009

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

1: извлечь существующий проект из репозитория svn, а затем переименовать его (то есть выполнить поиск и замену из ExistingProjectName => NewProjectName во всех файлах, затем «svn переименовать» все файлы и каталоги, содержащие строку ExistingProjectName)

2: после того, как пользователь проверил компиляцию и т. Д., Создайте новый проект в хранилище (например, с помощью команды "svn switch")

Идея заключалась в том, что хранилище не следует изменять до тех пор, пока пользователь не сможет выполнить проверки.

Тем не менее, потенциальный риск был указан для меня. После запуска # 1 локальная рабочая копия все еще связана с существующим проектом. Кто-то, кто небрежно коммитит на этом этапе, испортит существующий проект.

Кто-нибудь может подумать о некоторых хитростях SVN, которые могут остановить коммит пользователя после # 1? Я ничего не могу придумать даже после просмотра документации.

Спасибо.

Andy

(Если невозможно остановить фиксацию, нам нужно будет использовать меньшее из двух зол и написать сценарий, чтобы он обновил хранилище, прежде чем пользователь сможет проверить.)

Ответы [ 4 ]

1 голос
/ 15 мая 2009

Чтобы создать новую ветку в svn, вы используете команду svn copy. После этого у вас есть 2 проекта в хранилище, и вы можете изменить любой из них на досуге.

Итак, если вы собираетесь переименовать проект в svn - почему бы не создать ветку, а затем переименовать файлы (и обновить содержимое). Работа выполнена!

Альтернативой было бы проверить существующий проект, переименовать и отредактировать его, а затем добавить рабочую копию в svn. Это было бы «атомарно» и не давало бы переименованию отображаться в журнале.

Добавление новой ветки так же хорошо, как и копирование, за исключением того, что вы не получаете преимущества «дешевых копий» SVN, однако, поскольку вы вносите значительные изменения (и переименовываете!), Это не будет лучшим подходом на первом месте?

1 голос
/ 15 мая 2009

Возможно, вы захотите сделать svn-экспорт.

1 голос
/ 15 мая 2009

Возможно, вы могли бы записать специальное значение в измененные файлы, чтобы указать состояние. Затем используйте хук фиксации SVN, чтобы проверить, пытается ли кто-нибудь зафиксировать неправильный репозиторий ...

0 голосов
/ 15 мая 2009

Хитрость для фиксации заключается в использовании svn export на первом шаге. Затем, когда изменения будут готовы, используйте svn import.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...