7

免责声明:我对 SVN 比较陌生。我的大部分经验都是与 GIT 相关的。

我们有一个生产站点,其中包含 SVN 主干上的所有代码。我有一个已签出的副本,我一直在对其进行一些更改。我们决定为我正在构建的功能创建一个分支。我继续检查了分支。现在我有一个主干的本地副本,其中包含我需要合并到分支的本地副本中的更改。一旦我这样做了,我将丢弃本地主干副本,因为我不希望我的更改被推送到生产主干。

我将如何将本地 SVN 文件夹中的代码合并到另一个本地 SVN 文件夹中?

PS 我在 Ubuntu 12.04 上开发。我安装了 SVN Workbench(但我并没有真正使用它)并通过命令行完成我的大部分 svn 工作。如果有一个 linux GUI 可以帮助解决这个问题,我也可以。

4

4 回答 4

2
  1. 使用对分支的更改来切换工作副本
  2. 犯罪
于 2012-07-27T14:12:18.233 回答
1

由于您对 Git 的体验比 SVN 的体验更丰富,并且您以 DVCS 风格思考,您可以使用SmartGit作为 SVN 客户端。它像 git-svn 一样工作,但诚实地翻译完整的分支和挑选合并、忽略、EOL 处理属性、外部和标签(git-svn 没有)。

于 2012-07-27T14:03:37.597 回答
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 属性更改。

于 2012-07-27T14:09:20.853 回答
0

好吧,因为 SVN 不是 DCVS,如果没有: - 丢失您的历史记录, - 或提交到中央存储库,您将无法做到这一点。

我假设您知道如何与中央存储库执行合并。

如果您不介意丢失历史记录,您应该创建一个本地 svn 存储库并在其中导入您本地版本的主干。签出此 repo 并将您的本地分支文件复制到其中。执行合并并将结果重新提交到远程存储库。

但同样,如果您的日常工作流程意味着要有一个本地暂存区,您可以切换到 Git 或 Mercurial。

再见。

于 2012-07-27T13:31:08.173 回答