Полка в черепахеСВН?

Я перешел из TFS в SVN (TortoiseSVN) со своей нынешней компанией. Я действительно скучаю по "полке" особенность TFS. Я читал различные статьи о том, как «отложить полки» в SVN, но я не читал ничего, что давало бы очень простой опыт «откладывать» работу.

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

Существует ли что-то подобное? Кто-нибудь может предложить какие-либо способы «взломать» эту функцию в графическом интерфейсе?

Примечание. Следующая ссылка на самом деле не дает того опыта пользователя, которого я искал:

Стеллаж Subversion

Одна из величайших особенностей TFS Shelve - это простота использования ...

12.08.2008 05:25:21
7 ОТВЕТОВ
РЕШЕНИЕ

Стеллажи в SVN начинают внедряться с версией 1.10, см. Примечания к выпуску

17
3.04.2018 11:52:21

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

Чтобы обойти эту проблему, я прибегнул к использованию DVCS, такого как Git или Mercurial , чтобы позволить мне локально выполнять ветвление / слияние / полку перед отправкой контента обратно в SVN. Это, возможно, немного клудж, но работает очень хорошо.

30
2.07.2018 08:47:50
Я не думаю, что это клочок L-) Я годами использовал отдельную персональную VCS при работе с командами, где у нас был строгий контроль над проверками (и особенно с VCS на основе блокировок, такой как SourceSafe).
Andy Dent 11.03.2009 04:46:57
Ты прав, это не клудж. Честно говоря, я не знаю, почему я сказал это, возможно, немного отговорки, чтобы не подвергаться критике :) Я очень доволен использованием DVCS для локальных стеллажей, прежде чем перейти к стандартной CVCS.
OJ. 12.03.2009 12:20:59
См .: Как использовать Mercurial и SVN вместе stackoverflow.com/questions/4605668/…
AndyM 4.05.2011 22:04:52
Функция SVN Patch имеет в значительной степени желаемое поведение, как указано в некоторых ответах ниже.
achekh 5.09.2012 10:10:34
Но как вы делитесь кодом с другими разработчиками таким образом? Одним из преимуществ наборов полок является то, что мой коллега-разработчик может поместить код в то место, к которому я смогу получить доступ для проверки кода, прежде чем он его подтвердит.
Mosh 23.12.2013 04:34:35

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

Один из способов сделать это в SVN без явной команды shelve - это переключить вашу рабочую копию в другое место svn и зафиксировать ее вместо основного репо. Это похоже на создание временной ветки и работу над ней на время вашей работы. Я не думаю, что вам даже придется объединяться, поскольку SVN сделает это за вас, когда вы переключитесь, поскольку ваши локальные изменения будут сохранены.

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

1
26.05.2011 12:02:12

Если вы понимаете, как работают ветки SVN, эмуляция Shelve в SVN не составляет труда:

  1. Создать ветку в репозитории (на сервере)
  2. Переключите на него свою локальную копию
  3. Зафиксируйте ваши изменения в новой ветке
  4. Переключите вашу локальную копию обратно на ствол

Когда вы будете готовы вернуться к отложенным изменениям («без полки»), просто объедините ветку полки с вашей локальной копией.

Если вы недостаточно хорошо знакомы с командной строкой SVN и Tortoise SVN, чтобы выполнить вышеизложенное, приведите очень подробную пошаговую инструкцию о том, как это сделать в Tortoise SVN:

  1. Сделайте «SVN Update», чтобы обновить вашу рабочую копию до последней версии ствола. Таким образом, единственные различия между вашей локальной копией и стволом - ваши изменения.
  2. В контекстном меню выберите «Ветвь / Метка»
  3. Опция «HEAD версия в хранилище» выбрана по умолчанию. Держи это.
  4. Измените «На URL», чтобы указать название ветви, например http://server/repository/project1/branches/shelf1
  5. Установите флажок «Переключить рабочую копию в новую ветку / тег»
  6. Нажмите Ok, чтобы создать ветку и переключиться на нее.
  7. Выполните "SVN Commit ..." и передайте изменения во вновь созданную ветку.
  8. В контекстном меню выберите «Переключить ...»
  9. Измените «To URL» на транковый URL, например http://server/repository/project1/trunk
  10. Нажмите Ok, чтобы переключиться обратно на сундук

Смотрите эту ссылку для более подробной информации и эквивалента командной строки выше:
Полки в Subversion

15
23.03.2014 23:05:03
В больших репозиториях это мучительно медленный (и подверженный ошибкам, если есть удаления здесь и там) процесс
Samaursa 8.06.2011 15:11:56
@ Самурса, какой шаг медленный? Кроме того, удаление никогда не было проблемой для меня, если только в рабочей копии нет неверсионных элементов (которые вы должны очистить перед переключением, прочитайте это: ( subversion.apache.org/faq.html#switch-problems )
zvolkov 11.06.2011 16:42:21
Переключение на новую ветку или даже ствол. Очень-очень медленно в хранилище, где я работаю (оно довольно большое), и даже в некоторых из моих проектов, которые становятся все сложнее (я переключился на Mercurial для личных проектов). И да, проблема неверсированных предметов. Перейдя на Mercurial, я не мог поверить, как легко все внезапно. Жаль, что они не используют его на работе. Вариант стеллажей был бы великолепен в SVN.
Samaursa 11.06.2011 16:46:36
Все переключения выглядят как клудж, imho svn начинает отставать, в то время как многие инструменты scm (например, Perforce, TFS, Mercurial <в виде расширения>) имеют эту функцию, чтобы легко сохранять временный код на сервере и легко возвращаться назад, и т. д.
Jason 26.01.2012 14:58:47

Другой вариант - использовать функцию «Создать патч» в TortoiseSvn, чтобы создать файл патча и отменить изменения. Файл патча может быть позже применен, чтобы вернуться туда, где вы были.

Тем не менее, вы все равно можете столкнуться с некоторыми неприятными слияниями, если вам придется обновить редакцию рабочей копии.

8
14.02.2012 13:26:54

TortoiseSVN 1.10теперь поддерживает shelving: https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-shelving.html

10
24.04.2018 08:31:27
Мне интересно, это TortoiseSVNфункция или Subversion? Я не могу найти упоминания о стеллажах в svn
Sergеу Isupov 29.06.2018 09:39:25
Это новая функция Subversion, см. Subversion.apache.org/docs/release-notes/1.10#shelving .
TWT 4.07.2018 20:20:42
TortosieSvn 1.10 также добавил эту функцию tortoisesvn.net/tsvn_1.10_releasenotes.html
Muhammad Naderi 22.10.2018 05:38:39

SVN обновили стеллажи https://subversion.apache.org/docs/release-notes/1.11.html#shelving

Типы изменений, которые вы можете отложить, - это вносимые изменения в файлы и свойства, за исключением следующих типов, которые еще не поддерживаются:

  • копии и ходы
  • создание и удаление каталогов
2
9.11.2018 10:35:09
Это должно быть ответом, когда он больше не будет экспериментальным, спасибо tartarismo. Вот удобная ссылка: cwiki.apache.org/confluence/display/SVN/…
JacquesLeRoux 9.11.2018 12:42:48