所以…我们失去了我们的SVN仓库。 在不幸的情况下,我们也没有可行的备份。
该怎么办? 只要从最近更新的人那里做一个“svn导出”并重新开始? 有什么方法可以恢复任何历史? 或将我们的本地结账连接到新的服务器?
如果你所有的都是结账,你就可以看到代码的快照,但没有logging。
你可以从中创build一个新的回购。 至于现有的checkout连接到新的repo后,你已经设置了它可能是比它的价值更麻烦。 从最古老的结帐中创build一个新的回购更容易,然后从更新的结账提交更新作为更新。
至于恢复历史,我没有看到如何在没有转储回购(通过svnadmin转储)在某个时间点。 即使是旧的转储也会给你从创build回购到创build转储的历史。
也许有人在你的回购在某个时候使用了git-svn? 这可能保留了一些历史,但将其重新引入新的Subversion回购可能并不容易。
数据恢复是很昂贵的,但是如果您的存储设备上的存储设备没有被物理破坏或被破坏性地覆盖(而不是SSD),这也可能是一个select。
如果你真的失去了回购,没有备份,那么是的 – 它没有了。 没有什么魔法可以恢复真正丢失的数据。
所以,如果你有一个人的工作副本,你可以创build一个新的回购,并将文件添加到它。 你显然失去了所有的历史,但是历史已经失去了。
您可以将硬盘驱动器发送给恢复公司以尝试恢复任何数据。 一旦你有了repo(或者至less是db / revs和db / revprops目录),你可以从它们(通过将它们复制到一个新的repo的目录)重新创buildrepo。 如果事实certificate你没有完整的数据库,那么事情会变得更加棘手,但是仍然有可能恢复其余的数据 – 你可能需要把它全部发送到协作networking,并得到一些支持将损坏的数据文件恢复成新的可用的回购。
现在,你从最近更新的人那里说“svn export”,这表明这个人有一个可以导出的备份副本。 这是这种情况,还是你混淆工作副本?
正如马克上面所说的,如果你没有从服务器转储回购,你不能构build历史。 SVN结帐只包含检出的地方。 对不起,你是SOL。 我想这就是为什么人们喜欢分布式源代码pipe理。 在我们公司,我设置了每天两次发送svn diff到amazon s3。
除了其他答案中的有用信息之外,您可能会认为这是查看分布式源代码控制(DVCS,例如git和mercurial,我认为也有其他)的机会。 使用DVCS,每个用户都有一个存储库的副本,提供更多的冗余,减less丢失完整存储库的风险。
这里有一个非常不错的在线书籍: http : //progit.org/