우리는 Git로 변환하려는 비표준 Subversion 저장소가 있습니다. 문제는 내가 완전한 역사를 지키기 위해 어디서부터 시작해야할지 모르지만 완전한 혼란으로 끝나지는 않는다는 것이다.Git으로 비표준 Subversion 가져 오기를 처리하는 방법
당사의 저장소는 당사의 제품 제품군에 대한 지난 6 년간의 경력이 있으며 여러 가지 구조 조정을 거쳤습니다. 모든 경우에 핵심 플랫폼 코드베이스와 핵심 플랫폼 상단에 다른 방식으로 결합 된 여러 프로젝트/플러그인이 있습니다.
-- releases (replaced tags; branches for released stable versions of repos)
-- sandbox (area for misc projects of interest; should have been new repo)
그런 다음 우리가 이것을 정리와 함께 종료 : 시간이 지남에
-- plugin1
- trunk
- branches
- tags
-- pluginX
- trunk
- branches
- tags
-- trunk (core platform)
- <various sub dirs)
-- branches (various feature branches of the entire repository)
- refactoring1
- refactoringX
-- tags (various tags of customer releases of full respository)
- customerX_1.x
-- vendor (vendor drops and tracking of 3rd party source deps)
- 3rd_party_code_A
- 3rd_party_code_X
은 우리가 더 많은 디렉토리를 포함하는 루트입니다 몇 가지를 추가 :
년의 첫 번째 부부 같은 구조되었다 :
-- trunk
- platform
- plugin1
- pluginX
-- stable (stable release branches of trunk)
- 1.1
- 1.2
-- tags (release points; marks a point on a stable branch)
- 1.1.1
- 1.1.2
-- vendor
-- sandbox
-- releases (copies of old releases of interest)
이것이 우리의 역사입니다. 우리가 끝내기를 원하는 것은 잘하면 훨씬 깨끗합니다. 현재 우리는 git 저장소의 기본을 생각하고있다. (기본적으로 이전의 'trunk'디렉토리의 복사본이다.)
- platform
- plugin1
- pluginX
Branches:
- stable/1.1
- stable/1.2
Tags:
- rel/1.1.1
- rel/1.1.2
자신의 저장소에 샌드 박스와 공급 업체를 추가하고 싶습니다. (이 작업을 수행하는 방법을 모르지만 어쩌면 svn 저장소의 하위 집합 만 가져 오는 방법이 있습니다)
분기 및 태그에 관해서는 'stable'의 코드가 가지로 끝나기를 원합니다. 'tags'의 코드는 안정적인 태그로 끝납니다.
원래 구조의 이전 기록에 대해 가능한 한 많은 기록을 유지하려고하지만 새 저장소를 오염시키지 않으려합니다. 예를 들어 리팩토링 브랜치에서 발생한 변경 사항을 되돌아 볼 수 있다면 꼭 필요한 것은 아니지만 절대적으로 필요합니다.
현재 우리는 진행 방법과 모든 것을 재구성하고 깨끗한 방법으로 가져 오는 방법에 대해 토론하고 있습니다. 우리가 필요로하는 최소한의 방법은 이전의 리포지토리 재구성 모두에서 플랫폼 및 플러그인 코드의 전체 기록을 보유하는 방법입니다. 가능한 경우 가장 최근의 저장소 구조에서 정보를 안정적으로 얻고 싶습니다.
누구든지이 가져 오기를 수행하는 방법에 대한 권장 사항이 있습니까? 예를 들어
:
- IT는 구조 조정을 통해 전체 기록을 보존 할 수 있습니까?
- 가져 오기 전에 Subversion 저장소를 어떻게 정리하여 다시 정리해야합니까? 그렇다면 어떻게해야합니까?
- 우리는 전체 히스토리를 가져온 다음 Git에서 재구성해야합니까?
- 이 가져 오기를 정리하는 방법에 대한 아이디어가 있으십니까?
plugin1과 pluginX는 기본적으로 자체 트렁크/분기/태그가있는 독립형 repos입니다. – prusswan
그것이 시작된 방법이지만 코드가 모두 동시에 변경되기 때문에 제대로 작동하지 않는 것으로 나타났습니다. 그래서 우리는 두 번째 저장소 구조로 이동했습니다. 이 구조는 지금 우리를 위해 매우 잘 작동하며 우리는 Git과 함께 계속 유지하려고합니다. – Allen
전체 역사를 지키기 위해 어느 경로가 어떤 경로에 매핑되어야하는지, 그리고 많은 인내 (깊은 역사가있는 svn에 대해서는 git-svn 복제가 매우 오랜 시간이 걸린다)를 알아내는 문제라고 생각합니다. 본질적으로 그 트렁크는 어쨌든 (비록 여러분이 그들 중 하나를 브랜치/마스터가되도록 브랜치로 지정할 수는 있지만) 실제로는 브랜치가 될 것입니다. – prusswan