当我想要获取基于SVN版本号的提交的本地哈希时,通常会运行
如果你使用它,如果你不在GNU/Linux上,你可能需要替换
git svn find-rev
。然而,这个命令的一个大不便之处是,它只会在当前分支或在命令中明确指定的分支中查找提交。
有时,我只知道版本号,想要找到本地哈希,而不知道分支名称。是否有一种方法可以使用git svn find-rev
实现呢?这很有意义,因为SVN版本号是唯一的。
编辑:
结果发现,没有很好的解决方法。我接受了提供解决方案的答案,但在搜索具有大量分支的存储库时,它需要太长时间。最终,我编写了自己的shell函数,并结合使用常规的svn
和git svn
,速度快多了。
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" "$@"
}
如果你使用它,如果你不在GNU/Linux上,你可能需要替换
grep -P
部分。修订版可以带或不带“r”前缀指定。