2012-03-13 58 views
1

我在delphi 7Tortoise svn项目中工作,该项目是一种调查工具。 我们目前正在开发一个新版本,它将是myproject 1.8,在2个月内我们将以myproject 2.0开始。SVN(乌龟) - 如何处理这种情况?

注意:我们已经继承了现有的svn。所以这不是我们的设计

方案: 我在我c:\c:\project\myproject\只是一个单一的文件夹,我们是一个启动如此我们没有与项目开始,我们就开始从myproject 1.5 ..但现在myproject 1.5代码处理已经disapeared和myproject 1.6 ..所以打开时,我们开始myproject 1.7我们做了一个文件夹c:\project\myproject\NV1.6Code并复制整个代码到该文件夹​​,并开始与myproject 1.7 ...现在我不知道如何维护子版本一样myproject 1.7.1myproject 1.7.2`myproject 1.6.4在我们目前的状态。

现在我们刚刚开始myproject 1.8,我们不知道如何开始在颠覆控制 ,因为然后myproject 2.0也将很快来。

结构: 路径:C:\projects\myproject

正如你可以在picture..the NV1.6code目录中看到有1.6版本的代码和所有的目录外是1.7 code版本..

不是好主意? 我不薄,这将是一个好主意

AIM:我如何作出上述烂摊子正确的? 请帮助我如何让我的乌龟SVN最好用在我的情况下保持 版本

  1. myproject version 1.6 (then the subversion like 1.6.1 , 1.6.2, 1.6.3)
  2. myproject version 1.7 (then the subversion like 1.7.1 , 1.7.2, 1.7.3)
  3. myproject version 1.8 (then the subversion like 1.8.1 , 1.8.2, 1.8.3)
  4. then the future version myproject version 2.0
+0

如果您还没有阅读,请考虑获取“[使用Subversion的实用版本控制](http://pragprog.com/book/svn/pragmatic-version-control-using-subversion)”的副本。它涵盖了版本分支,所以它会给你一些很好的背景。 – 2012-03-13 05:12:32

+0

@JoeWhite:好吧,我会去这个:) – PresleyDias 2012-03-13 05:14:44

回答

2

有两种方法可以做到这一点:使用分支或标记功能。

一般来说,我喜欢用标签指定释放点和发展在相对线性的方式(1.6变为1.7,1.7〜1.8等)继续在

但是,如果由于某种原因,说你发布1.6和主要发展到1.7,但你想继续做小的变化到1.6(如1.6.1,1.6.2等),可能有利于创建一个分支。

同时使用这两个功能也很好。

+0

这个想法,好的分支会对我更好吗?即时通讯新手在SVN其他然后只是'提交'和'更新'..所以我很多。 – PresleyDias 2012-03-13 06:49:26

+0

我认为使用两者都可以解决问题(尽管只使用分支也是一个很好的解决方案)。您可以为发布版本添加标签,但是可以让开发人员在不同版本之间开发分支。 – helloworld922 2012-03-13 07:27:41

+0

好的,现在经过一些数据..我的第一份工作是制作三个主要的目录/标签/树干/分支...然后我可以把我所有的代码放在树干中..然后开始创建分支,比如/ branches/myprojec1 .8? – PresleyDias 2012-03-13 09:27:58

3

您应该使用分支和标记功能来解决您的问题。但请记住,为每个版本创建分支确实会使工作变得复杂,并且无法处理其更改。请记住:

  • 尽量减少分支机构的数量。 (通常在您的项目中2或3就足够了)
  • 对于每个发布的版本,创建一个标签。
  • 如果没有合适的机制来合并变更,请避免在源代码管理中拥有大量分支。
  • 如果与开发时间相比花费了太多的时间来合并您的更改,那么分支的结构会出现问题。
  • 如果您决定设立分支机构,请尽可能不要延迟合并。应该禁止任何试图合并所有分支的所有更改(大爆炸合并)。
  • 由于没有明显的原因,团队不应创建多个分支。
  • 如果在系统中创建了任何分支(正确或错误),则在工作结束时应将其更改合并回其父分支(如果可能)。
  • 团队成员不应该在分支,合并或构建新基线时停止开发活动。
  • 不要使用分支来划分开发团队成员,而不是分割他们正在执行的工作。

看看this answer了解更多信息。