2010-10-20 88 views
1

由于磁盘故障,我们的tortoiseSVN资料库不幸今天变得腐败。乌龟SVN仓库变得腐败 - 我们可以提交工作副本到旧的仓库备份吗?

我们有基于掀起了良好的工作拷贝修订2897. 我们最近的备份存储库是从版本2848

我们想挽救尽可能多的历史,而不是开始一个新的存储库。

因此,我们可以通过直接提交的工作拷贝到旧的备份库这样做呢?

+0

注意之间的历史了[SVN书(http://svnbook.red-bean.com/)介绍了一种技术,其中一个post-commit钩子做增量备份。现在你被咬了一次,你可能想要实现这一点。 (当然,我们都知道,如果你这样做并且它确实有效,这将永远不会再发生,但是如果你不这样做,或者如果你这样做有问题,下一个磁盘肯定会做这又':)')哦,对,顺便说一句,我与[thedev(http://stackoverflow.com/questions/3981697/3981740#3981740)对这个('+ 1'从我),但SVN可能会抱怨本地修订号。 – sbi 2010-10-20 20:05:37

+0

增量备份不是防御,除非它们被保存到不同的磁盘。考虑使用svnsync的镜像变为远程热备份,或一些更复杂,如写直通代理功能 – 2010-10-20 20:10:23

+0

@马克:谁说这些增量转储必须在同一磁盘来进行? ':)'但是,是的,这是一个重要的评论。请注意,你可以从post-commit钩子触发svnsync。 – sbi 2010-10-20 20:12:12

回答

2

如果我不缺什么,我没有看到在这样一个犯任何问题。只有你不会有两次修订之间的提交的历史细节。

+2

由于工作副本的版本号比版本库更高,SVN可能会打嗝。如果是这样,您可以从您的工作副本(的副本)中删除'.svn'文件夹,并将其复制到新的结帐中。但是,这将会失去对代码所做的更改(例如属性)以外的任何更改。 – sbi 2010-10-20 20:10:35

0

你失去了你的提交历史,因为修订2848 Subversion工作副本只保留本地状态....

依赖于你如何恢复你的资料库,你也可能感受到犯因误匹配问题存储库UUID。 svn switch命令可用于指示存储库的更改。另一种选择是使用tortoiseSVN创建自修订版2848以来的更改修补程序,并将其应用于新的结帐。

+0

请注意,除了代码(属性等)之外,修补程序不会有任何更改,请确保您没有以这种方式丢失重要的东西。 – sbi 2010-10-20 20:08:47

+0

你对物业变化的评论很好。让我们面临不可能从结账中充分和忠实地构建存储库。像Git这样的DVCS系统的卖点之一是他们在本地保存**所有**历史记录。 – 2010-10-21 10:41:29

1

This happened to me as well,我只好签一个新的副本,为SVN有了一个真正的hickup当我的本地版本比服务器的版本。 当你签出一份新的副本时,将你本地的文件复制到你的新副本中(确保你没有复制.svn文件夹)并提交。你将失去2848和2897