我发现SVN在文档、个人文件等非源代码用途上非常有用。
你还发现版本控制系统的其他实际用途是什么?
在我早期的一份工作中,我们使用CVS进行DNS版本控制。主要是为了以一种简单粗暴的方式备份区域文件。
我还听说过有人将版本控制系统用于他们的个人目录。
在我大学的最后一个学期,我修了两门课程,每门课都有一个大型、耗时的项目要在学期末提交。它们还要求整个学期写几篇较长的论文。我在这两门课上都广泛使用 SVN 来跟踪我对每篇论文和每个项目所做的每一次更改。
当涉及到写作时,我更喜欢“一口气写完”的方式,并且如果我试图在多个会话中分散这个过程,我往往会失去思路。能够查看我的论文的最新版本差异,使我更容易重新进入状态。
我经常使用LaTeX编辑许多文档,因此我使用SVN存储tex文件、图片等。这对于进行差异比较非常方便,希望在遇到灾难时能够挽救我。
通常,我将构建过程所需的任何内容都放入源代码控制中。唯一的问题是,如果您有其他部门(例如市场营销)准备的资源,这些资源可能会被包含在您的安装程序中。
我有一个名为bin的文件夹,其中包含像sysinternals等有用的实用程序。我使用svn在不同的机器上更新它们。此外,像powershell脚本、vimrc文件等也很适合集中管理。
大多数文档都需要被多人查看。例如,在项目计划阶段,分析员更新需求文档时,您想了解自上次查看以来有哪些变化,这时文档比较有用。当然,维基百科也具备这种功能。我们使用SharePoint进行此类操作,但可以选择其他供应商。
我经常使用版本控制来管理一些常用文件,因为我有一台笔记本电脑、一台工作用的台式机以及一台家里的台式机,我也在家里工作两天。
任何一台机器上的新会话都会从一个名为“start”的脚本开始,该脚本会更新一堆检出内容,并以一个名为“stop”的脚本结束,该脚本会将一些内容提交到版本控制系统中,或者至少显示修改的内容。
我使用它来:
此外,我还编写了一些基于Subversion的东西来管理系统和用户账户的配置文件。我在很多机器上有很多账户,而我厌倦了总是重新学习如何配置我的shell/vim/...,所以我现在也将大部分这些内容存储在版本控制中。其中包括电子邮件签名文件、$HOME/bin中的一堆shell脚本等。
我几乎为所有目的使用版本控制来管理我的文档。
我正在使用Mercurial,因此在给定目录中设置新存储库只需要简单的“hg init”命令,这比设置新的Subversion存储库要容易得多。
我还发现RCS在任何需要同步文件的情况下都非常好用 - 我现在使用它来代替rsync进行所有同步需求。它也更容易备份 - 将存储库克隆到另一个位置/机器/磁盘意味着我可以将更改推送到该位置,如果有默认的推送存储库,则更容易。如果您不在远程存储库中进行修改,则无需过多担心设置除默认值外的其他内容。
对我来说最好的事情之一是,我可以在任何我拥有SSH访问权限的系统上进行同步、备份或其他操作。(好吧,如果他们能在大学为我安装mercurial,那就更好了!)