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
如何在 C# windows 服务中使用 Git 标签号代替 SVN 版本号
如何让TortoiseSVN永远冻结标签的svn:externals