所有svn修订号的地图<=&燃气轮机;gitsha-1提交哈希

所有svn修订号的地图<=&燃气轮机;gitsha-1提交哈希,git,svn,logging,git-svn,Git,Svn,Logging,Git Svn,当git svn需要重建其内部映射时,它将想要的信息输出到STDERR: Rebuilding .git/svn/refs/remotes/origin/trunk/.rev_map.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX r38601 = 28d3a624c5c96db9a1f45d8f261a9b0de1f6f288 r38652 = 74c55b8dff798e5ae1bc2ad00d8ec6eee4f2646b r38744 = eb457e1949ec

git svn
需要重建其内部映射时,它将想要的信息输出到
STDERR

Rebuilding .git/svn/refs/remotes/origin/trunk/.rev_map.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
r38601 = 28d3a624c5c96db9a1f45d8f261a9b0de1f6f288
r38652 = 74c55b8dff798e5ae1bc2ad00d8ec6eee4f2646b
r38744 = eb457e1949ecf854816ba9cf64b4bace710a7302
r38745 = 5bca99a37fbc6db72d2d50a75301185f4297926c
(...)
不幸的是,文件
.git/svn/refs/remotes/origin/trunk/.rev_map.XXXXXXXX-XXXX-XXXX-XXXXXXXX-xxxxxxxxxxxxxxxx
是二进制文件,因此无法轻松解析。有没有办法让git svn通过特定命令输出上述信息?顺便说一下,我现在使用的是Git2.7.0

编辑:我知道
git svn find rev
,但这只允许我找到单个修订版的SHA-1提交哈希,我必须提供特定的svn修订版。不过,我想得到的是所有修订版的映射。最好不要强行通过或使用外部数据源(即SVN repo)提供SVN修订作为输入。最好是不提供任何信息,因为这些信息在git svn构建其修订图后存储在存储库中——或者不是?

获取所有哈希(或修订)的列表,并在循环中使用
git svn find rev XXX

当给定表单rN的SVN修订号时,返回 相应的Git提交哈希(可以选择后跟 树(用于指定应搜索的分支)。当给予 返回相应的SVN修订号


如果您检查git svn的内部,可能会有更好的方法,但是如果没有更方便的方法,您可以在日志消息中以

git-svn-id: http://svn.host/path/trunk@<SVN_REVISION> <SVN_REPO_GUID>
git svn id:http://svn.host/path/trunk@ 

因此,您可能需要浏览感兴趣的修订,并从日志的最后一行解析映射。

获取所有SVN修订:

git config --add svn-remote.<Remote>.url <SVN URL>
git config --add svn-remote.<Remote>.fetch :refs/remotes/<Remote Name>
git svn fetch <Remote>

谢谢你的回答,像这样浏览日志也是解决这个问题的基本方法(前提是
--没有元数据
没有在
git svn clone
上使用),但是正如我在编辑中所说的,我仍然认为这可能/应该以一种更简单的方式实现,所以我现在把这个问题留待讨论。非常好。只需注意,
gitsvn
设置并不是真正需要回答这个问题的。但这也没什么害处:)
git checkout remotes/<Remote Name>
git svn log --show-commit --oneline
r50 | 77c9acf | "SVN Commit message"
...
r1 | 84e6c49 | "SVN Commit message"