【问题标题】:Managing trunk and feature branches: local delete, incoming delete upon merge管理主干和功能分支:本地删除,合并时的传入删除
【发布时间】:2012-10-12 10:33:16
【问题描述】:

我正在使用带有功能分支方案的 svn。每当我尝试将主干合并到分支时,都会遇到“本地删除,合并时传入删除”的问题。这对我来说没有意义。 我做了什么来重现错误: 1)使用“svn copy ^/blabla/trunk ^/blabla/branches/test-merge”创建一个分支 2) 向主干添加一个新文件“touch t.c ; svn add t.c ; svn commit” 3)合并到主干到分支“svn merge ^/blabla/trunk ^/blabla/branches/test-merge” 输出是:

--- Merging differences between repository URLs into '.':
 C t.c
Summary of conflicts:
 Tree conflicts: 1

我正在使用版本“1.6.17 (r1128011)”

手动解决冲突(使用 svn accept)没有帮助。新文件没有出现在分支中,新的合并导致同样的冲突。

我做错了什么?

【问题讨论】:

  • 1.我很害怕,但是如果没有 所有使用过的命令的真实日志,我不得不说“您无法在进程中发生树冲突” 2. 旁注:2-URL 合并是不好的选择
  • 这里是我用来重现错误的所有命令:mkdir svncd ~/tmpsvnadmin create svnsvn mkdir file:///home/adenilso/tmp/svn/mtreesvn mkdir file:///home/adenilso/tmp/svn/mtreesvn mkdir file:///home/adenilso/tmp/svn/mtree/trunksvn mkdir file:///home/adenilso/tmp/svn/mtree/branchesmkdir localwscd localws@987653431@@0 svn copy ^/mtree/trunk ^/mtree/branches/test-reintegratelssvn upcd trunktouch t.csvn add t.csvn commitcd ..cd branchescd branchescd branchescd test-reintegratesvn merge ^/mtree/trunk ^/mtree/branches/test-reintegrate然后我得到了冲突

标签: svn merge conflict


【解决方案1】:

svn help merge提取

4 这种形式称为“2-URL 合并”:

  svn merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH]

指定了两个源 URL,以及两个修订版本 N 和 M。 两个来源在指定的修订版中进行比较,并且 差异应用于 TARGET_WCPATH,它是一个 工作路径 另一个分支的副本

我将在合并之前跳过一些初步步骤,并将在某些地方使用 Win 风格的路径(这里没有 bash,抱歉)并稍微改变工作流程(分支将是非空的)

z:\>dir /B
svn
localws

z:\>dir localws /B /S
z:\localws\mtree
...
z:\localws\mtree\branches
z:\localws\mtree\trunk

z:\>svn ls -v -R file:///Z:/svn/mtree
      3 Badger                окт 13 21:30 ./
      3 Badger                окт 13 21:30 branches/
      2 Badger                окт 13 21:29 trunk/

(repo 和 WC 已准备好,但仍为空)


创建并提交到主干的文件

z:\>dir /B z:\localws\mtree\trunk
1.txt
2.txt

z:\>svn ls -v -R file:///Z:/svn/mtree
      4 Badger                окт 13 21:48 ./
      3 Badger                окт 13 21:30 branches/
      4 Badger                окт 13 21:48 trunk/
      4 Badger              9 окт 13 21:48 trunk/1.txt
      4 Badger              9 окт 13 21:48 trunk/2.txt

分支启动

Z:\localws\mtree\trunk>svn copy file:///Z:/svn/mtree/trunk file:///Z:/svn/mtree/branches/test-reintegrate -m "Create test-reintegrate branch"

Committed revision 5.

测试一下

