颠覆结构问题
回答
你不需要一个单独的存储库,但你可以如果你想。我建议您阅读。抓住PDF版本或其他。这不需要太长时间,它解释了一些很好的事情。我读过它,发现我很高兴我做到了。
+1红豆书很棒(更是如此,因为它是免费的)。 – 2009-02-06 14:37:05
+1。优秀阅读! – 2009-02-07 07:01:19
请记住,颠覆只是一个支持版本控制的花哨的文件系统。将存储库视为“驱动器根目录”,如“C:/”。
每个项目都有一个trunk,tags和branches目录。所有的日常工作都发生在行李箱中。实验代码在分支中完成,然后在稍后的日期合并回主干。标签是用于发布软件的。这些是要编辑的而不是。当您发布软件时,您将根据当前中继中的内容创建具有唯一名称的标签。
我不能说你是否需要为每个项目单独存储库,这里有优点和缺点。这blog posting详细介绍他们:
- 简化的管理。一套要部署的钩子。一个存储库 进行备份。等等。
- 分支/标签的灵活性。将代码全部存储在一个存储库中,它使 更易于创建涉及多个项目的分支或标记 。
- 轻松移动代码。也许你想从 一个项目的代码段,并在另一个项目中使用它,或 把它变成一个库的几个 项目。将代码 移动到同一个存储库中并将 过程中的代码历史保留为 很容易。
以下是 单个存储库方法的一些缺点,以及 到多存储库方法的缺点。
- 大小。处理很多较小的存储库可能比一个大的存储库更容易处理。例如,如果 退役项目,则可以将存储库 归档为介质,并从磁盘中删除它 并释放存储空间。 也许你需要转储/加载 存储库由于某种原因,如 利用新的Subversion 功能。这很容易做到,并且如果它是较小的 存储库,则影响较小。即使您最终 想要对您的所有 存储库执行此操作,它将对 每次只执行一个操作具有较小的影响,假设 没有迫切需要一次执行它们。
- 全球修订编号。尽管这不应该成为问题,但有些人认为它是一个,而 不希望看到版本库上的版本号 预先更新,并且 未激活的项目在其修订历史中有较大的差距 。
- 访问控制。尽管Subversion的authz机制允许您根据需要将 限制为 存储库的某些部分,但在存储库 级别仍然可以使用 。如果您有一个项目只有 a选择几个人应该访问,这对于该项目的单个存储库更容易。
- 行政灵活性。如果您有多个存储库,则根据 存储库/项目的需要,更容易实现不同的 挂接脚本。如果你想 统一的钩子脚本,然后单 库可能会更好,但如果 每个项目都想自己的承诺 电子邮件的风格,那么就比较容易有 这些项目在不同的 库
我同意,阅读svnbook。这是一个很好的资源。
是否需要为每个项目创建一个新的存储库?还是新的后备箱?
Kevin涵盖了单个/多个存储库的权衡。当我们开始使用svn时,我们为所有的开发项目使用了一个存储库。它运行良好,并具有所提到的所有优点。但是,随着存储库变大,由于转储文件的大小以及备份期间产生的问题,管理变得更加困难。这也成为一个问题,项目不能很容易地从存储库中归档 - 这当然是可能的,但它需要倾销并从存储库中提取项目。他们不是你无法解决的问题,但需要牢记。
- 库
- 分行
- 标签
- 干线
分支,标签和主干都只是包含在库文件的副本。它允许您在任何合适的时间(通常在发布版或功能部门)分隔并检查文件。
一个重要的事情要记住分支,标签和树干是他们只是在svn约定。这三个地点之间没有功能差异,它们只是一种可接受的使用模式,如果您有充分的理由,它们可以进行不同的更改或组织。我不建议你组织不同,但你会发现svn非常灵活,因为除了约定之外,并没有真正的强制组织结构。
根据您决定在存储库中拥有多少个项目,您可以组织不同。
你可以有计划的子目录下它:
\repo
\branches
\...
\tags
\...
\trunk
\..
,或者你可以拥有项目包含子目录:
\repo
\Project1
\branches
\tags
\trunk
\Project2
\branches
\tags
\trunk
有被覆盖在svnbook权衡。如果每个存储库只有一个项目,而第二个方法通常使用,如果存储库中只有一个项目,则第二个方法通常使用。
好的是,你可以开始使用svn,然后找出你喜欢什么。您应该拥有某种组织,但使用便宜的副本,随着情况或工作流程的变化,您可以随时重新安排文件夹。
与其他版本控制系统(如CVS或Git)相比,SVN需要记住的一件重要事情是SVN并没有真正的概念,分支或标记。就SVN而言,这只是一堆文件夹和文件。所以虽然你会看到很多使用branches/tags/trunk setup的人,但这不是必需的,如果你愿意,你可以偏离这一点。
一般来说,“行李箱”是您保持积极发展的地方。所以这是你做所有提交的地方。无论您是否签出中继线或使用标签/分支,完全取决于您。
正如我用过的那样,分支机构通常用于当您需要对应用程序进行较大更改但不希望它们位于主干中时,因为您希望能够继续开发主干而不必部署其他更改。在这种情况下,你可能有类似
\repo
\trunk
\branches
\version_two
在这种情况下,你可以在两个主干开发和version_two分开和,假设你住的网站是一个主干结账,你不需要担心“意外”用您的其他更改打破您的现场。当这些更改完成并准备就绪时,只需将它们合并回主干即可。
标签可以类似于分支机构使用,而不是检出中继,只是使用'svn up'来更新您的存储库而不是几个标签,每个标签代表一个版本。所以,你可以回购看起来像
/repo
/trunk
/branch
/version_one
/version_two
/tags
/1.0.0
/1.0.1
/1.1.0
在这种情况下,总的想法是,当你准备做一个部署你做一个
svn copy
要通过复制行李箱标签(在这种情况下,下一个可能是1.1.1,1.2.0,2.0.0等)。你如何给你的标签命名完全取决于你自己,而且还取决于你的项目和要求。有了这条路线,而不是做一个普通的'svn up',你将不得不做一个svn切换。所以你必须使用
svn switch https://svn.yourrepo.com/repo/tags/1.1.0
交换机会自动更新,添加和删除相应的文件。
当涉及到一个回购许多项目或单独回购为每一个我每一个项目回购的倡导者。它提供了轻松管理访问权限的其他好处。但最重要的是,这意味着每个项目都有一个单独的提交历史和单独的日志。这m
阅读您的标签我看到您开始使用VisualSVN而不是您的旧VSS系统。 (你的问题说你停止使用Visual Studio ..这使得VisualSVN成为一个奇怪的选择)。
之一的SourceSafe和VSS之间的主要区别是,你可以选择不同的工具来访问相同的资源库(你可以切换每次你喜欢的时间,因为他们都有着相同的workingcopy)。
例如为:
- TortoiseSVN的资源管理器集成。
- 用于脚本的正常subversion client。
- VisualSVN作为Visual Studio前端for TortoiseSVN
- AnkhSVN作为Visual Studio中的真正SCC(VAPI)包。
我假设从Visual Source Safe?或者您是否也停止使用Visual Studio? – 2009-02-06 10:23:28