sourcetip

Git-svn은 하위 버전 저장소에서 마지막 n개의 리비전을 복제하는 방법은 무엇입니까?

fileupload 2023. 5. 8. 22:24
반응형

Git-svn은 하위 버전 저장소에서 마지막 n개의 리비전을 복제하는 방법은 무엇입니까?

문제

하위 버전 저장소에서 git-svn을 사용하여 얕은 복사본을 만드는 방법, 예를 들어 마지막 세 개의 수정본만 가져오는 방법은 무엇입니까?

git clone옵션을 사용하는 경우 Git 저장소에서 마지막 n개의 리비전을 가져올 수 있습니다.--depth 저장소의 수 .", 저의얕은복사얻는것입니다즉을본장소▁i,다입니즉것▁of▁a▁get얻▁copy.예:

git clone --depth 3 git://some/repo myshallowcopyrepo

git-svn에도 비슷한 옵션이 있습니까?

지금까지의 나의 발견들

지금까지 나는 단지 그것을 찾았습니다.-rN: " 션위치옵"N끌어 당기기 위한 수정사항입니다.예:

git svn clone -rN svn://some/repo

▁toibility니▁poss를 사용할 이 있습니다.-r$REVNUMBER:HEAD오류 메시지가 반환된 마지막 3개의 수정사항을 얻기 위해 다음을 시도했습니다.

$ git svn clone --prefix=svn/ -s -rHEAD~3:HEAD http://some/svn/repo .
revision argument: HEAD~3:HEAD not understood by git-svn

그래서 교체했습니다.HEAD~3세 번째이지만 마지막 개정판 534의 실제 번호와 함께.그것은 효과가 있었지만, 그것은 제가 먼저 세 번째이지만 마지막 커밋의 수정 번호를 알아내야 합니다.

$ git svn clone --prefix=svn/ -s -r534:HEAD http://some/svn/repo .

문서화

깃클론의

가슴이 철렁한

Git-SVN에서 클론을 하여 Git-SVN에서-r$REV:HEAD).

예:git svn clone -s -r1450:HEAD some/svn/repo

Git의 데이터 구조는 DAG(방향 비순환 그래프)의 포인터를 기반으로 하며, 이는 뒤로 걷는 것을 단순하게 만듭니다.n에서는 .그러나 SVN(및 따라서 Git-SVN)에서는 수정 번호를 직접 찾아야 합니다.

저는 거대한 버전 트리에서 제한된 수의 수정사항을 얻기 위해 다음을 자주 사용합니다(곧 svn 수정사항 35000에 도달합니다).

# checkout a specific revision
git svn clone -r N svn://some/repo/branch/some-branch
# enter it and get all commits since revision 'N'
cd some-branch
git svn rebase

그리고 지점이 어디서 시작되었는지 알아내는 좋은 방법은svn log분기에서 첫 번째 항목(실행할 때 마지막 항목)을 찾습니다.

svn log --stop-on-copy svn://some/repo/branch/some-branch

지금까지 저는 모든 지점을 추적하는 번거로움이 가치가 있다고 생각하지 못했습니다.복제하는 데 너무 많은 시간이 걸리고 svn과 git이 원하는 만큼 함께 작동하지 않습니다.저는 패치 파일을 생성하여 다른 svn 브랜치의 git clone에 적용하는 편입니다.

7년 후, 사막에서, 텀블위드 한 마리가...

수락된 답변에 만족하지 못해서 Github에서 사용할 수 있는 스크립트를 몇 개 만들었습니다.이것들은 사용하고자 하는 모든 사람들에게 도움이 될 것입니다.git svn clone그러나 전체 저장소를 복제하고 싶지 않으며 기록 중간에 복제할 특정 리비전을 검색하지 않습니다(리포지토리를 복제하는 경우도 있음).여기서는 마지막 N개의 리비전만 복제할 수 있습니다.

사용하다git svn clone최근 50개의 수정본을 복제합니다.

# -u    The SVN URL to clone
# -l    The limit of revisions
# -o    The output directory

./git-svn-cloneback.sh -u https://server/project/trunk -l 50 -o myproj --authors-file=svn-authors.txt

SVN repo에서 이전 N개 리비전 찾기

# -u    The SVN URL to clone
# -l    The limit of revisions

./svn-lookback.sh -u https://server/project/trunk -l 5     

여기에 이미지 설명 입력

SVN 저장소 옵션의 거북이 깃 도구로 시도해 보았는데, 그것은 나에게 효과가 있습니다.

"revision 인수::"라는 오류가 여러 번 발생했습니다.HEAD가 git-svn에 의해 이해되지 않음"

수정 한계의 수를 늘림으로써 작동합니다.

예를 들어 50 대신 100

./git-svn-cloneback.sh -u https://server/project/sys -l 100 -o myproj --https-file=httpsn-https.txt

언급URL : https://stackoverflow.com/questions/747075/how-to-git-svn-clone-the-last-n-revisions-from-a-subversion-repository

반응형