svn 对 Git 标签的修订?

Posted

技术标签:

【中文标题】svn 对 Git 标签的修订?【英文标题】:svn revision to Git tag? 【发布时间】:2014-05-20 13:04:57 【问题描述】:

我正在将 svn 存储库导入 Git(该工具将是 Git Extensions)。在导入过程中,我会看到如下行:

r155 = c154830e428e064e14c373d344f7b233c70c56a9(参考/遥控器/中继)

我猜这意味着在这种情况下 svn 修订版 155 获取哈希 c15483... 等等,我说的对吗?将来当我们使用 Git 并且 svn 被“遗忘”时,我们可以通过 svn 修订号来跟踪在 Git 之前发布的版本会很棒。所以问题是,有没有办法在这个导入过程中将 svn 修订号导入到 Git 提交标签(所有作为标签的修订都会很棒)?新的提交将以不同的方式处理,因此这只涉及 Git 之前的生活。我找到了一个与我的案例相关的主题,但我不太确定它是否适合我(实际上是其中的脚本):

git-svn: automatically importing/creating svn revisions as git tags

例如,从上面提到的行中,我想要一个标签“r155”。因为环境很新,所以一个例子(对于傻瓜)会很棒......

提前致谢!

【问题讨论】:

【参考方案1】:

r155 = c154830e428e064e14c373d344f7b233c70c56a9(参考/遥控器/中继)

我猜这意味着在这种情况下 svn 版本 155 得到 hash c15483...等等,我说的对吗?

是的,没错。

将来当我们使用 Git 并且 svn 被“遗忘”时,它 如果我们可以通过 svn 跟踪 Git 之前发布的版本,那就太好了 修订号。所以问题是,有没有什么方法可以导入 在此导入过程中将 svn 修订号添加到 Git 提交标记(所有 作为标签的修订会很棒)?

为每个 SVN 版本添加一个标签似乎不是一个好主意。标签用于“特殊”修订(通常是那些以某种方式发布或投入生产的修订)。无论如何,git svn 将默认将 SVN 修订嵌入到它创建的每个提交的提交消息中。

例子:

Author: abc <abc@234986eef58-4435-45da-9345-24623feaa07>
Date:   Fri Apr 11 09:35:35 2014 +0000

    Fix bug #123.

    git-svn-id: http://svn/repo/url/trunk@4711 234986eef58-4435-45da-9345-24623feaa07

git-svn-id 包含“@”之后的 SVN 修订版(本例中为 4711)。

请注意,即使没有每个版本的 git 标签,您也可以直接引用从 SVN 修订版创建的 git 提交。使用语法:/text,您可以直接引用包含“文本”的提交。因此,参考 SVN 版本 123 的提交:

git 显示“:/@123”

注意引号和尾随空格;这些对于不匹配以“123”开头的修订(如“1234”)是必要的。

总结:

你不需要做任何特别的事情。只需使用git svn 进行克隆,如果您需要通过 SVN 版本引用提交,请使用上面的特殊语法。

【讨论】:

【参考方案2】:

我发现了以下内容:

When converting from SVN to Git, how do I put the revision number in the commit message?(尤其是带有示例脚本的那个)

转换的完成与以下描述的非常相似:

How to migrate SVN repository with history to a new Git repository?(以最流行的方式描述)

现在是愚蠢的(?)问题:

我如何、在何处以及在该过程的哪个点执行脚本?

【讨论】:

以上是关于svn 对 Git 标签的修订?的主要内容,如果未能解决你的问题,请参考以下文章

使用没有主干标签和分支的 SVN 存储库从 SVN 迁移到 Git

Git版本标签

如何在 C# windows 服务中使用 Git 标签号代替 SVN 版本号

如何让TortoiseSVN永远冻结标签的svn:externals

如何 git-svn 从 Subversion 存储库克隆最后 n 个修订?

Git与SVN对比