svn: как создать ветку из определенной ревизии ствола

116

Следующее действие создаст ветку только из главной ревизии ствола. Как мне создать ветку из определенной ревизии? Спасибо.

$ 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."
pierrotlefou
источник
2
Просто обратите внимание, что две обратные косые черты () предназначены для игнорирования символов новой строки ... и они не являются частью команды svn
Гарри Лайм

Ответы:

163

Ознакомьтесь с командой справки:

svn help copy

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

Чтобы указать это в командной строке, используя ваш пример:

svn copy -r123 http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Где 123будет номер ревизии в стволе, который вы хотите скопировать. Как отмечали другие, вы также можете использовать синтаксис @. Лично я предпочитаю более четкое разделение номера ревизии и URL-адреса.

Как указано в справке, вы также можете заменить номер ревизии определенными словами:

svn copy -rPREV http://svn.example.com/repos/calc/trunk \
    http://svn.example.com/repos/calc/branches/my-calc-branch

Скопировал бы «ревизию непосредственно перед ЗАВЕРШЕНИЕМ».

typeoneerror
источник
Кроме того, в приведенном выше примере, если ревизия 123не произошла ниже trunk, тогда copy ...trunk@123 ...синтаксис может дать сбой Path ...trunk@123 does not exist in revision 768(где 768последнее репо), тогда как все -r 123будет правильно. Наблюдается со старыми клиентами SVN, может быть, а может и не быть в случае с 1.6.
vladr
3
Аргумент -rREV не всегда работает. Иногда требуется @REV. См. Stackoverflow.com/questions/6591938/…
Mojca
1
-r работает с svn версии 1.7.13 (r1516569) в Mac OS X через Homebrew.
kakyo
35
$ svn copy http://svn.example.com/repos/calc/trunk@192 \
   http://svn.example.com/repos/calc/branches/my-calc-branch \
   -m "Creating a private branch of /calc/trunk."

Где 192 - это ревизия, которую вы указываете

Вы можете найти эту информацию в книге SVN , в частности здесь, на странице о svn copy

Дэн МакГрат
источник
19

добавьте версию, используя символ «@»:

svn copy http://src@REV http://dev

Или используйте аргумент командной строки -r [--revision].

Эдвард К. Бриджес
источник
Спасибо за это. Не могу сказать, требуются ли квадратные скобки на странице руководства. Должен был предположить, что они использовали EBNF.
rstackhouse
0

Попробуйте ниже один:

svn copy http://svn.example.com/repos/calc/trunk@rev-no 
       http://svn.example.com/repos/calc/branches/my-calc-branch 
  -m "Creating a private branch of /calc/trunk."  --parents

Между URL-адресами svn не должно быть косой черты "\".

Шивакумара
источник