나는 Git 서브 모듈을 사용하는 것이 내 개발 워크 플로에서 다소 번거 롭다고 생각합니다. Git 하위 트리와 Gitslave에 대해 들었습니다.
- 여러 저장소 프로젝트를위한 더 많은 도구가 있으며 어떻게 비교합니까?
- 이러한 도구를 Windows에서 실행할 수 있습니까?
나는 Git 서브 모듈을 사용하는 것이 내 개발 워크 플로에서 다소 번거 롭다고 생각합니다. Git 하위 트리와 Gitslave에 대해 들었습니다.
답변:
귀하에게 가장 적합한 것은 귀하의 필요, 욕구 및 워크 플로우에 따라 다릅니다. 그들은 어떤 의미에서 반동 형적이며, 일부는 특정 작업에 다른 것보다 사용하기가 훨씬 쉽습니다.
gitslave 는 수퍼 프로젝트와 같은 시간에 하위 프로젝트를 제어하고 개발할 때 유용하며 일반적으로 모든 저장소에 태그, 분기, 푸시, 풀 등을 동시에 지정하려는 경우에 유용합니다. gitslave는 내가 아는 창에서 테스트 된 적이 없습니다. perl이 필요합니다.
git-submodule 은 하위 프로젝트를 제어하지 않거나 하위 프로젝트가 변경 되더라도 특정 개정판에서 하위 프로젝트를 수정하려는 경우 더 좋습니다. git-submodule은 git의 표준 부분이므로 Windows에서 작동합니다.
git-subtree 는 git의 기본 제공 하위 트리 병합 전략에 대한 프런트 엔드를 제공합니다. 단일 저장소 "통합"git 히스토리를 선호 할 때 더 좋습니다. 하위 트리 병합 전략과 달리 다른 (디렉토리) 트리의 변경 사항을 원래 프로젝트로 다시 내보내는 것이 더 쉽지만 gitslave 또는 git-submodule 에서처럼 자동이 아닙니다.
repo 는 이론적으로 gitslave와 유사하지만 내가 찾은 비 안드로이드 작업에 대해서는 잘 문서화되어 있지 않습니다. Google Android 개발 모델 전용이며 기본적으로 소수의 git 명령 만 지원하며 (임의의 명령을 실행할 수 있음) 제한된 기본 지원은 예를 들어 중앙 집중식 저장소를 지원하지 않습니다. 가지가 상당히 어려워 보입니다.
kitenet의 mr 는 여러 버전 제어 시스템을 사용하는 경우 사용하고 싶지만 가장 낮은 공통 분모 접근 방식으로 인해 git 전용 슈퍼 프로젝트에 대해 대부분 제한됩니다. 임의의 명령을 실행하는 방법이 있지만 잘 통합되어 있지 않습니다.
mr run git config ...
특정 명령을 이름으로 별칭을 지정하는 구성 파일 방법 과 같 거나 아마도 (더 나쁜) 것에 대해 이야기하고 있다고 가정하고 있습니다 . 물론, man 페이지를 읽었을 때 즉시 드러나지 않았던 일부 mr 기능을 알고 있다면 그것에 대해 알고 싶습니다.
git/contrib
. sudo make install install-doc prefix=/usr libexecdir=/usr/lib/git-core
Git 소스 트리 에서 Ubuntu에 설치합니다 ( 패키지 된 Git 에서는 작동 하지 않음 ).
다양한 언어로 종속성이있는 프로젝트에서 Git 하위 모듈을 사용할 때 비슷한 문제가 발생했습니다. 이를 처리하기 위해 우리는 Git 하위 모듈과 유사한 기능을 갖지만 성가신 워크 플로없이 선언적 버전 제어 Git 종속성을 제공하는 MDLR ( "Modular")이라는 도구를 구축하고 오픈 소스했습니다. GitHub 저장소 의 지침 / 다운로드를 통해이를 설치하고 종속성을 관리 할 수 있습니다.
일부 사용 사례의 경우 다음 두 가지 간단한 접근 방식을 각각 좋아했습니다.
중첩 된 저장소. 소프트웨어 프로젝트에 각 플러그인이 자체 하위 디렉토리에있는 플러그인 메커니즘이있는 경우 이러한 플러그인 디렉토리를 git 무시하고 로컬 파일 시스템에서 각 플러그인을 자체 git 저장소로 만드는 것이 좋습니다. 이렇게하면 모든 파일이 단일 디렉토리 트리를 형성하지만 다른 git 저장소에서 관리됩니다. git을 혼동하지 않습니다.
패키지 별 저장소. 일종의 소스 코드 패키지 관리 시스템 (gem / bundler, npm, pear 등)을 사용하는 소프트웨어 프로젝트의 경우 재사용 된 코드를 별도의 git 저장소에 넣은 다음 소스 패키지를 만드는 것이 합리적 일 수 있습니다. 그런 다음 패키지 관리 도구를 사용하여 상위 프로젝트에 설치합니다. 상위 프로젝트의 git 저장소에는 필요한 패키지 및 해당 버전에 대한 참조 만 포함되며, 이러한 패키지의 실제 코드는 다른 모든 패키지 및 외부 라이브러리와 마찬가지로 git 무시됩니다. 위에서 제안한 중첩 된 저장소와 비교하면, 설치할 패키지 버전을 지정할 수 있으므로보다 정교한 접근 방식입니다.