문제

2 개의 리포지토리에 프로젝트가 있습니다. 하나는 SVN 아래에 있고 하나는 git 아래에 있습니다. SVN에서 무언가를 변경할 때마다 GIT 저장소에도 같은 일을하고 싶습니다.

SVN 리포지토리를 변경하여 개정 125를 생성한다고 가정 해 봅시다.이 동일한 변경 사항을 GIT 저장소에 적용하는 방법 (GIT 저장소가 개정판 124와 함께 최신 상태라고 가정).

고맙습니다.

도움이 되었습니까?

해결책

내가 실제로/찾는 것은 다음과 같습니다.

cd /path/to/svn/repo
svn diff -r 125 > /tmp/patch.diff
cd /path/to/git/repo
patch -p0 < /tmp/patch.diff

다른 팁

노력하다:

svn diff | patch -d /path/to/git/repo -p0

보다 svn help diff 특정 개정의 차이를 내보내려면

왜 아무도 git-svn을 좋아하지 않습니까? 나는 아무도 그것에 대해 아무도 모른다고 가정 할 수 없습니다.

GIT-SVN (및 GIT-HG 및 GIT-CVS 및 GIT-BZR AFAICT)이 있습니다. 적어도 git-svn을 사용하면 단순히 할 수 있습니다

git svn clone --stdlayout http://myrepo/root here

-s 사용--stdlayout) 표준 트렁크/ 분기/ 태그/ 레이아웃을 가정하지만 어떤 방식 으로든 가질 수 있습니다 (man git-svn).

매핑은 양방향이므로 네이티브 (GIT) 리모컨과 같이 밀고 당길 수 있습니다. 질문이 없습니다.

SVN에서 패치를 생성하고 나중에 git에 적용하려면 사용하는 것을 잊지 마십시오. --git 명령 줄 옵션:

--git

인기있는 GIT 분산 버전 제어 시스템과 교차 호환성을 위해 설계된 SVN Diff의 특수 출력 모드를 활성화합니다.

예를 들어, 실행

svn diff --git -r 125 > /tmp/patch.diff

위에서 언급 한 패치를 사용하는 것 외에도 커밋 후 후크 따라서 새로운 것을 커밋 할 때 마다이 작업을 수행 할 필요가 없습니다.

아래는 저를 위해 일했습니다.

원천:git로 패치를 만들고 적용하는 방법

먼저 패치의 변경 사항을 살펴보십시오.. git 적용으로 쉽게 할 수 있습니다

git apply --stat fix_empty_poster.patch

이 명령에 유의하십시오 하지 않습니다 패치를 적용하지만 그것이 무엇을 할 것인지에 대한 통계 만 보여줍니다. 좋아하는 편집기와 함께 패치 파일을 들여다 보면 실제 변경 사항이 무엇인지 확인할 수 있습니다.

다음으로, 당신은 패치가 얼마나 번거롭게 될지에 관심이 있습니다.. GIT를 사용하면 실제로 적용하기 전에 패치를 테스트 할 수 있습니다.

git apply --check fix_empty_poster.patch

오류가 발생하지 않으면 패치를 깨끗하게 적용 할 수 있습니다. 😀. 그렇지 않으면 어떤 어려움을 겪을 지 알 수 있습니다.

패치를 적용하려면 git 적용 대신 git AM을 사용하겠습니다. 그 이유는 git am을 사용하면 응용 패치에 서명 할 수 있기 때문입니다. 이것은 나중에 참조하는 데 유용 할 수 있습니다.

git am --signoff < fix_empty_poster.patch

Applying: Added specs to test empty poster URL behaviour
Applying: Added poster URL as part of cli output

좋아, 패치는 깨끗하게 적용되었고 마스터 지점이 업데이트되었습니다. 물론, 테스트를 다시 실행하여 아무것도 깨지지 않았는지 확인하십시오.

GIT 로그에서 커밋 메시지에 "서명 된"태그가 포함되어 있음을 알 수 있습니다. 이 태그는 Github 및 다른 사람들이 읽어서 커밋이 코드에서 어떻게 끝났는지에 대한 유용한 정보를 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top