将git-svn的标签转化为git的标签

我创建了一个bash脚本,以便将git-svn与svn存储库配合使用。这样一来,我可以读取svn存储库上的所有标签,但是在git中,这些标签会作为分支被存储。而我希望将它们作为git的标签使用。

#!/bin/bash
for branch in `git for-each-ref --format='%(refname)' | grep tags/`
do
  git show --pretty=format:%s%n%n%b "$branch" | git tag -F - "`basename $branch`" "$branch^"
done

我不会删除提交,所以不会有破坏性的事情发生。

只需简单地将git branch命令插入xargs即可完成,但我将解释为什么对其进行了如上的额外处理。

在Subversion中创建标签时,我们会按照“在trunk上进行工作→将其复制到tags目录”这样的方式。由于git-svn将每个SVN提交忠实地转换为一个个git提交,所以最后复制的提交也会成为单独的提交。这样一来,没有任何更改的提交会出现在每个分支的最前端。而冒开头的脚本就是要去除这些空提交。

我决定将复制时的消息包含在标签中。

(参考:for-each-ref)

参考:对于每个参考

广告
将在 10 秒后关闭
bannerAds