我何时在SVN回购中检查TRUNK与完整项目?

hum*_*der 13 svn version-control trunk project

有一个(希望很小)关于SVN和检查回购的问题.基本上我看到有关要检查什么以及何时检查的相互矛盾的教程和建议.有些人会说:

svn co http://my.repos.com/project my_project

...而其他人说:

svn co http://my.repos.com/project/trunk my_project

我什么时候想直接抢占整个项目的主干?在过去,我从来没有遇到任何问题,但我不确定是否有一种方式比另一方更好.

最好.

Jer*_*NER 10

通常一个subversion存储库有3个主目录:

  1. 分支机构
  2. 标签
  3. 树干

Trunk是代码的最新分支.

通常会创建分支,以便开发您在主干中不需要的特定功能.

标签就像后备箱的保存点.

如果您在项目的根目录进行结账,您将获得所有分支,所有标签和主干.这可能会导致大量数据.

例如,如果标记了每个代码版本,您将获得所有过去版本的源代码!

我希望这能帮到您

杰罗姆瓦格纳

  • 同意.*大多数时候,大多数开发人员不需要比/ trunk更多的东西以及他们正在工作/解决错误的一两个分支.其余的 - 特别是标签 - 将很少使用.我主要转到我的标签,试图重现错误报告.知道您拥有与用户相同的版本是一种可靠的方式. (2认同)

mls*_*ter 9

关于此,还有其他几点需要注意.

  1. tags树(和它通常是一个树)中包含的代码在特定时间点的假设不变的快照; 这不是您想要更改的内容,因为大多数部署都将基于标记
  2. 如果您尝试在tags树中提交更改而不是仅仅复制到树中,则大多数Subversion客户端都会抱怨
  3. 对于大多数目的,trunk是一个特殊情况下的目录branches; 唯一重要的区别是它预计包含主要的开发路径

正如其他人所指出的那样,通常没有理由检查整个项目,因为大多数时候你只在主干和一个或两个分支上工作,整个项目可能占用大量的磁盘空间.主要开发"分支"通常是您唯一需要的东西.

这是一个真实的例子.我们的团队针对主干执行所有代码更改.当我们需要alpha(预先完成)版本时,我们只需标记主干.一旦我们针对给定版本点击"代码完成",我们就会创建一个代码冻结分支,我们会在其中进行所有版本更改.beta,RC和GA版本都是从该分支标记的.如果我们需要修补GA版本,则针对分支完成补丁并合并到主干.这样,如果我们需要修补特定的内容,我们就不必担心新的代码会泄漏到经过测试和批准的GA中.它还允许我们在代码冻结后立即开始处理下一版本的软件.

此外,如果有一个"侧面项目"是主干的带外项目,您可以为其创建一个分支,并在准备好时将其合并.

有些团队喜欢为每个bug创建一个分支,有些团队直接在trunk上工作(就像我的一样).如果你的团队做了每个分支的错误,我永远不会检查整个项目.除此之外,我会看到很多我不关心的代码.

另外,关于存储库管理的一点@humble_coder- 大多数Subversion工具在分支/标记管理方面都非常容易使用.例如,TortoiseSVN有一个存储库浏览器,允许你很容易地复制东西(创建分支和标签),甚至svn命令行工具可以用来做与原子操作相同的事情(我们实际上有一个脚本创建alpha标签,代码冻结分支或冻结后释放标签).

希望这可以帮助!