我没有使用 hotcopy 来备份我的 Subversion 存储库。我们将 Visual SVN Server(最新)与乌龟一起使用。几天前我复制了 C:\Repositories 并备份了它,现在我想恢复它。
我现在可以使用复制了备份的存储库文件夹的存储库。
然后我想现在我已经手动浏览了团队中每个人的本地项目,看看谁有最新的修订?如果是这样,那将需要我几个小时。
有人知道这是正确的方法还是唯一的方法?真的是这本手册吗?我想这可能是因为每个人在当地都有不同的变化。
我没有使用 hotcopy 来备份我的 Subversion 存储库。我们将 Visual SVN Server(最新)与乌龟一起使用。几天前我复制了 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
为每个开发人员的工作副本执行此操作。您可以使用“patch”命令获取这些文件并将更改应用到新的结帐,如下所示:
cd working_copy
patch -p1 -i ...../developer1changes.patch
您现在将拥有一个包含他们更改的工作副本。(尽管没有他们的 svn 添加、svn rms 和属性更改。)从那里,确定需要提交的内容。
您可以使用“filterdiff”命令获取补丁文件并过滤部分更改,将其通过管道传递给补丁,它将仅应用这些更改。
编辑: 另一种选择:为每个开发人员创建一个分支并签出该分支,然后将他们的本地副本复制到该新工作副本中的文件并提交。
这样就可以在不会丢失的存储库中完成所有工作。然后,在尝试将分支合并到主干时,您将不得不处理冲突。此时,您应该能够使用 gui 工具来选择保留或放弃哪些更改。
但简短的回答是:你有很多工作要做,因为你没有最近的回购备份......所以一旦你们都能够再次工作,设置一个更频繁的备份计划.