Стеллаж в TortoiseSVN?


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

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

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

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

Shelving Subversion

одна из самых больших вещей о TFS Shelve-это то, как легко его использовать...

6 55

6 ответов:

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

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

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

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

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

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

  1. сделайте "обновление SVN", чтобы обновить рабочую копию до последней версии магистрали. Таким образом, единственные различия между локальной копией и магистралью-это ваши изменения.
  2. в контекстном меню выбрать "ветку / тег"
  3. по умолчанию выбрана опция "головная версия в репозитории". Держать что.
  4. измените "на Url", чтобы указать имя ветви, например http://server/repository/project1/branches/shelf1
  5. установите флажок "переключить рабочую копию в новую ветку / тег"
  6. Нажмите кнопку ОК, чтобы создать ветку и переключиться на нее
  7. Do " SVN Commit..."и зафиксируйте свои изменения во вновь созданной ветке
  8. в контекстном меню выберите " Switch..."
  9. измените "to URL" на URL-адрес магистрали, например http://server/repository/project1/trunk
  10. Нажмите кнопку ОК, чтобы вернуться к ствол

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

другой вариант-использовать средство "создать патч" в TortoiseSvn для создания файла патча и возврата изменений. Файл патч позже можно вновь вернуться туда, где вы были.

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

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

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

вы можете использовать DVCS, но в некотором смысле это kludge. 'Shelving' в DVCS хранит ваши изменения только локально. Это полезно только в том случае, если вы хотите проверить свою работу на откат, если вы нарушите ее с дальнейшей работой, но предпочтительно вы хотите сохранить свою работу на сервере.

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

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