Как сохранить diff для повторного использования - функция, аналогичная shelveset в TFS? - PullRequest
14 голосов
/ 16 июня 2011

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

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

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

Ответы [ 4 ]

16 голосов
/ 16 июня 2011

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

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

svn diff myfile > myfile.patch

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

4 голосов
/ 16 июня 2011

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


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

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

  1. Создать ветвь / тег и пометить рабочую копию как источник ветки (не устанавливайте флажок для переключения на новую ветвь).
  2. После того, как черепаха создаст возврат веткивсе локальные изменения
  3. Внесите другие изменения
  4. Передать в ствол
  5. Переключиться на ветку и объединить изменения из ствола
  6. Реинтегрировать ветку в ствол

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

1 голос
/ 08 октября 2013

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

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

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

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

0 голосов
/ 16 июня 2011

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

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

...