컨텍스트 : 개발중인 애플리케이션에 Git을 사용하고 있습니다. 내 응용 프로그램은 내 자신의 필요에 맞게 패치 한 오픈 소스 라이브러리를 사용합니다. 이 오픈 소스 라이브러리는 SVN에 있습니다.Git에서 패치 된 오픈 소스 라이브러리를 유지하십시오.
문제 : 내 Git 저장소에서이 타사 구성 요소를 가져오고 유지 관리하는 방법을 찾고 있습니다. 패치를 업스트림으로 푸시 할 필요가 없습니다.
오픈 소스 라이브러리의 SVN 저장소는 매우 표준 적입니다.
trunk/
tags/
- v1/
- v2/
branches/
내 힘내 작업 복사본의 디렉토리 구조는 매우 간단합니다.
my_app/
lib/
v1 태그의 lib 소스 코드를 lib/
에 어떻게 가져 옵니까?
dev 팀이 SVN 저장소에 태그 v2를 만들면 어떻게 라이브러리의 새 버전을 병합하거나 리베이스 할 수 있습니까? (당신이 역사를 필요로하지 않기 때문에) 나는 당신이 svn의 REPO를 수출하고 당신의 Git 저장소로 가져올 제안 그리고
# Create the open source library's SVN repo and its first tag.
svnadmin create lib_svn_repo/
svn checkout "file:///${PWD}/lib_svn_repo/" lib_working_copy
(cd lib_working_copy ; mkdir -p trunk tags branches ; svn add * ; svn commit -m 'Initialize SVN repo' ; cd trunk ; echo "print 'Hello v1'" >source.py ; svn add * ; svn commit -m 'Development for v1' ; cd .. ; svn up ; svn cp trunk/ tags/v1 ; svn commit -m 'Tag v1' ; sed --in-place 's/v1/v2/' trunk/* ; svn commit -m 'Development for v2')
# Initialize my own project's git repository.
mkdir my_app
(cd $_ ; git init ; mkdir -p src lib ; touch src/.gitignore ; git add * ; git commit -m 'Initialize my app')
# How to import the lib source code from tag v1 in the lib subdirectory???
# Expected: lib/ contains a source.py that displays "Hello v1".
# Commit local changes in my git repo.
(cd my_app/ ; echo "print 'My local modification'" >>lib/source.py ; git add * ; git commit -m 'Added local modification to the library')
# Library dev team creates a tag v2.
(cd lib_working_copy ; svn up ; svn cp trunk/ tags/v2 ; svn commit -m 'Tag v2')
# How to merge or rebase lib/ on tag v2???
# Expected: lib/ contains a source.py file that displays both "Hello v2" and "My local modification".
svn repo의 기록을 유지 하시겠습니까? – Michael
아니요, svn repo의 기록을 유지할 필요가 없습니다. 라이브러리 정보 팀이 새 SVN 태그를 만들 때 내 자식 정보 저장소가 lib/subproject_A를 병합하거나 리베이스하기에 충분한 정보가있는 한 만족합니다. – lacton