Как я могу определить, является ли SVN: MergeInfo поврежден и как я это исправить?

StackOverflow https://stackoverflow.com/questions/2790471

Вопрос

Я подозреваю, что я коррумпировал Mergeinfo, но я не уверен. Кто-нибудь знает, как я бы сделал решимость и какие ресурсы там, чтобы помочь исправить проблемы?

Вот проблема. Моя команда недавно переехала в Agile и использует филиалы функциональных филиалов (настоящие ветви истории), где разные команды работают на одних и тех же источниках одновременно. Как история достигает высокого состояния готовности, которую команда сливается в багажник. Слияния занимают дни или недели из-за отсутствия изменений, неожиданных изменений и конфликтов. Мы говорим о командах из 5-10 человек, и усилия / Churn кажется высоко.

Люди используют этот шаблон слияния a) Pull - слияние ствола к ветви, решить, тестирование, фиксацию б) нажатием - объединение ветви к багажнике, разрешению, тестировании, фиксации в) ветвь воссоздания (или, как правило, создают новую ветку истории и снизить старое, так как это сделано)

К концу этого ветвь и багажник должны быть в выравнивании.

Проблемы, которые мы видим:

  1. Изменения не сообщаются во время объединения багажника к филиалам в последующей ветке к багажнике
  2. Конфликты на SVN: Свойства MergeInfo во время слияния
  3. Файл отсутствует, но локальные редактировать на новый файл, добавленный в ветку и нажатой в багажник
  4. Входящие + локальные удаления (файл, удаленный на багажнике и филиал, показывает как конфликт)

(1) не должно происходить. Потяните из ветви к багажнику должны поставить два в синхронизации для всех изменений уже на стволе. Изменения в слиянии ветви к багажнику являются изменениями, которые произошли на багажнике. Таким образом, в первом слиянии они должны были распространиться в филиал, но не сделали. Это указывает на коррупцию в данных MergeInfo, которые «скрывают» изменения багажника.

(2) не следует происходить. SVN должно управлять изменениями в отслеживании слияния. Это также указывает на коррупцию в данных MergeInfo

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

(4) Я считаю, что это ошибка SVN и что мы не можем это исправить. Тем не менее, если бы это были наша единственная проблема, я был бы счастлив

В настоящее время мы находимся на сервере SVN 1.5.x с клиентами, использующими SVN 1.6.x и SVN + SSH для подключения. Мы планируем дойти до последних и величайших SVN, так как некоторые исправления могут повлиять на наши проблемы.

Тем не менее, он уверен, что наши данные MergeInfo неверны.

  • Сливается, которые не сообщают о всех изменениях
  • Конфликты в слиянии свойств MergeInfo

Любые хорошие места для меня, чтобы начать смотреть?

Это было полезно?

Решение

Я сделал некоторые эксперименты с ветвлением / слиянием SVN, и я обнаружил, что существуют некоторые ситуации, когда объединение просто не работает - например изменения из багажника перезаписываются. Поэтому, если вы продолжаете использовать SVN для функциональных филиалов, вы будете в мире боли.

Я сделал подобные эксперименты с Git, и я не нашел способ получить неверное слияние. Если переезд в Git может быть приемлемым командой / руководством, я настоятельно рекомендую использовать его.

Другие советы

У нас были подобные проблемы из-за подобных обстоятельств и в основном решили их.

Основной это это:

Если вы объединяетесь в вашу ветку из багажника после создания филиала, вам нужно отменить багажник с филиалом Commit (используя SVN Merge - Trecord - только), в противном случае, когда вы пытаетесь реинтегрировать обратно в багажник, он пытается объединить ствол с ветвью обратно в багажник.

Это, очевидно, в конечном итоге возвращает изменения в багажник, сделанном после того, как более поздний багажник -> филиал, как правило, вызывает массивные конфликты (особенно конфликты деревьев, если вы создали новый файл или каталог в багажнике) и т. Д.

Таким образом, наш процесс либо никогда не синхронизирует багажник в ветви после его создания (работает нормально для коротких ветвей) или сделать следующее:

  • ветка b из багажника
  • совершает багажнику и ветку
  • Реинтегрировать багажник в ветвь и совершить (разрешая конфликты, но иначе не изменять, даже для компиляции)
  • немедленно сделать SVN Merge - только преобразование багажника до филиала
  • исправить любые другие проблемы с филиалом и продолжать развитие
  • реинтегрируйтесь от ветви к багажнике, когда закончите.

Я нашел: http://www.collab.net/community/subversion/articles/merge-info.html. полезно, разработав то, что мы делаем не так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top