保存在SVN仓库中的源代码 – 我需要备份什么?

我最近的任务是在我们的开发系统上实现版本控制。 我使用TortoiseSVN创build了一个SVN仓库,方法如下:

  • 在存储代码的机器上安装SVN服务器
  • 使用该机器上的存储库浏览器将源代码导入到存储库中

导入代码后,我是否认为不再需要存储在那里的代码? 没有其他机器上的工作副本提交似乎已经改变了这个代码,只有svn库。

我熟悉SVN不会简单地存储原始代码,而是存在差异的概念。 出于这个原因,我的问题是: 正在备份SVN存储库文件夹ON IT'S OWN作为此代码的备份策略吗?

我们也每个月都会对工作机器上的代码进行手动备份,并且我正在考虑编写一个预定的batch file,以便每天将存储库存储到远程驱动器。 如果我做了后者,而且假设我们丢失了存储库服务器和工作机器,我们是否能够从这个daly svndump中恢复代码?

希望是有道理的; 提前致谢。

备份SVN存储库服务器应该足够了。 需要记住的一件事情是,如果工作机器停机,您将失去对工作机器所做的任何配置,例如服务器配置,系统变量等,因此请确保这些配置已记录在案。 如果您正在虚拟环境中运行,则可以备份机器映像,这实际上可以缩短恢复时间。

至于svndump,这正是它的用途。 您可以创建一个新的存储库并加载转储文件,您将获得您的工作代码和您需要的一切。

我会建议使用转储文件做一个干运行恢复,这样你就可以确信你正在创建转储文件,你不会试图找出如何在发生实际的紧急情况时恢复转储文件。

将代码导入存储库后,应删除原始“源”。 它没有链接到存储库(除非您执行了就地导入),并且不希望有人碰到它,认为他们可以/应该继续使用它。 现在,你的东西在SVN中,该存储库是您的代码的规范来源。

使用作为备份的存储库数据库文件夹进行简单复制(或使用您选择的企业备份工具进行备份) 可能是不够的。 如果您的副本在另一个操作正在进行时执行,则最终可能会以奇数状态备份存储库。 今天的风险并不像BDB存储库在世界各地漫游时那么大,但需要考虑。

使用svndumpsvnadmin hotcopy来替代您的备份副本。 有关更多详细信息, 请参阅手册 。

您仍然需要备份您的访问控制配置(除非您使用1.8版本中的新功能将其存储在存储库本身中)和您的挂钩脚本。 这些不是由svndumpsvnadmin hotcopy处理。

请记住,如果您正在执行每日备份,并且存储库中存在大量流失,您仍然非常暴露。 如果你在午夜进行备份,并且硬盘在晚上11点有头部碰撞,那么你已经失去了整天的工作。 由于这个原因,一些版本库管理员在白天更频繁地进行增量转储或hotcopy,或者在每次提交之后为真正的偏执狂做出增量转储或hotcopy。

如果您需要恢复存储库,则在开发人员工作站(或您的“工作机器”)上备份工作副本是没有用的,因为这些工作副本不包含存储库历史记录。 如果它让你感觉好一些,但是工作副本在Subversion中被认为是一次性的。 这样做的唯一原因是为了备份人们还没有做出的改变(在这种情况下,他们为什么要退缩?),或者在需要备份之后加快恢复工作的进程迫使他们执行新的结帐)。