Создание ветки в AnkhSVN добавляет в ветку весь репозиторий вместо отдельного проекта

У меня есть один репозиторий Subversion, содержащий все мои проекты Visual Studio. Репозиторий организован следующим образом:

repository/
    branches/
        project1_branch/
        ...
    tags/
        project1_tag/
        ...
    trunk/
        project1/
        project2/
        ...

Когда я щелкаю правой кнопкой мыши конкретное решение, которое я открыл в Visual Studio 2010, и выбираю Subversion --> Branch Solution, по умолчанию из папки/URL-адреса находится каталог trunk.

Как я могу создать ветку только для конкретного решения/проекта, над которым я работаю?

Заранее спасибо за вашу помощь.


person Brian    schedule 07.12.2011    source источник


Ответы (2)


Интересно, предполагает ли AnkhSVN немного другую структуру папок репозитория. Если я не ошибаюсь, «рекомендуемая» структура предполагает, что папка ствола представляет собой стабильную/текущую кодовую базу данного проекта, а не как папку, которая объединяет несколько стволов проекта. То есть я бы ожидал увидеть структуру, больше похожую на:

repository/    
    project1/
        branches/
        tags/
        trunk/
    project2/
        branches/
        tags/
        trunk/

Если вы посмотрите на это с этой точки зрения, поведение ветвления AnkhSVN из магистрали имеет немного больше смысла — он просто видит подкаталоги как часть структуры, укорененной в «стволе», но не знает и не ожидает, что это отдельные проекты. стволы.

Я бы с уважением предложил создать папку project верхнего уровня из корня репозитория для «тестового» проекта, организованного, как показано выше, затем протестировать его через AnkhSVN и посмотреть, возможно ли дальнейшее изменение в ваша структура репозитория может служить вам лучше всего в долгосрочной перспективе.

person David W    schedule 23.04.2012
comment
Я думаю, вы правы. Когда я впервые начал использовать SVN (через VisualSVN Server), он всегда создавал структуру папок ветвей, стволов, тегов на уровне репозитория, и поэтому я начал использовать структуру папок, описанную в моем вопросе. Теперь мне жаль, что я не использовал структуру, которую вы описываете, так как отслеживать проекты намного проще. С тех пор я принял эту структуру в своих новых репозиториях. - person Brian; 23.04.2012

AnkhSVN пытается угадать, в каком месте дерева находится ваш проект. В большинстве случаев это корень вашей рабочей копии. (Вы же не проверили корень рабочей копии, не так ли?).

Если вы выберете ^/trunk (где ^ = корень вашего репозитория), AnkhSVN предложит объединить его с ^/branches/something. (Проверка на другом уровне может быть очень дорогой и нарушает шаблон Subversion, где ветвление обходится дешево. При обновлении вы создадите все «дешевые» копии на своем локальном компьютере)

Если вы хотите, чтобы AnkhSVN разветвлялся на другом уровне, вы можете установить корень проекта через «Файл->Subversion->Change Source control». А затем выберите вариант вашего решения.

person Bert Huijben    schedule 04.02.2012
comment
Этот ответ в основном объяснял связанный с этим вопрос, который я разместил здесь: assoc/31298275#31298275" title="решение для обновления ankhsvn в vs2013 также извлекает все родственные папки, не связанные"> stackoverflow.com/questions/31297537/ - person tbone; 08.07.2015