Svn 还原Subversion存储库并使其与每个人的本地更改一起更新

Svn 还原Subversion存储库并使其与每个人的本地更改一起更新,svn,tortoisesvn,visualsvn-server,Svn,Tortoisesvn,Visualsvn Server,我没有使用热拷贝备份我的Subversion存储库。我们使用最新的VisualSVNServer与tortoise。几天前我复制了C:\Repositories并备份了它,现在我想恢复它 我现在可以在复制备份的存储库文件夹的情况下使用存储库 然后我想现在我必须手动检查团队中每个人的本地项目,看看谁有最新的修订版?如果是这样的话,那要花我几个小时 有人知道这是正确的方法还是唯一的方法吗?真的是这本手册吗?我想这可能是因为每个人在本地都有不同的更改。由于备份而进行的任何更改都不在存储库中,每个人都必

我没有使用热拷贝备份我的Subversion存储库。我们使用最新的VisualSVNServer与tortoise。几天前我复制了C:\Repositories并备份了它,现在我想恢复它

我现在可以在复制备份的存储库文件夹的情况下使用存储库

然后我想现在我必须手动检查团队中每个人的本地项目,看看谁有最新的修订版?如果是这样的话,那要花我几个小时


有人知道这是正确的方法还是唯一的方法吗?真的是这本手册吗?我想这可能是因为每个人在本地都有不同的更改。

由于备份而进行的任何更改都不在存储库中,每个人都必须从恢复的存储库中重新签出。修订号已更改,如果不更改,您将陷入混乱

至于从开发人员的本地副本中恢复任何更改,是的,这将是相当手动的。不过,diff和patch是您的朋友。如果你不熟悉cygwin,你会想要得到它并得到diff、patch、diffutils和patchutils包,这样你就有了diff命令和patch命令。可以使用diff命令创建一个文件,其中包含源树的一个副本和另一个副本之间的增量。您将希望像这样使用它:

diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch
cd working_copy
patch -p1 -i ...../developer1changes.patch
对每个开发人员的工作副本执行此操作。 您可以使用以下patch命令获取这些文件并将更改应用于新签出:

diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch
cd working_copy
patch -p1 -i ...../developer1changes.patch
现在,您将拥有一个包含其更改的工作副本。虽然没有svn添加、svn rms和属性更改。在此基础上,确定需要承诺的内容

您可以使用filterdiff命令获取修补程序文件并过滤部分更改,将其导入修补程序,它将仅应用这些更改

编辑: 另一种选择: 对于每个开发人员,创建一个分支并签出该分支,然后将其本地副本复制到新工作副本中的文件上并提交

这样,存储库中的所有工作都不会丢失。然后,在尝试将分支合并到主干中时,必须处理冲突。此时,您应该能够使用gui工具来选择保留或丢弃哪些更改


但简单的回答是:你有很多工作要做,因为你没有最新的回购备份。。。所以,一旦你们都能再次工作,就可以设置一个更频繁的备份计划。

这种方法怎么样,每位开发人员:

乌龟是否将其现在无效的工作副本导出到临时位置 从还原的存储库中获取新签出 将导出的工作副本(即编号svn dirs)复制到新工作副本的顶部 按常规更新并提交
请注意,您可能会遇到比平常更多的合并冲突,但它们可以用平常的方式解决。

我看不出这是怎么回事。如果我拿了老板的出口。复制并替换,它肯定会替换的。我肯定能查到。但我也要做同样的事情。我可以得到最新的,我可以出口我的,但我不能只是复制和粘贴我的最新更新,因为SVN将如何启动合并工具,当我这样做?我会简单地复制/替换,除非即使我复制/替换,当我签回它时,我得到了上次签入时你对我老板文件的合并冲突?我的意思是,你签入时有合并冲突吗?我不这么认为,只有当你退房的时候。所以,如果我把我所有的东西都贴上并签入,我就不会有冲突了?正当或者我会吗?见第4点。更新然后提交。可能发生合并冲突的更新是为了防止其他开发人员也接触到该代码并在您之前提交。我可以建议你在一个开发者的电脑上试用一下,以了解我的意思。如果你能试试,我没有什么可失去的。这将是伟大的,如果这与每个人的想法,必须做一个差异清单。这将是一个很好的替代方案。在第3点上,必须进行一些手动复制,这意味着我不能只在签出代码上覆盖复制整个导出的代码…这将删除我所有的.svn文件夹。我必须检查每个文件夹并手动复制每组文件…我无法从导出的文件夹中复制整个文件夹来替换已恢复存储库的签出版本中的文件夹。如果我使用的是Ortoise,我应该在哪里使用命令行工具?哇,这是一大堆需要解决的问题。这也需要我花很长时间。那么,也许你应该权衡自上次备份以来所有开发人员所做更改的价值与学习这些工具的时间价值。但是这些工具非常强大,并且在开发过程中发生的许多其他情况下非常有用,所以我鼓励您无论如何都要学习它们 bove,如果成功的话,不需要做任何事情。我可以按照他对每个开发者和walla说的去做!