2010-07-08 63 views
7

SVN仓库被安装在服务器上,该服务器得到下来, 我有三个工作拷贝,他们都做了一些改变,而不是它们提交到基地 怎么办在这种情况下,请帮助我我失去了我的SVN仓库

+0

得到一个新的服务器并重新设置svn服务器。 – RageZ 2010-07-08 08:19:28

+0

这是否意味着您已经丢失了存储库? – Groo 2010-07-08 08:21:16

+3

@格罗:我真的很希望他们做了备份库。如果没有,这对人生来说是一个很好的教训;-) – Joey 2010-07-08 08:23:56

回答

9

这是否意味着您已经丢失了存储库?

在这种情况下(如果你没有备份的话)我想以最简单的做法是:

  1. 创建一个新的存储库的地方。
  2. 选择您的一个工作副本(从最旧的副本开始,即具有较少更改的副本)。
  3. 将新存储库检出到该机器上的空文件夹中。
  4. 出口你的工作拷贝(不复制)到您在步骤3中得到了空文件夹既然你可能将旧的工作副本后,删除你,这将是明智的出口版本的文件,也(如果您使用的是Tortoise SVN,则在“导出”对话框的顶部会有一个复选框)。
  5. 提交您的更改。

重复步骤2.至5.所有工作副本,你有。在第5步中,您将需要手动合并。如果需要,请注意添加任何未版本控制的文件。

你将失去​​所有以前的修订历史记录,但没有工作的数据应该丢失这样,只要你把所有的工作拷贝。

+0

如果您没有将回购备份在某处,那么这是一个不错的干净修复程序。 – Steven 2010-07-09 12:13:14

3

使用svn diff > a.patch在每个工作副本中创建修补程序,然后将其应用于来自其他两个工作副本的修补程序:patch -p0 < a.patch

下一次,使用一些DVCS,如Git或水银:)东西

1

你有存储库的备份?如果是,请在某处加载svnadmin,然后将更改提交到此新位置。使用svn switch将您的工作副本指向新服务器。

如果否,那么你已经失去了你的项目的历史,并且没有办法找回它。

您所能做的只是在某处创建一个新的存储库,并将三个单独的副本一个接一个地提交给它。您可能需要删除工作副本中的所有.svn目录才能执行此操作。

使用DVCSMercurialGit避免类似的情况(和其他许多问题)。

+2

我不认为主张DVCS而不是备份策略是特别合理的建议。 – 2010-07-08 08:41:08