AnkhSVN и/или TortoiseSVN – какой рекомендуемый способ изменения структуры каталогов?

StackOverflow https://stackoverflow.com/questions/1889605

Вопрос

Я довольно новый пользователь Ankh и Tortoise.В настоящее время разрабатывается пакет приложений VS2008, который будет содержать несколько файлов .exe, но с большим количеством общего кода.

В настоящее время мы разделяем код между проектами .exe, помещая исходные файлы в дерево папок «Общие» и используя «Добавить как ссылку» во всех проектах VS2008, которым необходимо скомпилировать эти файлы.(Мы начали с VisualSVN, но перешли на Ankh, потому что он гораздо лучше справляется со связанными файлами.)

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

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

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

Итак, мои вопросы:

Какой инструмент для изменения структуры каталогов лучше — Ankh или Tortoise?

Какие шаги необходимо выполнить для предпочтительного инструмента и в каком порядке?

Это было полезно?

Решение

Я считаю, что реорганизация уровня файловой системы намного проще с помощью TortoiseSVN.Однако есть одна загвоздка:

При перемещении файлов в файловой системе с помощью TortoiseSVN:

  • Щелкните правой кнопкой мыши по файлу
  • Перетащите его в новое место назначения
  • Отпустите правую кнопку мыши
  • В появившемся меню выберите «SVN Move».

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

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

Не проще ли было бы скомпилировать весь общий код в DLL, а затем ссылаться на него из других проектов?

Проблема в том, что вы сильно связываете структуру каталогов общей папки со всеми вашими проектами, что обязательно вызовет у вас проблемы, особенно если она изменится.

Что касается того, какой svn-клиент использовать - я бы посоветовал использовать Tortoise для любых изменений, которые не относятся исключительно к одному решению VS, и то, как вы организуете свой код, подсказывает мне, что изменения, о которых вы говорите, относятся к нескольким решениям.Поэтому используйте Tortoise.

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

На самом деле реорганизовать структуру каталогов довольно сложно, и это не проблема Tortoise или Ankh, а просто проблема Subversion.

Проблема в том, что SVN понимает добавление/удаление, но не «перемещение» или «переименование».Итак, у вас есть папка с теми же скрытыми метаданными .svn внутри, но теперь она перемещена в другое место, и это сбивает SVN с толку.

ОБНОВЛЯТЬ: Посмотрите решение Antik, это лучше, чем возиться с метаданными вручную.

Черепаха !!У меня были проблемы с AnkhSVN + VS2008.Я обычно выполняю «Обновление» перед «Зафиксировать».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top