在Subversion中,应如何设置应用程序的新主版本?


10

我即将开始开发我的商业应用程序的新版本(版本4)。我使用Subversion。

根据您的经验,错误和成功,您将如何建议我在Subversion中设置新版本?

这里是一些信息:在版本4发布之后,我打算在版本3中继续发布重要更新。但是,所有新功能的开发都将仅在版本4中进行。

如果相关的话:我是该产品的单独开发人员,而且情况可能仍然如此。

编辑:我知道SVN的标签和分支。我想我需要的是在我的情况下使用标签和分支的最佳策略。

Answers:


8

您要做的是创建Branches。听起来像是您的源代码树中的一个分支,通常是您发布源代码的源代码副本。您将提交此分支以进行关键更新,并从该分支构建更新。

您现在要提交的将是trunk,您将在其中编写版本4。如果对版本3进行了任何重大更改,并且您希望在版本4中进行更改,则需要从分支(v3)到主干(v4)进行合并,以将更改带到主干。

您还可以查看标签,它们类似于分支,但链接到一个版本,通常是一个版本的最后一个修订版(或第一个修订版)。


在制作先前版本的分支时,您还可以为创建的每个更新/发行版创建标签。这样,您就可以提交一个分支,并且可以使用标记来构建您制作的任何先前版本。
盖尔滕

svn中的IIRC标记不一定链接到单个版本,实际上它们与分支完全相同,只是内涵
jk。

实际上,分支和标签在实现上是相同的,它们本质上是代码的副本。仅在约定上它们有所不同,标签旨在指向特定的修订版本,而分支则被视为替代的开发路径。
Karthik T

3

这取决于。

您可以将版本4保留在主干中,然后继续在V4上进行开发。版本3将是一个分支,您可以根据需要进行更新。这种方法的好处是,如果在V3和V4中都发现了一个关键问题,则可以跨分支对文件进行简单合并。

另一个选择是为V4创建一个全新的存储库。这将为您重新开始。缺点是更改历史记录已重置,您将无法通过Subversion合并文件。您必须使用Beyond Compare之类的程序来合并更改。

我个人会坚持第一种方法。创建一个V3分支,并在该分支中维护代码和更新。可以在后备箱中开发新的V4代码。


2

我找到了解决这种情况的绝佳指南

If you want to be able to both develop a newer version (in trunk) and 
fix bugs on an older version, what you want is a branch for the older 
version. You can fix your bug in the older version's branch, then 
make a new tag of that. 
Example: 
/repo/ 
        project/ 
                trunk/ 
                branches/   
                tags/ 
You've developed your software in trunk and are now ready to call it 
version 1.0. You make a branch and a tag: 
svn cp $REPO/project/trunk $REPO/project/branches/1.x 
svn cp $REPO/project/branches/1.x $REPO/project/tags/1.0 
/repo/ 
        project/ 
                trunk/ 
                branches/ 
                        1.x/    
                tags/ 
                        1.0/ 
Now you continue to develop in trunk, adding new features, and this 
will eventually become version 2.0. But while you're doing this, you 
find a bug in 1.0 and need to fix it quick. So you check out branches/ 
1.x, make the change, test it, and commit it. Then you tag that as 1.1: 
svn cp $REPO/project/branches/1.x $REPO/project/tags/1.1 
/repo/ 
        project/ 
                trunk/ 
                branches/ 
                        1.x/    
                tags/ 
                        1.0/ 
                        1.1/ 
If the bug also exists in trunk, then you need to port your bugfix to 
trunk. "svn merge" can help you there. 
cd trunk-wc 
svn merge -c$R $REPO/project/branches/1.x . 
where $R is the revision in which you fixed the bug on the 1.x 
branch. Now you test the fix in trunk and then commit it. Now the bug 
is fixed in trunk too. 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.