Subversion: могу ли я оформить заказ, изменить, а затем сделать его веткой? - PullRequest
79 голосов
/ 21 августа 2009

Я сделал проверку из своего транка в местный DIR и сделал много локальных изменений там. Теперь я не хочу фиксировать это обратно в ствол, но я бы предпочел сделать ветку из этой локальной версии. Это возможно?

Могу ли я просто скопировать транк в ветку, а затем cd DIR и svn switch в ветку?

ОБНОВЛЕНИЕ : Спасибо за ответы, это сработало! Подведем итоги по шагам:

  • cd DIR
  • svn copy . new-branch-URL
  • svn switch new-branch-URL .

(обратите внимание на точки)

Ответы [ 4 ]

50 голосов
/ 20 сентября 2011

Книга SVN (http://svnbook.red -bean.com / ru / 1.6 / svn-book.html # svn.branchmerge.using.create ) не рекомендует создавать ветку из локальной рабочей копия.

Хотя ветку также можно создать с помощью svn copy для дублирования каталога в рабочей копии, этот метод не рекомендуется. Это может быть довольно медленно, на самом деле! Копирование каталога на стороне клиента является операцией с линейным временем, поскольку оно фактически должно дублировать каждый файл и подкаталог в этом каталоге рабочей копии на локальном диске.

Вместо этого сначала создайте ветку, а затем используйте команду svn switch, чтобы вы могли зафиксировать свои изменения. Если ваша рабочая копия значительно устарела, то добавьте «@REV» к исходному URL, где «REV» - это версия вашей рабочей копии, сообщенная svn info.

Однако копирование каталога на сервере - это операция с постоянным временем, и большинство людей создают филиалы.

$ svn copy http://svn.example.com/repos/calc/trunk \
           http://svn.example.com/repos/calc/branches/my-calc-branch \
      -m "Creating a private branch of /calc/trunk."
39 голосов
/ 21 августа 2009

В соответствии с командной строкой справка svn copy может копировать из каталога в URL хранилища. Таким образом, вы должны иметь возможность скопировать вашу рабочую копию в филиал, например ::10000

svn copy working_directory url_to_branch
9 голосов
/ 21 августа 2009

В моем клиенте SVN: TortoiseSVN достаточно:

  • щелкните правой кнопкой мыши верхний каталог, который я хочу открыть
  • в поле «To URL» выберите каталог филиала в своем хранилище
  • в рамке «Создать копию в хранилище из:» выберите «Рабочая копия»

сделано:)

Это похоже на копирование локальной версии в указанный URL-адрес хранилища.

1 голос
/ 21 августа 2009

Да, вы можете сделать это с помощью командной строки SVN , а также tortoiseSVN .

Вы должны указать рабочую копию SVN в качестве src, а новую ветвь - в качестве пункта назначения

svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>

команда.

В TortoiseSVN просто укажите вашу рабочую копию, выберите «Ветвь / тег» из контекстного меню и выберите «Рабочая копия» в разделе «Создать копию в хранилище из:»

Обратите внимание, что создавать теги таким способом не рекомендуется (по причинам прослеживаемости), но для ветвей это прекрасно.

...