Каковы виды использования svn copy? - PullRequest
27 голосов
/ 03 декабря 2008

Пример:

$ svn copy foo.txt bar.txt  
A    bar.txt
  • Когда бы вы использовали эту технику и почему?
  • Будет ли эта команда (взятая из "красной книги" svn) создавать копию <foo.txt>, сохраняя при этом историю ее для совместного использования с <bar.txt>?
  • Если я изменю <bar.txt>, что будет с <foo.txt>?

Каковы эквиваленты этому в других современных системах (Clearcase, Accurev, Perforce)?

Позвольте мне подчеркнуть пункт, который я ищу:
Это ветвление такого типа на уровне файлов?
Что происходит, если вы используете его в той же ветке, то есть создаете копию файла и затем начинаете изменять этот новый файл. все в одной ветке?
Я понимаю, что он также используется для тегирования, но меня интересует, чего ожидать при выполнении <svn copy> на уровне файлов.

Ответы [ 7 ]

37 голосов
/ 03 декабря 2008

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

Кстати: это одна из немногих возможностей, которые есть в SVN, но Git этого не делает (Git будет пытаться угадать происхождение кода после факта, особенно если вы добавите -C в команды).

23 голосов
/ 03 декабря 2008

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

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

Будет ли эта команда создавать копию foo.txt при сохранении истории ее для совместного использования с bar.txt?

Не совсем, история foo.txt будет эффективно скопирована в историю bar.txt, затем в истории bar.txt появится дополнительная запись, указывающая, что она была скопирована из foo.txt, и после этого они независимый. Таким образом, история до момента копирования идентична / общедоступна.

Если я меняю bar.txt, что будет с foo.txt?

Ничего, они совершенно разные. Но позже вы можете объединить изменения от одного к другому.

10 голосов
/ 03 декабря 2008

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

8 голосов
/ 03 декабря 2008

Каковы эквиваленты этому в другие современные системы (Clearcase, Accurev, Perforce)?

git заметит, что файл одинаков на обычной копии, и покажет его как копию.

1 голос
/ 20 мая 2010

svn copy пригодился после того, как я случайно удалил файл. См. ответ на соответствующий вопрос , который я задал.

1 голос
/ 03 декабря 2008

Филиал не является первоклассным гражданином в Subversion, поскольку он «реализован» как каталог.

Следовательно, svn copy позволяет сортировать ветви файла в пределах одной и той же ветви (директории). Позже вы можете объединить скопированный файл с первым. Но это не подходит только для одного файла , как упоминалось в этой теме

Эквивалентом в ClearCase будет правило выбора, подобное

element * .../myBranchForCopy/LATEST
element /myPath/myFile /main/myBranch/LATEST -mkbranch myBranchForCopy

Однако в этом представлении, созданном для ветвления файла, вы будете видеть только один foo.txt за один раз (либо в myBranch, либо, если он извлечен, в myBranchForCopy). Здесь нет настоящей «копии», это тот же элемент. Любое слияние будет между:

  • foo.txt@@/main/myBranch/myBranchForCopy/LATEST
    и
  • foo.txt@@/main/myBranch/LATEST
1 голос
/ 03 декабря 2008

Я использую эту технику при создании нового файла и хочу скопировать леса (в настоящее время я использую Perforce, но раньше использовал Subversion). Изменение копии не повлияет на другой файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...