SVN Mirror 标记的分支历史保存

Posted

技术标签:

【中文标题】SVN Mirror 标记的分支历史保存【英文标题】:SVN Mirror tagged branch history preservation 【发布时间】:2021-12-07 04:58:53 【问题描述】:

我的任务是仅从我们的 SVN 存储库中镜像具有完整历史记录的特定分支,必须镜像的分支已被标记/剪切多次。我一直在 Bitbucket 上使用 Subgit SVN Mirror 插件来执行此操作。但是,镜像仅显示分支被标记时的历史记录。有没有办法只镜像一个分支,同时在 Git 中保持完整的 SVN 历史记录? 我们在 SVN 中的结构类似于以下,其中“trunk”是源分支,“feature1”是从“trunk”标记的,“feature2”是从“feature1”标记的,“taggedTrunk”是需要镜像的分支:

/Project A
    /branches
        /taggedTrunk
        /feature1
        /feature2
    /trunk

我尝试了以下映射:

1.

trunk = Project A/branches/taggedTrunk:refs/heads/development
branches = Project A/trunk:refs/heads/originalTrunk
includePath = /src
trunk = Project A/branches/taggedTrunk/:refs/heads/development
branches = Project A/branches/*:refs/heads/*
includePath = /src

澄清一下,我们并不是要镜像整个仓库 - 在我们的 Git 仓库中,我们只希望 1 个分支拥有完整的历史记录

【问题讨论】:

【参考方案1】:

重要的是“taggedTrunk”分支是从哪里标记的以及它是如何创建的,通过使用 'svn copy' 复制源目录以便复制信息出现在 SVN 历史记录中,或者通过使用常规复制操作系统“复制”然后添加,以便此操作在历史记录中反映为简单的添加,而不是复制。 在前一种情况下,可以通过将源分支添加到映射中来获得历史记录。也就是说,如果“taggedTrunk”是通过复制“feature1”创建的,则将其添加到映射中

trunk = Project A/branches/taggedTrunk:refs/heads/development
branches = Project A/branches/feature1:refs/heads/feature1
includePath = /src

将带来历史。 在后一种情况下,恐怕无法获取分支的历史记录,因为 SVN Mirror 插件无法识别和追踪历史记录。

【讨论】:

如果我错了,请纠正我,但是这个映射不会创建 2 个分支吗? 是的,如果“feature1”存在,它会这样做

以上是关于SVN Mirror 标记的分支历史保存的主要内容,如果未能解决你的问题,请参考以下文章

SVN使用教程之-分支/标记 合并 subeclipse (转)

SVN仓库目录结构

svn 介绍及linux下常用操作命令

使用 cvs2svn 时,如何重命名符号以使分支和标记解析为相同的名称?

SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