Как сохранить diff для повторного использования позже - функция похожа на shelveset в TFS?

Я вношу некоторые изменения в файл, но понимаю, что мне нужно изменить его другим способом - это требует от меня временно сохранить текущие изменения в другом месте и применить его позже. Как это сделать в svn/subversion tool, например. TortoiseSVN?

Функция, о которой я упоминаю, очень похожа на создание shelveset и удаление ее в TFS.

Пожалуйста, помогите, если вы знаете, как это сделать. Спасибо!

Ответ 1

Ответ AntonyW работает, но это может быть излишним, особенно если у вас много кода!

Я не знаком с TFS 'shelveset, но svn дает вам команду svn diff, чтобы сделать то, что вы ищете: сделать diff и сохранить его, чтобы вы могли применить его позже. Просто возьмите svn diff вывод и сохраните его в файле .patch или .diff.

svn diff myfile > myfile.patch

Поскольку вы используете TortoiseSVN, это еще проще сделать.

Ответ 2

Вы также можете создать ветку с вашими изменениями. Это может быть даже лучше, чем хранить diff на диске.


Изменить: Итак, у вас разные изменения в рабочей копии? Файлы, которые вы хотите сохранить, и файлы, которые вы хотите сохранить для diff? В этом случае лучше создать патч от TortoiseSVN.

Но если вы хотите вставить исправление, то все изменения из рабочей копии лучше, на мой взгляд, создать ветку.  Это очень легко в Tortoise:

  • Создайте ветвь/тег и отметьте Рабочий экземпляр в качестве источника ветки (не проверяйте переход на новую ветку).
  • После того, как Tortoise создаст ветвь, верните все локальные изменения.
  • Сделайте свои изменения.
  • Заблокировать магистраль
  • Переключиться на ветвь и слить изменения из магистрали
  • Реинтегрируйте ветвь в магистраль

Для shure это работает для меня большую часть времени, исправления полезны для проверки кода, а не для создания локального набора не законченных изменений;)

Ответ 3

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

  • Во-первых, наиболее заметным является то, что вы можете получить обзор от другого человека без наличия зарегистрированного (и неполного) кода в основном исходном коде.
  • Если у вас есть несколько решений, у вас может быть несколько стеллажей, которые вы можете протестировать в своем приложении.
  • Если другой человек требует определенного вашего полка для частичного тестирования до его регистрации, он доступен.

Я искал эту функцию и обнаружил, что большинство других продуктов (SVN, mercurial) собираются ввести эту функцию в будущем, но она пока недоступна.

... всегда лучше попросить прощения, а не разрешения....

Ответ 4

Обычно я делаю checkout в новое место, вношу туда изменения, а затем фиксирую.

Позже я обновляю исходное местоположение, чтобы объединить изменения в ранее измененную версию.