Подтвердить что ты не робот

Полка в TortoiseSVN?

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

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

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

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

Стекла Subversion

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

4b9b3361

Ответ 1

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

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

Надеюсь, это поможет. Удачи!

Ответ 2

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

  • Создайте ветку в репозитории (на сервере)
  • Переключите локальную копию
  • Перенесите свои изменения в новую ветку
  • Переключите локальную копию обратно в магистраль

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

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

  • Сделайте "Обновление SVN", чтобы обновить рабочую копию до последней версии соединительной линии. Таким образом, ваши отличия между вашими локальными копиями и багажником являются вашими изменениями.
  • В контекстном меню выберите "Branch/Tag"
  • По умолчанию выбрана опция "HEAD версия в репозитории". Сохраните это.
  • Измените значение "To Url", чтобы указать имя ветки, например. http://server/repository/project1/branches/shelf1
  • Установите флажок "Переключить рабочую копию в новую ветку/тег"
  • Нажмите "ОК", чтобы создать ветку и переключиться на нее.
  • Сделайте "SVN Commit..." и зафиксируйте изменения во вновь созданной ветке
  • В контекстном меню выберите "Switch..."
  • Измените "URL" на URL-адрес соединительной линии, например. http://server/repository/project1/trunk
  • Нажмите "ОК", чтобы вернуться к соединительной линии

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

Ответ 3

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

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

Ответ 4

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

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

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