Subversion 저장소에서 마지막 n 개정을 git-svn 복제하는 방법은 무엇입니까?
문제
Subversion 저장소에서 git-svn을 사용하여 얕은 사본을 작성하는 방법, 예를 들어 마지막 세 개의 개정 만 가져 오는 방법은 무엇입니까?
이 git clone
옵션을 사용하는 경우 명령은 Git 저장소에서 마지막 n 개의 개정판 --depth
을 가져올 수 있습니다 . 즉, 저장소의 단순 사본을 얻습니다. 예:
git clone --depth 3 git://some/repo myshallowcopyrepo
git-svn에 비슷한 옵션이 있습니까?
지금까지 나의 발견
지금까지 개정판을 -rN
어디 N
에서 가져올 지 옵션을 찾았습니다 . 예:
git svn clone -rN svn://some/repo
설명서에 따르면 사용할 가능성이 있습니다 -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 .
선적 서류 비치
( -r$REV:HEAD
) 에서 복제를 시작하려는 SVN 개정 번호를 지정하여 Git-SVN에서 얕은 복제본을 지정하는 가장 간단한 방법을 이미 발견했습니다 .
예를 들면 다음과 같습니다. git svn clone -s -r1450:HEAD some/svn/repo
Git의 데이터 구조는 DAG (directed acyclic graph)의 포인터를 기반으로하므로 n
커밋을 다시 수행하는 것이 쉽지 않습니다. 그러나 SVN (따라서 Git-SVN)에서는 개정 번호를 직접 찾아야합니다.
거대한 Subversion 트리에서 제한된 수의 개정판을 얻기 위해 다음을 자주 사용합니다 (곧 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 브랜치의 자식 복제본에 적용하는 경향이 있습니다.
... 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 저장소에서 이전 N 개정 찾기
# -u The SVN URL to clone
# -l The limit of revisions
./svn-lookback.sh -u https://server/project/trunk -l 5
'Programing' 카테고리의 다른 글
iPhone Simulator가 갑자기 매우 느리게 실행되기 시작했습니다. (0) | 2020.03.11 |
---|---|
이메일 주소를 어떻게 확인해야합니까? (0) | 2020.03.11 |
JDBC를 사용한 연결 풀링 옵션 : DBCP vs C3P0 (0) | 2020.03.11 |
AngularJS에서 쿼리 매개 변수를 읽는 가장 간결한 방법은 무엇입니까? (0) | 2020.03.11 |
루비에서 열거 형을 구현하는 방법은 무엇입니까? (0) | 2020.03.11 |