SVN 개정 ID를 기반으로 한 커밋의 로컬 해시를 얻으려는 경우, 보통 git svn find-rev
을 실행합니다. 그러나이 명령은 현재 분기 나 개정 후에 명령에 명시 적으로 지정된 분기에서만 커밋을 찾습니다.`git svn find-rev`가 전체 저장소를 검색합니다.
때로는 개정 ID 만 알고 있으며 분기 이름을 모른 채 로컬 해시를 찾고 싶습니다. git svn find-rev
으로 해결할 수 있습니까? SVN 수정본이 고유하다는 것을 알고 있으면 의미가 있습니다.
편집 :
이 밝혀 그것을 할 수있는 좋은 방법이 없습니다. 해결책을 제공하는 답변을 수락했으나 광산과 같이 많은 수의 지사가있는 저장소를 검색하는 데 너무 오래 걸립니다. 난 내 자신의 쉘 함수를 작성하고 훨씬 빠르게 작동하는 git svn
와 함께 정기적 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" "[email protected]"
}
당신이 그것을 사용하는 경우 GNU에하지 않으면, 당신은 grep -P
부품을 교체해야 할 수도 있습니다/리눅스. 개정은 "r"접 두부와 함께 또는없이 지정할 수 있습니다.
내 경우에는 원격 지점도 검색해야하지만 시간이 많이 걸립니다. – Thunderbeef
예, 꽤 많은 시간을 필요로 할 수 있습니다. 특히 많은 수의 참조가 있고 e. 지. 모든 심판을주고 개정판이 여러 지점 또는 일부 지점과 일부 태그에있는 경우 여러 번 결과를 얻을 수 있습니다. 그러나 그것이 내가 아는 유일한 짧은 길입니다. 그렇지 않으면 기본적으로 동일한 작업을 수행하고 결과를 찾은 즉시 중지해야합니다. – Vampire
좋아, 나는 전체 저장소에서 안정적으로 작동하고 뭔가 발견 되 자마자 멈출 수있는 또 다른 하나의 라이너를 게시했습니다. e에 정렬을 추가하여 조금 수정할 수 있습니다. 지. 먼저 로컬 브랜치를 살펴본 다음 원격 브랜치를 살펴본 다음 태그 나 그와 비슷한 것을 참조하십시오. – Vampire