2011-01-18 4 views
5

내 cvs 저장소를 git로 전환하려고 노력 중이며 한동안이 마지막 문제에 매달 렸습니다.CVS의 앰퍼샌드 모듈에 대해 동등 물

저는 현재 CVS 앰퍼샌드 모듈을 사용하여 프로젝트간에 코드를 공유합니다. 그것들을 사용하면 기본적으로 다른 저장소를 프로젝트의 하위 디렉토리로 "별칭"할 수 있으므로 전체 프로젝트를 업데이트/커밋 할 수 있으며 하나의 저장소 인 것처럼 원격 저장소가 포함됩니다.

(svn : externals)과 관련하여 하위 트리 병합 또는 하위 모듈을 권장하는 스레드를 보았습니다. 이는 다음과 같은 이유로 작동하지 않습니다.

  • 하위 트리 병합 외부 Repos를 쉽게 뒤로/업데이트 할 수 없습니다.

  • 하위 모듈은 여전히 ​​모든 하위 모듈을 수동으로 밀어 넣거나 당길 것을 요구합니다. 나는 많은 수의 서브 모듈을 가지고 있으며, 모든 변경 사항을 푸시하기 위해 모든 단일 항목에 들어가기가 지루하고 변경 사항이 커밋됨을 잊어 버릴 수 있으므로 누락 될 수 있습니다.

그냥 명확하게, 나는 서브 디렉토리와 같은 다른 Git 저장소를 포함하는 자식 저장소를 가지고 있고, 하나의 명령으로 동시에 그들 모두에// 푸시를 저지 풀 수 있도록하고 싶습니다.

+2

서브 모듈이 원하는대로 조금 더 가까워지고 있습니다.'git fetch'는 이제 서브 모듈을 인식하고 있으며, 더 많은 것이 올 것이라고 확신합니다. 하지만 하위 모듈에서 커밋하는 것은 의도 한 목적과 조금 다릅니다. – Cascabel

+1

당신 말이 맞아요, 서브 모듈은 내가 찾고있는 것들이지만, 아직 거기에 있지 않습니다. 나는이 워크 플로우가 상당히 일반적이며 git이 잠시 동안 주변에 있었다고 느낄 때 놀랐다. – paulsc

+1

@paulsc : 저는 약간 다른 것이 좀 더 일반적이라고 생각합니다 : 수퍼 프로젝트와 독립적으로 서브 프로젝트에서 작업 한 다음 수퍼 프로젝트를 최신 버전의 서브 프로젝트로 업데이트하는 것입니다. – Cascabel

답변

1

대단히 힘듭니다. 별도의 프로젝트 인 경우 별도의 리포지토리에 속합니다.

그러나 Android와 같은 프로젝트에서는 repo 도구를 사용하여 다른 위치에서 올 수있는 많은 수의 종속 프로젝트를 포함하는 git 위에 레이어를 제공하고 모든 프로젝트의 로컬 브랜치에서 워크 플로를 가질 수 있습니다 (프로젝트에 따라 다른 위치로 갈 수 있습니다) 개정 관리를 통해.

정확한 정보를 기대하고 있다면 레이어를 얻을 수 있습니다. 하위 프로젝트에서 표준 자식 도구를 사용할 수 있지만 최상위 수준에서는 다른 도구를 사용하여 조정합니다.

+0

우리의 워크 플로가 드문 일이 아니기 때문에 다른 사람들이이 문제를 어떻게 처리하는지 혼란 스럽습니다. 그것들은 별개의 프로젝트이지만 상당한 양의 코드를 공유합니다. 따라서 각 프로젝트는 컴포넌트별로 하나의 git 저장소에 이상적으로 매핑되는 '컴포넌트'로 세분화됩니다. 원자 적으로 커밋해야하는 필요성 (즉, 여러 구성 요소/git repos를 동시에 사용)은 다른 구성 요소에 대한 변경을 놓치고 싶지 않기 때문에 발생합니다. – paulsc

+0

또한 repo가 ​​재미있어 보인다 - athough 특정 안드로이드 지금. 이제는이 워크 플로를 수행하는 방법이 git 위에 자신을 굴리는 것 같습니다. – paulsc

+0

Android와 관련이 없습니다. 지금 다른 프로젝트에서 사용하고 있습니다. 프로젝트는 분리되어 있으며 컨테이너 자체는 서로 다른 지점의 관련 버전을 함께 묶을 수 있습니다. 이렇게하지 않으면 두 프로젝트가 공유 프로젝트에 상반되는 변경을 초래할 때 문제가 발생합니다. – Dustin

0

git-subtree 프로젝트를 사용하면 하위 트리 병합 후에 변경 내용을 다시 추출 할 수 있습니다. 많은 사람들은 이것이 git-submodule과 subtree merges 사이의 두 세계에서 최고라고 생각합니다.