【问题标题】:Rebuilding local SVN repository from working copy从工作副本重建本地 SVN 存储库
【发布时间】:2019-08-05 03:23:49
【问题描述】:

我一直在使用 Dropbox 中的本地 SVN 存储库开展一个项目,但其修订历史似乎已损坏无法修复,并且现在所有签入都失败了。所以我正在考虑从现有的工作副本创建一个新的存储库。我可以丢失历史记录,只要我可以在我的开发环境中保持实际路径相同(在我的 Mac 和 Windows 开发机器上)。

当然,如果我只是尝试使用svn import 导入本地文件... svn 不会将现有路径识别为工作副本,它会强制我将它们检出,从而更改位置一切。

我尝试在新的空存储库中创建一个空的 trunk/Client 文件夹并将其检出到我现有的 <main dev folder>/Client 目录中,以便我可以将所有项目重新添加到其中...但是 SVN 客户端拒绝添加 <main dev folder>/Client 的内容,因为它检测到它们已经在旧存储库的版本控制之下。

当然,即使我确实在我的 Mac 开发机器上检查了它们,我也需要拉一个类似的开关来让 Windows 开发机器从新存储库同步其工作副本。 (我在 Mac 上使用 svnX,在 Windows 上使用 TortoiseSVN——但我使用的是 Mac 客户端,因为该工作副本是最新的。)

有关如何将这些文件放入新存储库而无需重新排列所有内容的任何建议?

(注意:“放弃 svn 并转向 git”实际上是一个相当可接受的答案,但我仍然需要指导;我在这两个方面的经验同样有限!)

【问题讨论】:

    标签: svn


    【解决方案1】:
    1. 必须正确使用svn import,因为此命令“将未版本控制的文件或树提交到存储库中”并且您必须从您的 WC 中准备未版本控制的树导入前
    2. 每个工作副本都链接到单个存储库,并且此关系存储在 WC 的元数据中,您必须更改它以链接 旧 WC新存储库 使用svn relocate 命令
    3. 为了成功地将您的 WC 重新定位到新存储库,您必须为新存储库提供与 svnadmin setuuid 在旧存储库中相同的 UUID

    这样

    您漫长的迁移路径

    • 创建 WC 的未版本控制副本
    • 创建新的本地空存储库(我建议为svn:// access-type 准备和使用svnserve,而不是从第一步开始的file:///
    • 获取旧仓库的 UUID(WC 中的svn info | grep UUID)并将其应用于新仓库
    • 将树从未版本控制的副本导入新的存储库(导入到与旧存储库中相同的相对路径)
    • 将现有的 WC 迁移到新的存储库
    • 尝试svn up 验证结果

    但您可以完全忘记旧的回购并使用

    你的捷径

    • 创建 WC 的未版本控制副本
    • 创建新的本地空存储库(我建议为svn:// 访问类型准备和使用svnserve,而不是从第一步开始的file:///
    • 将树从未版本化的副本导入到新的存储库中
    • svn ls -R <REPO-ROOT-URL>导入的测试结果
    • 删除|存档旧 WC 并将新 WC 从新存储库检出到旧位置

    【讨论】:

    • 谢谢 - 我会在接下来的几天内尝试一下。第一个问题:忽略的文件呢?工作副本树中有一些构建文件夹被忽略或从未添加到旧存储库中。如果我导出工作副本的未版本化副本,这会跳过被忽略的文件吗?或者我需要在执行svn import 命令之前设置一个全局忽略列表,还是只导入指定的子文件夹?
    • @user1371844 - AFAICR,只导入子树,因为 svn import(2 年前)从根目录处理整个树
    • 好的,我已经完成了漫长的迁移路径;它成功地重新定位到新的存储库。但是当我尝试svn update 时,我得到:svn: E160006: No such revision 65。这是因为新导入的存储库仅处于修订版 2,而旧的存储库处于修订版 65。但即使我指定 svn up -r2,我仍然会收到 No such revision 65 消息。在这一点上,我应该只是破坏工作副本中的.svn 目录并再次签出吗?
    • @user1371844 - 只是想法:创建 repo 转储,手动编辑它的 rev-id 并导入转储(无法测试,现在没有 SVN)
    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-25
    • 2012-11-04
    • 2011-03-19
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多