Переименование папки TortoiseSVN неизменно завершается ошибкой - PullRequest
5 голосов
/ 03 ноября 2010

Всякий раз, когда я переименовываю папку с помощью ToroiseSVN, а затем делаю коммит в родительской папке, это становится ужасно.Я обычно получаю некоторые странные конфликты деревьев, ошибки о несуществующих файлах / папках SVN .tmp и другие непонятные сообщения, которых я никогда раньше не видел.Это довольно напряженно, учитывая, что папка удаляется и якобы воссоздается, что, если она просто ужасно удаляется или искажается?

Лучше ли делать переименование непосредственно в репо, а не в рабочей копии?Эти проблемы нормальны?

Ответы [ 4 ]

2 голосов
/ 03 ноября 2010

Эти проблемы нормальны?

Нет.Пока вы проходите через меню TortoiseSVN , чтобы перемещать / переименовывать вещи, все должно работать нормально.

Примеры плохих вещей, которые вы никогда не должны делать:

  • перемещение / копирование / переименование / удаление версионной папки в рабочей копии с помощью проводника
  • изменение содержимого папок .svn
  • удаление папок .svn (используйте вместо этого функцию экспорта)

Я принимал участие в обучении пользователей, которые мигрировали из VSS в SVN + TortoiseSVN.Опыт показывает, что даже после нескольких лет использования TortoiseSVN пользователи все равно будут регулярно портить рабочие копии, выполняя одно из указанных выше действий.После повреждения обычно невозможно восстановить рабочую копию.

К счастью, SVN 1.7 (еще не выпущенный) устранит большую часть этой чуши путем централизации метаданных в одной большой папке .svn в корне рабочей копии,например, git и mercurial.

и ошибки о несуществующих файлах / папках SVN .tmp

Возможно, вы используете xcopy для манипулирования рабочими копиями.Когда вы используете xcopy для копирования папки, она пропускает пустые папки (если вы не используете переключатель /E).

Это приведет к тому, что папки .svn/tmp в вашей рабочей копии будут пропущены, что приведет к повреждению вашей папки.рабочая копия.

1 голос
/ 05 ноября 2010

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

Если вас не слишком волнует история изменений, я предлагаю вручную сделать копию папки (т.е. через Проводник, а не SVN), переименовать ее (снова через Проводник), удалить все папки .svn внутри нее (так что у вас есть чистая неверсионная папка), а затем SVN добавляет ее (и файлы внутри) в репозиторий. Затем просто SVN-удалить старую папку. Конечно, это не решает проблему, если кто-то еще редактировал те же исходные файлы или использовал ветку, но по крайней мере заставляет задуматься о последствиях переименования.

0 голосов
/ 08 марта 2017

Не переименовывайте папку / файл, если у вас более одной активной ветки.SVN не хранит необходимые метаданные для их обработки, поэтому вы получите конфликт слияния.Также как и GIT.Bazaar выдвигает на первый план переименование в качестве одной из причин для перехода к своей системе.

0 голосов
/ 03 ноября 2010

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

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

Если вы можете, попробуйте поместить любые временные файлы и папки в родительскую папку, которую вы можете добавить в svn: ignore, и вы избавитесь от многих из этих проблем.

...