Черепаха SVN - проблема чувствительности к регистру под Windows - проблема слияния - PullRequest
2 голосов
/ 04 октября 2010

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

После успешного объединения нескольких ревизий SVN выбросилошибка о блокировке папки "bin".Когда я создавал свою ветку, папка называлась «Bin», но в этой конкретной ревизии, которая выдавала ошибку, другой разработчик непреднамеренно создал дубликат каталога с именем «bin».Во время слияния SVN попытался сбить новую «корзину», но Windows отказалась, выдав ошибку блокировки.

Мой вопрос: как с этим бороться?Хотя рассматриваемый проект претерпел множество изменений, включая удаление корзины, удаление корзины и, в конечном итоге, добавление корзины обратно, мне необходимо воспроизвести все эти действия, когда я объединяю ревизию за ревизией из ствола в мою ветку.Как мне пройти ошибку, когда она произошла в прошлом?Должен ли я зайти в Repo Browser и удалить дубликат папки «bin» в старой ревизии?Это очень расстраивает, потому что это не было ошибкой, когда другой разработчик зарегистрировал дубликат каталога, но это вызывает ошибку при попытке объединить / обновить эту ревизию с моей рабочей копией.

Кроме того, я долженбыть коммитом после слияния каждой ревизии в мою ветку?Или я могу продолжать слияние и фиксировать свою ветку только в конце?

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 2 ]

2 голосов
/ 04 октября 2010

Вам не нужно объединять ревизию за ревизией. Вы можете объединить все изменения ветки / ствола в другую ветку / ствол сразу .

Если это не излечивает проблемы с переименованием (я сам там был), я знаю два способа решения проблемы:

  1. Используйте Linux. Шутки в сторону. Файловые системы Unix чувствительны к регистру, так что вы можете разобраться там. Если вы не знаете Linux, просто загрузитесь с установкой Ubuntu на виртуальной машине и используйте ее для объединения.
  2. Вручную удалите поврежденную папку из целевой ветви, затем svn copy новую на свое место. К сожалению, в Windows вы не можете сделать это за один шаг.

Тем не менее, в Windows у вас возникнут проблемы, когда вы попытаетесь обновить рабочую копию с папкой Bin, и обновление должно удалить ее и одновременно создать папку bin . Вы можете решить эту проблему, либо вручную удалив поврежденную папку в рабочей копии (без svn delete!), А затем позволив svn up восстановить ее, либо просто удалив эту рабочую копию и извлеките заново. Если вы сделаете № 2 сверху, вы также можете сначала обновить до промежуточной версии (где была удалена старая папка), а затем до заголовка.

Редактировать: Я только сейчас увидел ваш дополнительный вопрос:

я должен делать коммит после слияния каждой ревизии в мою ветку? Или я могу продолжать слияние и фиксировать свою ветку только в конце?

Практическое правило. Всякий раз, когда вы выполняете операцию в своей рабочей копии, вам необходимо впоследствии зафиксировать это, чтобы она появилась в хранилище. Когда вы выполняете операцию с хранилищем, она автоматически создает новую версию хранилища, и вам не нужно регистрироваться. (Затем следует предоставить комментарий для проверки с помощью команды.) Это особенно важно знать для комментариев (например, svn copy), которые могут использовать в качестве цели рабочую копию или хранилище.

0 голосов
/ 04 октября 2010

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

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

Альтернативный подход может состоять в создании новой ветви из ствола в той же точке, что и вы.запустил ветку, затем извлекли ревизию магистрали ствола и зафиксировали, затем объедините эту (одну ревизию) со своей веткой, чтобы вы получили все изменения без промежуточной проблемы.Затем вы можете обновить свойство mergeinfo, чтобы сообщить своей ветви, что вы уже слили все ревизии из ствола, чтобы он не пытался объединить их в следующий раз.Немного помадки, но это может избавить вас от головной боли.

Как правило, такие проблемы решаются путем понимания того, как работает svn merge, конфликты деревьев являются неприятностью, но как только вы их получите, их легко исправить.То, что вы описываете, звучит как древовидный конфликт, но дайте нам знать, если вы получаете другую ошибку.

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