2009-04-23 3 views
15

Когда мы делаем разветвление и слияние с svn, у нас всегда происходит то же самое.tortoise svn всегда слияние 45 дополнительных файлов

Мы получаем последнюю копию ствола.

Создать ветку и переключатель.

Сделайте небольшое изменение в одном файле в ветке.

Объединить ветку обратно в багажник.

На данный момент у нас будет наш один файл, который необходимо добавить, плюс те же 45 дополнительных файлов. Это происходит на каждой отдельной ветви и слияния, а также всегда на 45 дополнительных файлов. Я понятия не имею, как исправить эту проблему, но ее крайне раздражает.

Кто-нибудь когда-либо видел это раньше?

UPDATE: Когда я выполняю фиксацию, файлы, которые я фактически изменил, имеют свой статус текста как измененный, а их состояние свойства пустое. «45 файлов» - это все текстовое состояние, состояние свойства изменено.

+0

Это действительно помогло бы, если бы вы описали, что такое 45 дополнительных файлов. –

+0

Возможный дубликат: http://stackoverflow.com/questions/391864/svn-mergeinfo-properties-on-paths-other-than-the-working-copy-root – MPelletier

ответ

11

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

Ответ на вопрос: удалить mergeinfo собственности из них. Также обновите до версии 1.6, у которой есть более хорошая поддержка mergeinfo (т. Е. Она меньше записывает эти свойства).

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


EDIT: Смотрите this blog post для получения дополнительной информации о SVN слияния вопросов и исправлений.

+0

Является ли это чем-то, что я должен делать на регулярной основе? Я опасался обновления до 1.6 после зловещего твиттера от CodingHorror. –

+0

Я обновил свой клиент (черепаха), и кеш может сделать паузу исследователя; Я останусь с 1.5.5 еще дольше, и просто будьте осторожны с слиянием - я склонен сливаться только в каталог «верхнего уровня», никогда не поддиры и никогда не сталкивался с этой проблемой. – gbjbaanb

+0

Я только что заметил дополнительные файлы в слиянии на днях и узнал их как файлы, которые были объединены ранее. Можете ли вы подтвердить, что удаление атрибута svn: mergeinfo от всех, кроме вашего корня проекта, является безопасной операцией? Любые негативные последствия для рассмотрения? И ... это ошибка или ожидаемое поведение, как вы думаете? –

5

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

echo Removing Nested Merge Information... 

svn propdel svn:mergeinfo subfolder1 --depth=infinity 

svn propdel svn:mergeinfo subfolder2 --depth=infinity 

svn propget svn:mergeinfo --depth=infinity trunk 

Затем совершить обратно в ствол после того как вы запустили пакетный файл на рабочую копию ствола.

Кроме того, переименование и перемещение папок является распространенным способом создания свойства mergeinfo в папке/файле в репозитории subversion. svn1.6 не так щедро добавляет свойство mergeinfo для различных действий.

1

Лично я считаю, что mergeinfo вызывает больше проблем, чем решает, по крайней мере, с текущим состоянием инструментария. Как только это прозрачно на коммит, может быть, стоит использовать.

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

3

Читайте подробную статью на http://www.collab.net/community/subversion/articles/merge-info.html

Это долго, но стоит. Обратите внимание, в частности, на предложения в разделе «Разделение мысли» в конце, которые включают в себя подсказки для уменьшения шума mergeinfo.

Кроме того, вместо использования svn propdel для очистки нежелательной mergeinfo рассмотрите возможность использования svn merge с параметром -record-only.

Смежные вопросы