刚从视觉工作室转向颠覆......我已经爱上了!有人可以简单解释一下
我是否需要为每个项目创建一个新的存储库?还是一个新的主干?
由于
答案 0 :(得分:13)
您不需要单独的存储库,但如果需要,也可以。我建议您在http://svnbook.red-bean.com/阅读本书。抓住pdf版本或其他任何东西。它不需要太长时间,它可以很好地解释一些事情。我读了它,发现我很高兴我做到了。
答案 1 :(得分:13)
请记住,subversion只是一个支持版本控制的奇特文件系统。将存储库视为“驱动器根”,如“C:/”。
每个项目都有一个trunk,tags和branches目录。你的所有日常工作都发生在后备箱里。实验代码在分支中完成,然后在以后合并回主干。标签适用于您发布软件时。这些不要编辑。当您发布软件时,您可以根据当前在主干中的内容创建一个具有唯一名称的标签。
我不能说你是否需要为每个项目提供一个单独的存储库,有利有弊。这个blog posting详细说明了它们:
- 简化管理。部署一组钩子。一个存储库 备份。等
- 分支/标签的灵活性。将代码全部放在一个存储库中就可以实现 更容易创建分支或标记 涉及多个项目。
- 轻松移动代码。也许你想从中获取一段代码 一个项目,并在另一个项目中使用它,或 把它变成了几个库 项目。移动代码很容易 在同一个存储库中并保留 代码的历史 过程
醇>以下是一些缺点 单一存储库方法,优点 多仓库方法。
- 尺寸。处理许多较小的存储库可能比处理更容易 一个大的。例如,如果你 退休您可以归档的项目 存储库到媒体并删除它 从磁盘和释放存储。 也许你需要转储/加载一个 存储库出于某种原因,例如 利用新的Subversion 特征。这样做更容易 如果它更小,影响更小 库。即使你最终 我想对你们所有人这样做 存储库,它将产生较小的影响 假设,一次做一个 没有迫切的需要做 他们一下子。
- 全球修订号。尽管这应该不是问题, 有些人认为它是一个和 不喜欢看版本号 推进存储库和 不活跃的项目存在较大差距 在他们的修订历史中。
- 访问控制。而Subversion的authz机制允许 您可以根据需要限制访问 存储库的一部分,它仍然是 在存储库中更容易做到这一点 水平。如果您只有一个项目 少数几个人应该 访问,这更容易做到 该项目的单一存储库。
- 行政灵活性。如果你有多个存储库,那么 实现不同更容易 根据需要挂钩脚本 资料库/项目。如果你想 统一钩子脚本,然后单个 存储库可能更好,但如果 每个项目都需要自己的提交 电子邮件风格然后更容易拥有 那些项目是分开的 存储库
醇>
答案 2 :(得分:7)
我同意,请阅读svnbook。这是一个很好的资源。
我是否需要为每个项目创建一个新的存储库?还是一个新的主干?
Kevin非常清楚地涵盖了单/多存储库的权衡。当我们开始使用svn时,我们为所有开发项目使用了一个存储库。它运作良好,具有所提到的所有优点。但是,随着存储库变得越来越大,由于转储文件的大小以及备份期间产生的问题,管理起来变得更加困难。它也成为一个问题,项目无法轻易地从存储库中存档 - 这当然是可能的,但它需要从存储库中转储和提取项目。它们不是你无法解决的问题,但要注意这一点。
- 存储库
- 分行
- 标签
- 中继线
醇>
分支,标签和主干只是存储库中包含的文件的副本。它允许您在适当的任何时间(通常在发布或功能分支处)隔离和检查文件。
关于分支,标签和主干的重要一点是它们只是svn中的约定。这三个位置之间没有功能差异,它们只是一种可接受的使用模式,如果您有充分的理由,它们可以进行不同的更改或组织。我不建议你组织不同,但你会发现svn非常灵活,因为除了惯例之外,实际上没有强制的组织结构。
根据您决定在存储库中拥有的项目数量,您可以采用不同的方式进行组织。
您可以在子目录下包含项目:
\repo
\branches
\...
\tags
\...
\trunk
\..
或者您可以让项目包含子目录:
\repo
\Project1
\branches
\tags
\trunk
\Project2
\branches
\tags
\trunk
svnbook中有一些权衡取舍。如果每个存储库只有一个项目,则通常使用第一种方法;如果存储库中有多个项目,则通常使用第二种方法。
好消息是你可以开始使用svn然后弄清楚你喜欢什么。您应该有某种组织,但是,通过廉价的副本,您可以随着情况或工作流程的变化重新安排文件夹。
答案 3 :(得分:3)
与其他版本控制系统(如CVS或Git)相比,SVN需要记住的重要一点是,SVN实际上没有概念或分支或标记。就SVN而言,它只是一堆文件夹和文件。因此,虽然您会看到很多人使用分支/标签/主干设置,但这不是必需的,如果您愿意,您可以偏离此。
一般来说,“主干”是您保持活跃发展的地方。所以这就是你做所有提交的地方。无论您是否结帐后备箱或使用标签/分支机构都取决于您。
分支机构,正如我所使用的那样,通常用于需要对应用程序进行大量更改但不希望它们在主干中,因为您希望能够继续针对主干进行开发,而无需部署其他更改。在这种情况下,您可能会有类似
的内容\repo
\trunk
\branches
\version_two
在这种情况下,您可以分别在trunk和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
答案 4 :(得分:2)
阅读你的标签我看到你开始使用VisualSVN而不是旧的VSS系统。 (你的问题是你停止使用Visual Studio ..这使得VisualSVN成为一个奇怪的选择。)
SourceSafe和VSS之间的主要区别之一是您可以选择不同的工具来访问同一个存储库(并且您可以在每次共享时进行切换,因为它们共享相同的工作副本)。
E.g: