Что такое рабочая копия и что делает для меня «переключение» в Tortoise SVN? - PullRequest
59 голосов
/ 24 февраля 2009

У меня есть приложение, и я достиг важного этапа, версия 2.0.

Я решил пометить эту версию как «Версия-2.0», поэтому я назвал этот снимок. Я также создал ветку "Версия-2.0" на случай, если мне нужно что-то исправить и объединить обратно в мой ствол.

После прочтения справочного файла Tortoise SVN он сообщает, что я могу переключить свою «рабочую копию» на вновь созданную ветку.

Что это значит?

В настоящее время у меня есть:

/ Проект / Trunk /
/ Project / Метки /
/ Проект / Филиалы /

Все проверено. Так в чем же смысл «переключения»? В настоящее время я просто захожу в папку / trunk и выполняю свою работу. И когда я сделал свой тег и ветвь, он создал папки в моей папке / Tags / и / Branches / после того, как я сделал обновление.

Почему бы мне просто не зайти в /Branches/Experiemental-v3.0/ и выполнить там свою работу, если бы захотел?

Может кто-нибудь объяснить мне, что такое «Рабочая копия» и «Переключение»? Что мне не хватает? У людей вообще нет полного хранилища, не так ли?

Ответы [ 5 ]

44 голосов
/ 24 февраля 2009

Рабочая копия - это копия, которую вы извлекли в свою рабочую зону. Неважно, ветка ли это или ствол. Это то, над чем вы работаете.

Вы можете переключаться между ветвями (или, вернее, копиями) одного и того же родителя с помощью svn switch. Это в основном скажет, что отличается между текущей рабочей копией и веткой, на которую я переключаюсь. Затем выполняется обновление вашей текущей рабочей копии до версии ветки, на которую вы переключаетесь.

Итак, рабочая копия - это ваша касса, однако она была получена.

Переключение - это просто изменение ветви, в которую попадает ваша рабочая копия. Думайте об этом как об изменении указателя в хранилище, куда будут отправляться ваши коммиты. С помощью получения любых отличий от филиала до вашей рабочей зоны.

23 голосов
/ 24 февраля 2009

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

Вы можете проверить столько частей хранилища, сколько вам нужно. Таким образом, у вас может быть папка «trunk», которая является рабочей копией только транка, другая «version2», которая будет рабочей копией вашей ветви. Таким образом, любые дополнительные теги, которые создаются, не проверяются.

Или вы можете иметь одну проверку под названием «проект», и, если она изначально указывает на ствол, вы можете переключить ее на одну из ветвей или тегов - это способ повторного использования оригинальной проверки, чтобы вы не Я должен все повторить.

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

4 голосов
/ 24 февраля 2009

Рабочая копия - это ваша копия кода, которую вы проверили. Обычно вы проверяете только / Project / trunk /, а не всю структуру хранилища. Переключение - это изменение корня вашей рабочей копии. Вы работаете с SVN не так, как это должно быть.

3 голосов
/ 24 февраля 2009

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

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

Dave

2 голосов
/ 24 февраля 2009

Вы проверили все дерево проекта - это, вероятно, не то, что вы хотите. Для работы с стволом проверьте копию с корнем в «стволе», а не из корня проекта. Аналогично, для работы с ветками отметьте только ту ветку, которую вы хотите.

...