颠覆用法

时间:2009-01-02 04:40:26

标签: svn open-source repository directory-structure

我刚开始将“Subversion”和“Tortoise SVN客户端”用于我的一个开源项目,该项目托管在“Google Code”上。我想获得一些使用它的最佳实践。我遵循默认的文件夹结构(主干,分支,标签)。以下是问题

  1. 您什么时候进行初步登记?是在完成一系列功能之后还是从开发的第一天开始?
  2. 初始签到哪个目录?是否为“主干”或您签入“分支”并在功能完成后合并到“主干”。在这种情况下,“trunk”将为空,直到功能完成。
  3. 如果进行了更改,您会直接签到“trunk”吗?如果不是你的工作副本将始终使用“分支”目录,对吧?
  4. 任何帮助都将不胜感激。

6 个答案:

答案 0 :(得分:2)

  1. 我建议您在开始对文件进行大量修改之前签入文件(check in early, check in often)。

  2. 这取决于,有些人喜欢使用trunk stable ,在分支中工作,然后在功能准备就绪时将分支合并回主干,但你也可以直接提交主干。

  3. 这还取决于你将如何工作以及你喜欢在主干中使用什么(最新的稳定版本或最新的前沿版本)。

答案 1 :(得分:0)

我建议尽早办理入住手续。

有很多方法可以做到这一点,但是我成功使用的最常见的方法是开发分支并在到达稳定点(小版本发布,里程碑等)时合并到主干。

如果您还没有,请查看red book,它是svn信息的绝佳资源。

答案 2 :(得分:0)

从头开始创建新项目时,我通常会在SVN的用户区域中这样做,例如

/svn/users/me/project1

这是因为大多数项目都是抛弃原型而我很少使用分支来实现这些目标。一旦项目成为正式项目并且接近它的第一个“原型”版本,我将把它迁移到它自己的存储库

/svn/project1/trunk

使用分支需要一些额外的工作,所以除非必要,否则我们不会使用它们。当多个人正在处理同一个项目并且经常发生冲突或者我正在研究一个我可能决定还原并丢弃的功能时。如果在分支中完成,我可以简单地选择不合并,只删除它。

答案 3 :(得分:0)

所有答案都建议您提前入住,经常入住,我不能同意。这就是我所说的全部内容。但是,我将摘要读作:Subversion适合哪种用途?所以这是一个答案。

我读过有关使用Subversion作为其应用程序存储库的公司。因此,他们告诉服务器他们想要安装应用程序Y的X.然后服务器在SVN服务器上运行更新。他们也在那里存储配置文件。然后,对配置所做的任何更改(通过最终客户的单独Web界面)都会提交给SVN配置存储库。这太棒了。 “当然这些人在Win2k3上使用MS Power Shell,但这项技术仍可以应用于其他地方。

答案 4 :(得分:0)

立即办理登机手续,而不是提前办理登机手续。即使你没有比一个包含头脑风暴和一些可怕的伪装伪代码的特殊文本文件更多的提交,提交它。

我(像许多人一样)在进行某种代码搜索或者搜索满足我想要的程序时,就像你一样找到项目。我将阅读您的首页,然后立即浏览您的SVN主干,看看您在做什么。

如果后备箱中的代码为零,我可能会忘记你的一切。如果您至少有一些文件解释了您的预期设计和一些伪代码,我可能会开始向您发送显示我的想法的补丁。

一个空库的项目尖叫着“永远不会被划伤的痒”......所以尽快推送一些东西。

之后,经常提交。我喜欢做许多小的,有序的承诺,因此很容易跟踪回归并回滚/修复有毒修订。

答案 5 :(得分:0)

  1. 在创建空白基线项目/解决方案结构后签入。空白,因为在此状态下它实际上是可编译的,尽管没有正常工作的代码。原则是在整个开发过程中保持整个项目 - 至少 - 处于可编辑状态,因为团队会逐步并定期提交小的更改,以便构建很难被破坏。

  2. 没有法律要求必须在主干或分行进行初始登记。您可以使用空项目启动Trunk,使其从一开始就稳定,然后分支出来进行开发并在完成后将其合并回Trunk。您还可以选择将空项目签入分支,并在将大量内容合并到主干之前开发第一个工作或基本功能。无论哪种方式,基于第1点,Trunk应该是稳定的并且高质量。只将高质量的内容合并到主干中。

  3. 同样,对此类做法没有严格的授权。一些团队分支所有,甚至简单地重构变量名称更改。有些团队甚至不知道分支/合并并在一个分支(Trunk)中开发所有内容。每个团队在这个问题上都有自己的平衡。我的个人指南是,如果有新功能或主要错误修复或重新设计,分支出来进行测试。如果它是一个小的修复,如字符串拼写错误或在网页中显示四个小数而不是两个小数位,修复Trunk副本就足够了。当然,“主要”与“次要”的解释会有所不同,因此开发/团队领导应该建立自己的标准。无论哪种方式,必须有单元/集成测试伴随更改以验证分支或中继是否按预期工作,尽可能无缺陷。要记住的关键字始终是“高质量,经过测试的代码”。