Стеллаж в TortoiseSVN?
я перешел из TFS в SVN (TortoiseSVN) с моей текущей компанией. Я действительно скучаю по функции "Shelve" TFS. Я читал различные статьи о том, как" Shelve "с SVN, но я не читал ничего, что дает очень простой опыт работы с" shelve".
В идеале, я хотел бы добавить дополнительные элементы в контекстное меню TortoiseSVN - "Shelve" & "Unshelve". "Shelve" удалит текущий набор полок и загрузит рабочий каталог по подходящему пути, определенному пользовательскими опциями. "Восстановить" будут объединены комплект с рабочей копией.
существует ли что-то подобное? Может ли кто-нибудь предложить какие-либо способы "взломать" эту функцию в графическом интерфейсе?
Примечание: следующая ссылка на самом деле не достигает пользовательского опыта, который я искал:
одна из самых больших вещей о TFS Shelve-это то, как легко его использовать...
6 ответов:
Я не верю, что SVN имеет эту функцию, встроенную в серверный продукт. Я также не верю, что что-то подобное эмулируется в любых клиентах, которые я использовал, включая TortoiseSVN.
чтобы обойти эту проблему, я прибегнул к использованию DVCS, таких как Git или Mercurial, чтобы разрешить мне локально разветвлять / объединять / откладывать содержимое обратно в SVN. Возможно, это немного Клудж, но он работает очень хорошо.
Если вы понимаете, как работают ветви SVN, эмуляция Shelve в SVN-это не проблема:
- создать ветку в репозитории (на сервере)
- переключите свою локальную копию на него
- зафиксируйте изменения в новой ветке
- переключите локальную копию обратно в магистраль
когда вы будете готовы вернуться к своим отложенным изменениям ("unshelve"), просто объедините ветку полки обратно в локальную копию.
Если вы не знаю командной строки SVN ни Tortoise SVN достаточно хорошо, чтобы сделать выше, вот супер подробная пошаговая инструкция о том, как это сделать в Tortoise SVN:
- сделайте "обновление SVN", чтобы обновить рабочую копию до последней версии магистрали. Таким образом, единственные различия между локальной копией и магистралью-это ваши изменения.
- в контекстном меню выбрать "ветку / тег"
- по умолчанию выбрана опция "головная версия в репозитории". Держать что.
- измените "на Url", чтобы указать имя ветви, например
http://server/repository/project1/branches/shelf1
- установите флажок "переключить рабочую копию в новую ветку / тег"
- Нажмите кнопку ОК, чтобы создать ветку и переключиться на нее
- Do " SVN Commit..."и зафиксируйте свои изменения во вновь созданной ветке
- в контекстном меню выберите " Switch..."
- измените "to URL" на URL-адрес магистрали, например
http://server/repository/project1/trunk
- Нажмите кнопку ОК, чтобы вернуться к ствол
см. эту ссылку для получения еще более подробной информации и эквивалента командной строки выше:
полки в 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 сделает это за вас при переключении, поскольку ваши локальные модификации будут сохранены.
к сожалению, вы не можете переключиться на несуществующее местоположение, поэтому в первый раз, когда вы это сделаете, вам нужно будет создать "ветку" для хранения. Я думаю, что все это может быть автоматизировано.