Cir*_*dec 3 svn tortoisesvn merge branch revert
我在项目上完成的部分开发工作无法部署,应该在一个单独的分支中完成.我已经合并了向后的更改(通过乌龟的"从此修订版还原更改"并仔细编辑),撤消应该在单独分支中的工作,并将此反向修补程序提交到主干.我现在想创建一个分支,其中包含上述补丁中未撤消的更改.这是我做的:
我在撤消修订之前的修订版中为新开发创建了一个新分支.
我通过合并tortoise SVN中的一系列修订将undo修订版合并到新的分支中.
我打开了更改日志,选择了"包括合并修订",并"还原此修订版本中的更改".这在我的工作副本中恢复了这些更改.现在我想要的是分支.我做出了这些改变.此提交列出"include merged revisions"下的撤消补丁; 我不相信它应该这样做; 这里好像有问题.关键可能是以这样的方式记录这个补丁(逆平方或原始修改的乘积),使得颠覆不知道为创建它而执行的操作.
然后,我通过相同的方法(合并一系列修订版)将所有更改从trunk合并到新分支中.这包括第二次原始的撤销补丁,使我的分支与trunk相同(现在将其列为包含的合并修订版三次).这不是理想的结果.
以下是所需的行为,并且正常工作:
首先,我创建了一个包含文件夹标签,主干,分支的空存储库.在trunk中我创建了一个带有内容(rev1)的文件file.txt:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后编辑文件到
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
并签入(rev2).然后我在日志中选择了rev2并从此修订中选择了恢复更改并签入(rev3).该文件现在再次显示如下:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个从rev3到branches\b1 的trunk的分支(rev4,was5;这一步做了两个).在branches\b1中,文件如下所示:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后我将rev2从trunk转换为branches/b1忽略祖先(rev5).分支现在看起来像这样,现在纯粹的巧合是历史包含类似的东西:
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
我编辑主干(rev6)看起来如下:
one
two
three
four
Run Code Online (Sandbox Code Playgroud)
我将所有更改从主干合并到branches/b1(rev7).branches/b1现在正确看起来像:
one
two_edit
three
four
Run Code Online (Sandbox Code Playgroud)
以下是所需的行为,如果按如下方式执行斜体步骤,则可正常工作:
首先,我创建了一个包含文件夹标签,主干,分支的空存储库.在trunk中我创建了一个带有内容(rev1)的文件file.txt:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后编辑文件到
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
并签入(rev2).然后我在日志中选择了rev2并从此修订中选择了恢复更改并签入(rev3).该文件现在再次显示如下:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个从rev2到branches\b1(rev4)的trunk分支.在branches\b1中,文件如下所示:
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
然后我将rev3从trunk合并到branches\b1(rev5),分支现在看起来像这样:
one
two
three
Run Code Online (Sandbox Code Playgroud)
我编辑分支3(rev6),好像我在这一点上分支.现在纯粹的巧合是历史包含类似的东西:
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
我编辑主干(rev7)看起来如下:
one
two
three
four
Run Code Online (Sandbox Code Playgroud)
我将所有更改从主干合并到branches/b1(rev8).branches/b1现在看起来像:
one
two_edit
three
four
Run Code Online (Sandbox Code Playgroud)
以下是实际行为; 如果执行斜体步骤,它将无法正常工作,这是必要的,因为追溯分支的复杂性.错误发生在最后一步的第二行.
首先,我创建了一个包含文件夹标签,主干,分支的空存储库.在trunk中我创建了一个带有内容(rev1)的文件file.txt:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后编辑文件到
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
并签入(rev2).然后我在日志中选择了rev2并从此修订中选择了恢复更改并签入(rev3).该文件现在再次显示如下:
one
two
three
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个从rev2到branches\b1(rev4)的trunk分支.在branches\b1中,文件如下所示:
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
然后我将rev3从trunk合并到branches\b1(rev5),分支现在看起来像这样:
one
two
three
Run Code Online (Sandbox Code Playgroud)
在branches\b1中,我在日志中选择了rev5,并从此修订中选择了恢复更改并签入(rev6).该文件现在再次显示如下:
one
two_edit
three
Run Code Online (Sandbox Code Playgroud)
我编辑主干(rev7)看起来如下:
one
two
three
four
Run Code Online (Sandbox Code Playgroud)
我将所有更改从主干合并到branches/b1(rev8).branches/b1现在看起来像:
one
two
three
four
Run Code Online (Sandbox Code Playgroud)
您描述的问题(以及您的解决方案)非常常见.当然,在一个单独的分支中开始开发"不能上线"的变化本来会更聪明,但我知道它不是一个我们生活的完美世界,而且事情会发生变化;).
幸运的是,有了一个很好的版本控制系统,如SVN,你可以随时随地带来任何变化.并且有多种不同的方法可以做到这一点.所以,当你自己回答了自己的问题时,我已经自由地起草了我如何理解你的问题以及我将如何解决它.下面的图表也可用于内部用途,如果它不再对您有任何帮助,则不会造成任何伤害.
另外一点:我对乌龟并不那么熟悉,但我想它会比SVN命令行更容易樱桃(在你的情况下反向樱桃).特别是如果你有许多分散的提交要选择.我仍然更喜欢使用CLI进行合并操作,因为我现在正在做的事情经常变得更加清晰;)
我希望你无冲突合并我的朋友;)
克里斯托夫

| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |