0

我正在比较 SVN 和 Git。

我知道 'svn checkout' 与 'git clone' 相同,它们都包含原始存储库的历史记录。

在 Git 中,一旦 'git clone' 完成,我不再需要 'git clone' 来获取原始存储库的历史记录,因为我可以使用 'git fetch' 和 'git merge',它们比'git 克隆'。所以“git fetch”和“git merge”可以让我的存储库成为原始存储库的完美备份。

但是SVN呢?'svn checkout' 是一项非常昂贵的工作,因为它处理整个存储库。因此,只要我愿意,就做'svn checkout'并不是一个好的选择。'svn update' 比'svn checkout' 轻得多,因为'svn update' 只提供更新的东西。

我想知道“svn update”是否包含原始存储库的历史记录。如果是这样,'svn update' 可以将我签出的存储库保留为原始存储库的备份。如果没有,则没有简单的方法可以将我的签出存储库保留为原始存储库的备份。

请给我一个好的答案^^

4

3 回答 3

2

你的第一印象是错误的:svn checkout一样git clone

svn checkout只获取最新版本,并且svn update只更新到最新版本。要以任何方式访问项目的历史记录,您必须联系服务器。

于 2013-01-22T12:18:41.170 回答
1

SVN 仅在本地保留工作副本。这意味着 asvn checkout仅创建当前 HEAD 的工作副本(并将svn update现有工作副本更新到当前 HEAD),但提交历史记录仍保留在服务器上(例如,如果您执行 a svn log,则加载提交历史记录来自服务器)。

另一方面,Git 保留整个存储库——不仅是工作副本(git-speak 中的“工作树”),还有整个提交历史。

如果您想将您的 SVN 工作副本恢复为旧版本,您可以使用 来执行此操作svn update -r[revision number],但是 SVN 会再次从服务器中提取指定的修订版本。

于 2013-01-22T12:20:04.047 回答
0

为了保留您的存储库的备份,而不是检查它,我强烈建议您查看使用svnadmin dumpsvnadmin hotcopy

于 2013-01-22T12:12:28.267 回答