作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 Subgit 访问 Subversion 存储库。它工作得很好,但有时,尤其是在与使用普通 Subversion 客户端访问存储库的用户交流时,我真的很想找到特定变更集对应的 SVN 修订版。
我可以使用 git
在本地仓库的某个地方找到 SVN 修订号吗?
最佳答案
是的,您可以轻松做到这一点。您应该只修改克隆的 Git 存储库中的 .git/config
文件以添加
[remote "origin"]
...
fetch = +refs/svn/map:refs/notes/commits
选项,然后运行 git fetch
,如 SubGit book 的“推荐的客户端 Git 配置”部分所述。 .之后,克隆存储库上的 git log
命令将显示修订号。
如果你想在服务器端做那件事(如果你在你的项目中没有将 Git notes 用于其他目的),你可以在服务器机器上运行
$ 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 分支”的分支名称),要获取 SHA-1 并通过修订版 REV 更改分支名称,您可以运行
$ git log --format="%H %N" --all | grep "r$REV "
同样,您可以在此处 grep SHA-1 或分支名称。
关于git - 如何在 subgit repo 中找到 SVN 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28021524/
我是一名优秀的程序员,十分优秀!