Z:\localws\mtree\trunk>svn ls -v -R file:///Z:/svn/mtree
      5 Badger                окт 13 22:17 ./
      5 Badger                окт 13 22:17 branches/
      5 Badger                окт 13 22:17 branches/test-reintegrate/
      4 Badger              9 окт 13 21:48 branches/test-reintegrate/1.txt
      4 Badger              9 окт 13 21:48 branches/test-reintegrate/2.txt
      4 Badger                окт 13 21:48 trunk/
      4 Badger              9 окт 13 21:48 trunk/1.txt
      4 Badger              9 окт 13 21:48 trunk/2.txt

并在 Z:\localws\mtree 中 svn up 之后获取更新的 WC

Z:\localws\mtree>dir /B /S
Z:\localws\mtree\branches
Z:\localws\mtree\trunk
...
Z:\localws\mtree\branches\test-reintegrate\2.txt
Z:\localws\mtree\branches\test-reintegrate\1.txt
Z:\localws\mtree\trunk\1.txt
Z:\localws\mtree\trunk\2.txt

将新文件添加到主干,在分支中编辑文件

Z:\localws\mtree>svn log -v -r6:7
------------------------------------------------------------------------
r6 | Badger | 2012-10-13 22:28:04 +0600 (Сб, 13 окт 2012) | 1 line
Changed paths:
   A /mtree/trunk/3.txt

Added new file to trunk
------------------------------------------------------------------------
r7 | Badger | 2012-10-13 22:29:20 +0600 (Сб, 13 окт 2012) | 1 line
Changed paths:
   M /mtree/branches/test-reintegrate/2.txt

Some changes
------------------------------------------------------------------------

服务器端视图

Z:\localws\mtree>svn ls -v -R file:///Z:/svn/mtree
      7 Badger                окт 13 22:29 ./
      7 Badger                окт 13 22:29 branches/
      7 Badger                окт 13 22:29 branches/test-reintegrate/
      4 Badger              9 окт 13 21:48 branches/test-reintegrate/1.txt
      7 Badger             17 окт 13 22:29 branches/test-reintegrate/2.txt
      6 Badger                окт 13 22:28 trunk/
      4 Badger              9 окт 13 21:48 trunk/1.txt
      4 Badger              9 окт 13 21:48 trunk/2.txt
      6 Badger              9 окт 13 22:28 trunk/3.txt

与主干同步分支 - 合并更改从主干到测试重新集成

Z:\localws\mtree>cd branches

Z:\localws\mtree\branches>cd test-reintegrate
Z:\localws\mtree\branches\test-reintegrate>svn merge file:///Z:/svn/mtree/trunk
--- Merging r5 through r7 into '.':
A    3.txt
--- Recording mergeinfo for merge of r5 through r7 into '.':
 U   .

检查 WC 状态

Z:\localws\mtree\branches\test-reintegrate>dir /B
2.txt
1.txt
3.txt

并提交结果

Z:\localws\mtree\branches\test-reintegrate>svn commit -m "Sync of test-reintegrate"
Sending        .
Adding         3.txt

Committed revision 8.

服务器端

Z:\>svn ls -v file:///Z:/svn/mtree/branches/test-reintegrate
      8 Badger                окт 13 22:47 ./
      4 Badger              9 окт 13 21:48 1.txt
      7 Badger             17 окт 13 22:29 2.txt
      8 Badger              9 окт 13 22:47 3.txt

简历

与你的风格相比,我的变化(以及“win ws fail”的结果)

  • 没有 ^ 速记的完整路径(即使在 svn copy 阶段,我也遇到了错误,AFAIK ^ 推荐并在“WC 根中的分支”样式的情况下可用,不结合常见的 WC/但我可能是错的/)

  • 使用经典的合并形式(单一 URL)

HTH

【讨论】:

  • 嗨懒獾,我工作了!正在使用 2-url,^-started 合并。我按照您的建议进行了尝试,现在行为符合预期。不知何故,我认为 2-url 是进行合并的预期方式。谢谢。
  • @user1740800 - 2URL 合并(如帮助中所述)将起作用,当您将 2 个分支合并到 third(可能与来源无关),在 WC 中签出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2022-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多