`svn merge` дает другие результаты, чем` svn diff` - PullRequest
6 голосов
/ 11 мая 2011

Так что раньше я думал, что я был на полпути прилично с SVN, но эта конкретная проблема мешает мне ...

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

svn merge ^/trunk@revN ^/trunk@HEAD с веткой в ​​качестве моей рабочей копии.

Я фиксирую эти изменения в веткеи теперь различие между моей веткой и стволом выглядит примерно так:

> svn diff ^/trunk ^/branches/KULRICE-5050 --summarize
D       https://test.kuali.org/svn/rice/trunk/impl/src/main/groovy/org/kuali/rice/kim/impl/attribute/KimAttributeDataBo.groovy
M       https://test.kuali.org/svn/rice/trunk/kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RolePermissionBoTest.groovy
A       https://test.kuali.org/svn/rice/trunk/kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleResponsibilityActionBoTest.groovy
A       https://test.kuali.org/svn/rice/trunk/kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleBoTest.groovy
...

Другими словами, ничего, чего я не ожидал.Это файлы, которые я изменил в своей ветке.

Затем я пытаюсь объединить ветку с транком через:

svn merge ^/trunk ^/branches/KULRICE-5050 с транком в качестве моей рабочей копии.Вместо того, чтобы изменить эти файлы, которые показывали diff --summarize, я увидел следующее:

> svn merge ^/trunk ^/branches/KULRICE-5050
--- Merging differences between repository URLs into '.':
D    impl/src/main/groovy/org/kuali/rice/kim/impl/attribute/KimAttributeDataBo.groovy
U    kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RolePermissionBoTest.groovy
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleResponsibilityActionBoTest.groovy'
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleBoTest.groovy'
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleResponsibilityBoTest.groovy'
Skipped 'kim/kim-impl/src/test/groovy/org/kuali/rice/kim/impl/role/RoleMemberBoTest.groovy'
A    kim/kim-impl/src/main/java/org/kuali/rice/kim/impl/role
...
...
Skipped 'kim/kim-api/src/main/java/org/kuali/rice/kim/api/role/RoleResponsibilityActionContract.java'
Summary of conflicts:
  Skipped paths: 38
--- Merging r20279 through r20321 into '.':
...
...
Summary of conflicts:
  Tree conflicts: 171
  Skipped paths: 33
--- Reverse-merging r20321 through r20279 into '.':
...

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

Почему в этом случае слияние происходит, когда я пытаюсь применить слияние и обратное слияние в разных диапазонах ревизий, когда всеуказано «дай мне разницу между стволом и веткой и слить это в мой ствол WC»?Он не должен ничего делать с диапазонами ревизий.Есть ли у вас какие-либо идеи, почему это происходит и что мне нужно изменить в моих командах SVN, чтобы исправить это?

Мой клиент SVN - SVN, версия 1.6.15 (r1038135) и сервер SVN - 1.4.5(r25188).Версия сервера находится вне моего контроля, поэтому старый стиль слияния вместо использования svn merge tracking.

1 Ответ

5 голосов
/ 11 мая 2011

Возможно, это была "Резиновая утка" на работе, но ответ здесь таков: мне нужно указать --ignore-ancestry в моей команде слияния. В противном случае svn-клиент 1.6 неявно пытается выполнить слияние с отслеживанием слияния от моего имени, даже если сервер все еще работает на 1.4 и не поддерживает отслеживание слияния.

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