如何在SVN工作历史中修复项目版本?

时间:2010-12-02 09:57:13

标签: svn tortoisesvn visualsvn

我在项目上工作,可能包含几个版本到几个客户端。即2.65 - 客户端1的版本,以及2.67 - 客户端2的版本;一般来说,2.65和2.67之间的差异确实很小 - 而且由于这个原因,每个客户都不需要在几个分支机构中。 所有我需要的东西 - 在工作历史中修复版本,如果将来需要,请结帐特别选择的版本(即工作副本为3.4时结帐2.65版本 - 并为相应的客户端添加一些更改)。

我在服务器上使用VisualSVN,在客户端使用TortoiseSVN。 THX)

2 个答案:

答案 0 :(得分:2)

为每个客户端使用分支有什么问题,对每个分支应用所需的更改,然后为每个分支创建一个新标记?

示例:

目前分支 client1 的标记为“2.65”,分支 client2 的标记为“2.67”。
现在,您对trunk进行了一些修复,并且只想将它们传递回分支 client1 ,因为client2没有应用修复的功能。

将更改从主干到分支 client1 合并,创建一个新标记'what'并将此新标记版本提供给客户。

BTW:TortoiseSVN有一个集成的 Merge 功能,我从来没有工作过(可能不理解)。在另一个项目中使用Git向我展示了智能(自动)合并可以真正起作用......

答案 1 :(得分:1)

您正在描述分支的一个原型用例。严重。

但是,我猜你丢弃分支机构,因为在分支机构之间移植更改是一项艰巨而耗时的任务。它很慢,你必须修复难以理解的冲突。嗯,这不是分支的限制:它是Subversion的限制。显然,Subversion没有存储有关您的更改的足够信息,这使得合并非常困难。

据说其他现代版控制系统比Subversion更好地处理分支方式:git,Mercurial,Bazaar ......你可能会考虑转换。

无论如何,即使在Subversion中你也可以处理并行分支。看看“Subversion版本控制”一书中的“分支和合并”。 TortoiseSVN可以非常方便,因为当您尝试执行合并时,它会清除已经移植的修订版。