将本地主干合并到分支的SVN操作

7
免责声明:我对 SVN 还比较陌生,大部分经验都是 GIT 方面的。
我们的生产网站所有代码都在 SVN 主干上。我已经检出了一份副本并进行了一些更改。我们决定为我正在构建的功能创建一个分支。我已经检出了该分支。现在,我有一个本地主干副本,其中包含我的更改,需要将其合并到我本地的分支副本中。完成后,我将放弃本地主干副本,因为我不想将我的更改推送到生产主干。
那么,如何将一个本地 SVN 文件夹中的代码合并到另一个本地 SVN 文件夹中呢?
附言:我在 Ubuntu 12.04 上开发。我已安装 SVN Workbench(但几乎没有使用过),大多数 svn 工作都通过命令行完成。如果有适用于 Linux 的图形界面可以帮助解决此问题,我也没问题。
4个回答

2
  1. 将带有更改的工作副本切换到分支
  2. 提交

哇,这是一个简单得多的解决方案。虽然它不是严格意义上的本地合并,但我认为这种方法可能正好能够满足我的需求。http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.switch.html - Jeremy Harris

1

如果您对Git的经验比SVN更丰富,并且习惯于使用DVCS风格,那么您可以使用SmartGit作为SVN客户端。它的工作方式类似于git-svn,但是它可以完全翻译分支和挑选合并、忽略、EOL处理属性、外部和标签(这是git-svn所不能做到的)。


哇,那很有趣。我得去看看,谢谢! - Jeremy Harris

1

在主干中创建一个差异,然后将其应用到您的分支。

cd trunk
svn diff > ../the-branch/yourchanges.diff
svn revert -R .
cd ../the-branch
svn patch yourchanges.diff

如果补丁不喜欢你在不同的分支上,你可以使用Unix的patch命令。
patch -p0 < yourchanges.diff

这样做可以基本达到目的,但不会删除文件(只会截断文件),也不会保留svn属性更改。


手动复制我的代码更改比最终得到一堆没有svn属性的截断文件要容易得多。不过这是个聪明的想法,我相信它会帮助以后阅读这个问题的人。 - Jeremy Harris

0

因为SVN不是分布式版本控制系统,所以你不能这样做: - 失去你的历史记录, - 或者提交到中央仓库。

我假设你知道如何与中央仓库进行合并。

如果你不介意失去你的历史记录,你应该创建一个本地svn仓库,并将你的本地trunk版本导入其中。检出这个仓库,然后将你的本地分支文件复制到里面。执行合并操作,然后重新提交结果到远程仓库。

但是,如果你的日常工作流程需要有一个本地暂存区,你可以切换到Git或Mercurial。

再见。


很遗憾我不能进行切换。公司使用SVN,因此我必须学会让它为我工作。 - Jeremy Harris
1
你可以尝试说服公司使用可写的 SVN-Git 镜像,并展示它如何提高开发人员的生产力。 - Dmitry Pavlenko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接