首页 文章

恢复Subversion存储库并使每个人的本地更改恢复到最新状态

提问于
浏览
2

我没有使用hotcopy来备份我的Subversion存储库 . 我们使用Visual SVN Server(最新)与乌龟 . 我复制了C:\ Repositories并在几天前备份了,现在我想恢复它 .

我现在可以使用存储库并复制备份的Repository文件夹 .

然后我想现在我已经手动浏览了团队中每个人的本地项目,看看谁有修改?如果是这样,我将花费数小时 .

谁知道这是正确的方式还是唯一的方式?真的是这本手册吗?我想这将是因为每个人都在本地有不同的变化 .

2 回答

  • 2

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

    • TortoiseSVN - >将他们现在无效的工作副本导出到临时位置

    • 从已还原的存储库中获取新的签出

    • 将导出的工作副本(即没有.svn目录)复制到新工作副本的顶部

    • 按照惯例更新并提交

    请注意,您可能会遇到比平常更多的合并冲突,但可以通常的方式解决它们 .

  • 6

    自备份以来所做的任何更改都不存在于存储库中,并且每个人都必须从还原的存储库中执行新的签出 . (修改号已经改变了,如果不这样做,你就会变得很乱 . )

    至于从开发人员的本地副本中挽救任何变化,是的,这将是相当手动的 . 但是,“差异”和“补丁”是你的朋友 . 如果你不熟悉cygwin,你会想要得到它并获得diff,patch,diffutils和patchutils包,所以你有'diff'命令和'patch'命令 . 您可以使用“diff”命令创建一个文件,其中包含源树的一个副本与另一个副本之间的增量 . 你会想要像这样使用它:

    diff -urN --exclude=.svn fresh_check_from_new_repo old_working_copy > developer1changes.patch
    

    为每个开发人员的工作副本执行此操作 . 您可以使用“patch”命令获取这些文件并将更改应用于新的签出,如下所示:

    cd working_copy
    patch -p1 -i ...../developer1changes.patch
    

    您现在将拥有一份包含更改的工作副本 . (虽然没有他们的svn添加,svn rms和属性更改 . )从那里,确定需要提交的内容 .

    您可以使用“filterdiff”命令获取补丁文件并过滤部分更改,将其传输到补丁,并且它将仅应用这些更改 .

    edit: 另一个选项:为每个开发人员创建一个分支并签出该分支,然后将他们的本地副本复制到该新工作副本中的文件并提交 .

    这将使存储库中的所有工作都不会丢失 . 然后,在尝试将分支合并到主干时,您将不得不处理冲突 . 此时,您应该能够使用gui工具选择要保留或折腾的更改 .

    但简短的回答是:你有很多工作要做,因为你没有最近的回购备份...所以一旦你们都能够再次工作,设置一个更频繁的备份时间表 .

相关问题