Я создаю свой первый проект в Subversion . Пока у меня есть
branches
tags
trunk
Я думаю, что мне сразу нужно сделать ветки единичными и начать все сначала. Обновление веток это норма.
Я выполнял работу в транке и перемещал содержимое в теги следующим образом.
mkdir tags/1.0
cp -rf trunk/* tags/1.0
svn add tags/1.0
svn commit -m " create a first tagged version"
Моя интуиция говорит мне, что это совершенно неправильно, и я должен поддерживать некоторые отношения между файлами, использующими svn copy
. Файлы, которые я создаю таким образом, не будут иметь никакого отношения друг к другу, и я уверен, что пропущу функции Subversion. Я прав?
Должен ли я использовать копию SVN для отдельных файлов?
mkdir tags/1.0
svn add tags/1.0
svn copy trunk/file1 tags/1.0
svn copy trunk/file2 tags/1.0
svn copy trunk/file3 tags/1.0
svn commit -m " create a first tagged version"
Должен ли я использовать копию SVN на весь каталог?
svn copy cp -rf trunk tags/1.0
svn commit -m " create a first tagged version"
Ответы:
Вы правы в том, что не правильно добавлять файлы в папку тегов.
Вы правильно догадались, что
copy
это операция для использования; это позволяет Subversion отслеживать историю этих файлов, а также (я полагаю) хранить их гораздо эффективнее.По моему опыту, лучше всего делать копии («снимки») целых проектов, то есть всех файлов из корневой папки извлечения. Таким образом, снимок может стоять сам по себе, как истинное представление всего состояния проекта в определенный момент времени.
Эта часть «книги» показывает, как обычно используется команда.
источник
Использование:
стенографии:
источник
Как отметил @victor hugo, «правильный» способ - использовать svn copy. Есть одно предостережение, хотя. Созданный таким образом «тег» не будет истинным тегом, он будет точной копией указанной ревизии, но сам будет другой ревизией. Таким образом, если ваша система сборки каким-то образом использует svn-ревизию (например, включает число, полученное с помощью 'svn info' в версию продукта, который вы собираете), то вы не сможете собрать точно такой же продукт из тега ( результат будет иметь ревизию тега вместо ревизии исходного кода).
Похоже, что в SVN нет способа создать действительно правильный метатег.
источник
echo "{ 'svnRev': \"`svn info | awk '/Last Changed Rev:/{print $4}'`\" }" >svnver.txt
`awk
и получать эту информацию прямо из SVN, используя--show-item
опцию:svn info --show-item last-changed-revision
Просто используйте это:
(все в одной строке, конечно.) Вы должны всегда делать ветвь всей папки ствола и содержимого. Конечно, возможно разветвить части ствола, но это почти никогда не будет хорошей практикой. Вы хотите, чтобы ветвь вела себя точно так же, как сейчас транк, и чтобы это произошло, вы должны разветвить весь ствол.
См лучшее резюме использования SVN в моем блоге: SVN Основы и SVN Основы 2
источник
Могли бы использовать черепаху:
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-branchtag.html
источник
@victor Гюго и @unwind верны, и решение Виктора является самым простым. Однако остерегайтесь внешнего в вашем проекте SVN. Если вы ссылаетесь на внешние библиотеки, ссылка на внешнюю ревизию (тег, или HEAD, или номер) останется неизменной, если вы пометите каталоги, имеющие внешние ссылки.
Можно создать сценарий для обработки этого аспекта тегирования, для обсуждения этой темы см. Эту статью SO: Пометка проверки SVN с помощью внешних
источник
Другой вариант пометить хранилище Subversion - добавить тег в свойство svn: log следующим образом:
Недавно я начал думать, что это самый «правильный» способ пометки. Таким образом, вы не создаете дополнительные ревизии (как вы делаете с «svn cp») и все еще можете легко извлечь все теги, используя grep в выводе «svn log»:
Кроме того, таким образом, вы можете легко удалить теги, если вам нужно. Таким образом, теги становятся полной мета-информацией, и мне это нравится.
источник
Все, что вам нужно сделать, изменить URL-путь. Эта команда создаст новый каталог "tagDestination". Во второй строке будет дана полная информация об ошибке, если она возникнет. Создайте переменную svn env, если она не создана. Можно проверить (Cmd: - установить, Powershell: - Get-ChildItem Env :) Путь по умолчанию: «C: \ Program Files \ TortoiseSVN \ bin \ TortoiseProc.exe»
источник
Попробуй это. Меня устраивает:
источник