情况是我花了一些时间搞乱一些实验性代码.我现在想将部分代码 - 大约500行 - 移动到另一个文件中,但我不想丢失历史记录,就像我做一个简单的文本编辑器剪切和粘贴一样.
尽管我知道如何获得将原始文件 - svn副本中的代码分开,然后从两个副本中删除不需要的东西.但我不知道如何将部分副本附加到现有文件上,保留两者的历史记录.
这很重要的原因基本上是代码只是非常专业的东西,以帮助实现一些更高级别的功能.我不希望它污染全局命名空间,所以我希望它在一个文件中,它将被使用并包装在匿名命名空间中.
我意识到这听起来像将一个分支合并回主干.问题是,没有分支.实验代码并不是作为任何东西的副本开始的 - 它只是一堆从头开始的代码.我要剪切的文件和我要粘贴的文件是完全独立的文件.
我主要使用TortoiseSVN,但也安装了命令行subversion.
Wim*_*nen 17
您可以将一个文件的所有修订版(或特定修订版)合并到另一个文件中
svn merge sourcefile targetfile -r 0:HEAD
Run Code Online (Sandbox Code Playgroud)
起初我以为必须使用该--ignore-ancestry选项(因为两个文件不共享任何共同历史)但显然这不是必需的.我用svn 1.6.3测试过.
您当然很可能在合并结果中获得大量冲突标记.手动合并(如你所说的复制和粘贴合并)可能更容易,然后运行上面的merge命令--record-only来告诉subversion它.
合并之后,targetfile将有一个svn:mergeinfo属性,指示哪个提交从sourcefile哪里合并到它.检查日志时targetfile,可以使用该--use-merge-history选项查看两个文件的历史记录.TortoiseSVN在日志表单中以复选框的形式具有相同的功能.
| 归档时间: |
|
| 查看次数: |
2691 次 |
| 最近记录: |