【发布时间】:2011-10-06 13:15:49
【问题描述】:
在工作中我们使用 Subversion,但是因为没有人知道如何分支我们的“分支”涉及复制整个代码库并将其视为单独的存储库 - 这意味着我们对“补丁”分支所做的任何更改都需要复制/粘贴到主开发(“主干”)分支,因此它们是同步的,我们不能使用任何内置的合并工具(我们手动使用 WinMerge 或类似工具来查找更改的行)。没有人愿意花时间学习如何使用 SVN 的分支功能,而是鼓励使用这种策略作为替代方案。
由于我无法说服其他人研究真正的分支,我正在考虑为自己做一些事情以减少合并的痛苦。我想研究 Mercurial 有一段时间了(我之前在我的 Mac 上使用过一点 Git;工作中的 Windows7)作为 SVN 的批发替代品,如果我能得到支持的话。
我的问题是:首先,如果我必须将更改推送到两个 SVN 存储库,那么在我的本地计算机上使用 Mercurial 会不会很困难?在本地,我可以使用分支轻松地将代码合并回来,保持 SVN 存储库的不同将是一个简单的问题,将分支推送到补丁代码,并将 dev 分支(当然在合并后)推送到 SVN 中的 dev 分支,对?
其次,在我介绍 Mercurial 之前,有没有更好的方法来做到这一点?我试图告诉我的同事使用 SVN 的分支,但我得到的答案是“这暂时有效”,因为没有人愿意花时间学习 SVN 分支,而且 100% 老实说我从未使用过 SVN分支自己,所以我不确定使用起来有多容易/难,并且不想冒险尝试分支并搞砸一些事情。
【问题讨论】:
-
我认为复制(尽管“廉价”复制)是在 SVN 中进行分支的标准方式。请注意,我不是 SVN 的大用户,但这就是我工作场所的一些项目的分支方式,以及 svn 书籍如何定义它。
-
也许,我们没有使用 SVN 的分支,我的意思是我们实际上是在复制文件(基本上是进行 SVN 导出以获取所有文件,并重命名文件夹,然后将其重新提交到 SVN 并处理它作为一个完全不同的存储库)。
-
@WayneM 你是针对同一个还是不同的 svn repo 采取行动?
-
我不是 100% 确定;查看回购浏览器,我看到一个“主”文件夹,假设它下面有两个文件夹:开发和补丁。我们仅将错误修复提交到 Patch,然后必须手动将更改复制到 Development。
-
这里有一个问题,那就是您没有按预期使用这些工具。如果您决定不正确地学习分支,Mercurial、Git、Subversion、TFS、Vault,基本上任何 版本控制系统都会与您抗衡。您问是否有更好的方法来做到这一点,是的,您学习如何正确使用该工具。使用合并工具进行手动合并的问题在于,您需要准确了解更改的内容,否则可能会以错误的方式复制更改(即,您将分支 A 中的删除解释为分支 B 中的插入。)。