我没有使用hotcopy来备份我的Subversion存储库。我们使用Visual SVN Server(最新)与乌龟。我复制了C:\ Repositories并在几天前备份了,现在我想恢复它。
我现在可以使用存储库并复制备份的Repository文件夹。
然后我想现在我已经手动浏览了团队中每个人的本地项目,看看谁有修改版本?如果是这样,我将花费数小时。
任何人都知道这是正确的方式还是唯一的方法?真的是这本手册吗?我想这将是因为每个人都在本地有不同的变化。
答案 0 :(得分:6)
这种方法如何,每个开发人员:
请注意,您可能会遇到比平常更多的合并冲突,但可以通常的方式解决它们。
答案 1 :(得分:2)
自备份以来所做的任何更改都不存在于存储库中,并且每个人都必须从还原的存储库中执行新的签出。 (修订号已经改变了,如果不这样做,你就会搞得一团糟。)
至于从开发人员的本地副本中挽回任何更改,是的,这将是相当手动的。但是,“差异”和“补丁”是你的朋友。如果你不熟悉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工具选择要保留或抛出的更改。
但简短的回答是:你有很多工作要做,因为你没有最近的回购备份...所以一旦你们都能够再次工作,设置更多频繁的备份计划。