Управление SVN фиксирует и пересматривает - PullRequest
0 голосов
/ 15 апреля 2011

Моя компания не использует функцию веток / тегов / соединительных линий, и практически все наши разработчики все время работают над соединительными линиями.У меня теперь есть проблема, когда я внес некоторые изменения и зафиксировал их, и теперь мне нужно отменить их обратно.Однако за это время другой разработчик внес некоторые несвязанные изменения.Итак, наша структура коммитов выглядит примерно так:

  • 103: Джо Блоу - Некоторые несвязанные изменения
  • 102: Уэйн - Изменения в модуле A
  • 101: Джон Смит -Изменено бла-бла-бла

Я использовал «вернуться к этой ревизии» на # 101, чтобы отменить мои изменения (# 102), но теперь мне нужно зафиксировать их обратно, поскольку # 103 включает их.Я не использовал много возможностей SVN, так что есть ли способ зафиксировать мое новое изменение в # 103, не перезаписывая его и не заставляя «Джо Блоу» повторить свои изменения, не считая # 103 и добавления вручную всех своих изменений?

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

Ответы [ 3 ]

3 голосов
/ 15 апреля 2011

Вы должны быть в состоянии выполнить "обратное слияние" (merge -r Я думаю, хотя я не очень знаком с синтаксисом командной строки для SVN) ревизии 102. Это отменит изменения только этой ревизии.

Это отличается от возврата тем, что оно касается только изменений, внесенных между 101 и 102, игнорируя изменения 103 в слиянии.Так что 103 должно остаться в сохранности.(Предполагая, конечно, что он не зависит от изменений от 102.)

Должно быть быстрое подтверждение слияния, потому что разница ваших локальных изменений должна идеально соответствовать разнице от 101 до 102, просто поменялся местами.

1 голос
/ 15 апреля 2011

---- Отредактировано так, как будто вы хотите отменить свои изменения, изначально я думал, что вы хотите применить их повторно ---

Вы можете выполнить svn diff в обратном направлении.Это создаст файл патча, который "отменит" ваши изменения.Ключом к созданию обратного дифференциала является переключение номеров ревизий в командной строке, поэтому

svn diff -r101:102 ...

создает дифференциал, который добавляет элементы для генерации 102 из 101, тогда как

svn diff -r102:101

создает diff, который удаляет элементы из 102 для генерации 101.

--- Исходная запись следует ---

Используйте svn diff для создания файла diff между rev 101 и102, а затем обновите репозиторий до версии 103 и объедините изменения обратно через утилиты исправлений.Тогда ваш коммит 104 будет читать что-то вроде «Считанные изменения в коммите 102, возвращенные в коммит 103».

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

0 голосов
/ 15 апреля 2011

Если вы находитесь в TortoiseSVN, вы можете использовать журнал ревизий и отменить только изменения, внесенные в конкретную ревизию, выбрав «Отменить изменения из этой ревизии» в контекстном меню и затем зафиксировав.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...