Bazaar에는 하위 리포지토리 기능이 없습니다. [수정 : 그것은 SVN 에뮬레이트하지만 BZR-외관, : : 분명히 LP에서 사용할 수있는 BZR-외관 플러그인이있다. 외관이 아니라 망할 놈의 서브 모듈 또는 의욕 subrepos 기능]을
그러나, 이것은 비교적 쉽게하면 해결할 수 있습니다 버전 제어 시스템을 전환하고 싶지는 않습니다. (그들이 할 필요는 있지만, 나는 그들이 나란히 것을 여기에 가정합니다)
응용 프로그램과 두 디렉토리에있는 라이브러리를 넣고,
app
및
lib
말.
: 다음 두 개의 스크립트는 lib-snapshot
및 lib-sync
다음 app
체크 아웃 (도 lib
라고도 함) 서브 디렉토리에 체크 아웃됩니다 라이브러리의 특정 버전으로 응용 프로그램의 현재 버전을 연결하는 데 사용할 수 있습니다 LIB-스냅 샷 :
#!/bin/sh
libsrc=../lib
bzr revno --tree $libsrc >libversion.txt
lib 디렉토리 동기화 : 라이브러리의 현재 버전은 libversion.txt
에 저장됩니다
#!/bin/sh
ver=`cat libversion.txt`
libsrc=../lib
libdst=lib
test -d $libdst/.bzr && bzr update -q -r $ver $libdst || bzr checkout -q --lightweight -r $ver $libsrc $libdst
, 당신이 아래에 둘 필요가 버전 제어 (각 버전의 애플리케이션이 테스트 한 버전과 동기화되도록).
lib-snapshot
스크립트는 라이브러리의 현재 체크 아웃 된 버전을 가져 와서 libversion.txt
에 저장합니다. 응용 프로그램에서 새 버전을 사용할 수있을 정도로 라이브러리가 안정적이라고 생각할 때마다 사용하십시오. 그런 다음 lib-sync
스크립트를 사용하여 스냅 샷 버전을 포함하도록 라이브러리 하위 디렉토리를 업데이트 할 수 있습니다. 이상적으로이 스크립트는 빌드/배포 프로세스의 일부로 사용해야합니다.
Bazaar는 파일을 추가 할 때 저장소가 포함 된 디렉토리를 자동으로 건너 뜁니다. 그러나 성가신 경고를받지 않도록 라이브러리 서브 디렉토리를 .bzrignore
에 계속 추가 할 수 있습니다.
업데이트 : Bzr에서 "중첩 된 트리"라고하는 컨셉이있는 것처럼 보이지만, 아직까지는 구현이 완료되지 않았습니다 (http://doc.bazaar.canonical.com/ 참조). developers/nested-trees.html). 나를 고치기 위해 다른 사람이 좋아할 것입니다 (아니면 Mercurial 또는 Git이이 사용 사례를 처리하는 데 더 좋다고 추천합니다). –