Subversion: могу ли я проверить, изменить, а затем сделать ее ветвью?

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

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

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

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

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

Ответ 1

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

svn copy working_directory url_to_branch

Ответ 2

Книга SVN (http://svnbook.red-bean.com/en/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."

Ответ 3

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

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

сделано:)

Это подобно копированию локальной версии в указанный URL-адрес репозитория.

Ответ 4

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

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

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

команды.

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

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