你是SVN新手? 在使用SVN时,不确定如何最大限度地提高效率? 我们编写了这个指南,以帮助你开始使用SVN并提高工作效率。
如何布局仓库
布局仓库的方案很多,但最终是由你自己来决定使用哪种方案。
官方推荐的结构包括一个“project root”,它作为项目的根目录。 “project root”由三个子目录组成:/ trunk,/ branches和/ tags。 你的仓库只能有一个项目根目录,或者其中几个。
对于完全不相关或只有松散关联关系的项目仓库,要确保每个项目都有自己的/ trunk,/ branches和/ tags,以保证一个项目中的更改不会影响另一个项目的可用性。
ProjectA
trunk
branches
tags
ProjectB
trunk
branches
tags
依照这种方式,每个项目都有了自己的文件夹,并且文件夹中包含了/ trunk,/ branches和/ tags子目录。 但是,如果你需要同时使用ProjectA和ProjectB中的文件创建branch或tag,这种布局可能不是最佳的选择。 这种情况,你可能需要创建包含多个项目的根目录。
一般来说,/ trunk是项目的主要开发线,根据你团队的工作流程,你可以选择是否在/trunk上提交代码。 / branches有多种使用方式,但最常见的是保护/ trunk上的开发。 / tags通常用于在特定时间点创建项目的“快照”。 branch和tag之间的主要区别是:tag在创建后不会被修改,而branch通常是为了某种更改目的(如开发新功能、bug修复)而创建的。 有关branch和tag的更多信息,请查看这里。
分支规则
采用什么样的分支规则取决于你的项目工作流程,然而,有三种常用规则被广泛使用:
从不拉取分支
所有用户都将他们的工作提交给/ trunk。有时,如果用户提交更改比较复杂,/ trunk将会被扰乱。该规则的优点是易于遵循且使用门槛低,因为不需要学习如何分支或合并。然而,这种方式可能会产生混乱并且代码可能容易变得不可靠。
总是拉取分支
所有用户都为每个开发任务创建一个专用分支。然后,当他们完成任务时,其他人检查更改并将它们合并到/ trunk。因此,/ trunk始终保持稳定。但是,该规则需要更多的分支和合并,这可能会破坏工作流程并导致不必要的延迟。
按需拉取分支
最后,你可以使用一个折中的方案,结合以上两个规则的优点。在这个规则中,用户将他们的日常工作提交给/ trunk,每次提交的更改必须足够小,以便其他用户可以轻松查看。但是,/ trunk必须能够持续编译并通过回归测试。因此,如果用户无法在不破坏/ trunk的情况下进行多次小型提交,那么用户应该创建一个分支并在新分支上完成开发工作。这样,鼓励同行评审而不会中断/trunk。
提交变更集
当你执行提交时,每个提交应该只针对一个特定的目的。例如,同时修复了多个bug而一次性提交,这是很糟糕的体验。将不同的更改分开提交,更容易跟踪修改了哪些文件。
工作副本的revision混合问题
值得注意的是,你的工作副本目录和文件很可能处于不同的working revision。
每次在SVN中进行提交时,你刚刚提交的内容都会成为HEAD revision,其他所有内容都保留在旧版本中。
如果你想要删除没有working revision of HEAD的文件或目录,以及对没有working revision of HEAD的目录进行属性更改,这些提交将无法完成。要解决这些问题,可以通过svn update
命令将整个工作副本同步到同一个working revision。
使用大文件
使用SVN的一个好处是,它处理的文件大小没有硬性限制,因为文件是以“流”的形式在客户端和服务器之间双向发送。这使得网络的每一端可以使用较少的、额定的内存。
虽然文件大小没有硬性要求,但在实际使用中,大文件(十几MB以上)将需要大量的时间和空间才能上传,不过上传大文件并不会损害你的服务器或影响其他用户。
此外,请务必注意,你的工作副本将存储.svn / text-base /目录中所有版本控制文件的原始副本。这意味着,你的工作副本将占用原始数据集大小的至少两倍的磁盘空间。
原文链接
SVN Best Practices
网友评论