如何在subgit repo中找到SVN修订版?

时间:2015-01-19 09:35:10

标签: git subgit

我正在使用Subgit访问Subversion仓库。它工作得很好,但有时,特别是在与使用普通Subversion客户端访问repo的用户进行通信时,我真的很想找到特定变更集对应的SVN版本。

我可以使用git在我的本地仓库中的某处找到SVN修订号吗?

1 个答案:

答案 0 :(得分:8)

是的,你可以轻松地做到这一点。您应该只修改克隆的Git存储库中的.git/config文件以添加

[remote "origin"]
...
fetch = +refs/svn/map:refs/notes/commits

选项然后运行git fetch,如SubGit book的“推荐客户端Git配置”部分所述。在克隆的存储库上的git log命令将显示修订号后。

如果您想在服务器端执行此操作(如果您不在项目中将Git注释用于其他目的),则可以在服务器计算机上运行

$ git update-ref refs/notes/commits refs/svn/map

用于一次性创建Git备注,或者您可以在该存储库中运行

$ cd refs
$ mkdir notes
$ echo "refs: refs/svn/map" > notes/commits

使refs / notes / commits遵循由SubGit更新的refs / svn / map并存储最新版本< - > SHA-1映射。之后,服务器上的git log也将显示修订号。

如果要在脚本中将修订转换为SHA-1哈希(在以上述任何方式设置Git注释后),可以使用此命令

$ git log --format="%H %N" --all

与行解析函数结合使用。例如。如果你不关心极端情况(例如名称“r $ REV branch”的分支名称),要获得SHA-1并通过修订版REV更改分支名称,您可以运行

$ git log --format="%H %N" --all | grep "r$REV "

同样,你可以在这里grep SHA-1或分支名称。