Зафиксируйте в SVN, не позволяя другим оформить заказ - это возможно? - PullRequest
3 голосов
/ 09 января 2011

Я использую SVN в качестве источника контроля с ANKH и TortoiseSVN.Я пишу огромное изменение в проекте, и для его изменения требуется несколько дней, но в то же время я все еще хочу время от времени фиксировать резервные копии.Но если я сделаю коммит, другие члены команды получат обновление с моей незаконченной работой.

Есть ли способ, которым я могу "принять резервное копирование" без изменения ревизии (чтобы другие не обновлялись с моими изменениями)?

Спасибо!

Ответы [ 5 ]

5 голосов
/ 09 января 2011

Звучит как классический случай использования функциональных ветвей .Это сохраняет вашу работу отдельно, но позволяет продолжать все остальные преимущества Subversion.

3 голосов
/ 09 января 2011

Чтобы уточнить iconik's комментарий:

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

Работая над этой веткой, вы можете делать с кодом все, что угодно, и это не повлияет на транк. Когда вы закончите со всеми изменениями, вы можете merge вернуться обратно в ствол.

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

Более подробную информацию можно найти, прочитав эту книгу SVN

1 голос
/ 09 января 2011

Очень полезно «заблокировать» ветку на определенный период времени, чтобы другие не могли делать коммиты.Например, при создании сборки для выпуска программного обеспечения, и вы хотите иметь известную версию и т. Д. Subversion предоставляет механизм «ловушки».

http://svnbook.red -bean.com / ru / 1.1 / ch05s02.html

Вы можете написать «post» или «pre» хуки фиксации и включить / отключитьсовершает вместе с различными другими задачами.

1 голос
/ 09 января 2011

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

Действительно, подобные вещи не очень хорошо обслуживаются Subversion.Одно из больших преимуществ распределенных систем управления версиями, таких как git, mercurial и bazaar, заключается в том, что они позволяют выполнять локальный коммит в целях резервного копирования без немедленной отправки его в основной репозиторий.Поэтому одним из вариантов будет двойное управление, также локально устанавливая клиент DVCS и используя его для локальных коммитов в целях резервного копирования.Большинство клиентов DVCS работают нормально без настройки центрального сервера, поэтому вы можете использовать его без конфликтов с вашим сервером Subversion.На самом деле это довольно распространенная практика среди разработчиков, которым нужны преимущества распределенного контроля версий, но которые работают в компании, которая использует централизованный контроль версий.

0 голосов
/ 09 января 2011

Да, используйте ветку (используя svn copy ).Часть, которую он пропустил, заключается в том, что с помощью одной команды svn merge вы можете взять все изменения, сделанные в ветви, и применить их к стволу (при условии, что все объединения могут быть выполнены без конфликта).Я использовал SVN для веб-контента таким образом.У меня была ветка devel (svn copy), в которой я выполнял всю веб-работу, и когда мы были готовы начать работу, я выполнял svn merge to trunk (live), а затем развертывал транк на сервере.

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

...