3

我们已经完全失去了我们的存储库,并且我们有 8 名开发人员进行了未提交的更改。假设无法从备份中恢复。

如果一个人可以访问所有工作副本(文件副本或远程共享),是否可以将我们工作副本中的更改合并到一个工作副本?然后可以将最终的工作副本导入到新的存储库中。

简而言之,你可以在没有服务器的情况下合并两个不同的工作副本吗?

编辑:请不要因为没有备份而对我撒尿;那部分是我无法控制的。假设他们每晚都会备份。

跟进:这就是我们所做的:

  1. 从所有开发人员的最新工作副本开始。
  2. 将其导入新的存储库。
  3. 从最新的工作副本修订到最旧的工作,仅复制具有更改然后提交的文件。
  4. 洗涤-漂洗-重复6次。(2 个开发人员没有未提交的更改)。
  5. 导出所有旧的工作副本,将它们拉上拉链并储存起来,以便在需要时安全保存。
  6. 将我们在发布管理数据库中的修订更新为现在非常年轻的 repo。
4

7 回答 7

4

由于您丢失了存储库(对此感到抱歉),因此您也丢失了整个历史记录。

你现在所能做的就是从头开始。

  1. 创建一个新的存储库
  2. 创建文件夹结构
  3. 将第一个用户的工作副本导出到新文件夹
  4. 将导出的文件夹导入存储库
  5. 所有其他用户现在签出一个新的工作副本
  6. 所有其他用户现在“导出”他们的原始工作副本而不是新的工作副本

“导出”是指创建工作副本的副本,但其中没有隐藏的 .svn 文件夹。

于 2009-01-20T19:52:19.073 回答
1

嗨棘手的问题。但这就是我会做的。

  1. 创建一个新的存储库。
  2. 创建8个分支和1个主干
  3. 导入开发人员在分支上的工作。
    • 分支 1 上的开发人员 1
    • 分支 2 上的开发人员 2
    • 等等等等
  4. 然后开始从分支 1 合并到主干。当您在后备箱中的情况稳定时,您将继续使用分支 2 等

当您完成这项可怕的工作时,请教开发人员尽早并经常检查...以及如何使用分支...

/约翰

于 2009-01-20T19:49:08.440 回答
0

您的问题不是您丢失了服务器,而是存储库本身。除了重新创建一个新的 repo 并仔细分类各种工作副本以供导入之外,我看不出你能做什么。祝你好运。

PS:没有备份对你不利...

PPS:这是DVCS通过在每个开发人员的沙箱中为大多数人提供完整的 repo 副本而自然解决的问题。

于 2009-01-20T19:17:31.857 回答
0

最简单的方法是创建您自己的服务器,创建一个测试存储库,在其中添加一个(最稳定的)构建,然后一次合并一个工作副本。但是,是的,您丢失了所有历史记录,因为您丢失了旧的仓库。

然后,您可以从该测试创建主存储库。

于 2009-01-20T19:20:22.320 回答
0

我会尝试只选择一个工作副本来为新的 repo 导入,然后使用 svn switch 将剩余的 7 个工作副本重新指向新的 repo,可能带有 relocate,以使他们相信它是同一个 repo 但已重新定位。只需尝试从丢失的存储库中为初始导入选择一个没有(或尽可能少)结构更改的工作副本:例如,仅文件编辑。

当然,如果上述方法不起作用,请对您的工作副本进行大量备份:)

于 2009-01-20T19:20:29.323 回答
0

Subversion 将文件的原始版本保存在本地工作副本中。创建一个新的存储库,制作最旧的工作副本的副本,还原工作副本 COPY 上的更改,然后将该工作副本导入新的存储库。

svn 导入:http ://svnbook.red-bean.com/en/1.0/re12.html

导入后,您可以使用 svn switch --relocate 将其他工作副本重新指向您的新存储库,并提交更改。

svn 开关——重定位:http: //svnbook.red-bean.com/en/1.1/ch04s05.html

于 2009-01-20T19:43:18.683 回答
0

从最原始的工作副本中在与旧版本相同的位置创建一个新存储库(这样您可以在新存储库中捕获更多历史记录)。

如果它不起作用以及在哪里不起作用,请从新存储库的签出中放入 .svn-directories。(例如结帐,并删除除 .svn 目录之外的所有内容)

于 2010-02-15T22:06:33.913 回答