当我想根据SVN修订版ID获取提交的本地哈希时,我通常会运行front-end
。但是,一个很大的不便是这个命令只会查找当前分支中的提交,或者在修订后在命令中明确指定的分支中查找。
有时,我只知道修订版ID,我想在不知道分支名称的情况下找到本地哈希。有没有办法用git svn find-rev
来做?知道SVN修订是独一无二的,这是有道理的。
修改
事实证明,没有好办法。
我接受了答案,它提供了一个解决方案,但是搜索具有大量分支的存储库需要很长时间,比如我的。我最终编写了自己的shell函数,并将常规git svn find-rev
与svn
结合使用,效果更快:
git svn
如果您使用它,如果您不使用GNU / Linux,则可能需要替换gitrev()
{
if [ -z "$1" ]; then
echo "${FUNCNAME[0]} <revision> [git_args]"
return 1
fi
local rev b
rev="$1"
shift
b="$(svn log -v -c "$rev" "$SVN_BRANCHES_URL" | grep -m1 -Po '/branches/\K[^/]+')" &&
git svn find-rev "r${rev#r}" "origin/$b" "$@"
}
部分。可以使用或不使用“r”前缀来指定版本。
答案 0 :(得分:2)
要在所有本地分支机构中搜索,您可以。 G。做
git for-each-ref --format='%(refname)' refs/heads/ | xargs -l git svn find-rev r123456
为了让它更可靠,但仍然很快,你可以通过一个更复杂的线来查看所有参考,直到找到匹配然后中止,e。 G。像
while read ref; do result="$(git svn find-rev r123456 "$ref")"; [ -n "$result" ] && echo $result && break; done < <(git for-each-ref --format='%(refname)')
答案 1 :(得分:0)
arraylist.add(0, object)
确实显示当前分支的提交sha-1值。但是你可以使用shell脚本从整个仓库中搜索提交。
例如,如果您想从修订版git svn find-rev
获取相应的提交,那么您可以将变量r9
值指定为rev
,如下所示:
r9