2013-05-30 12 views
0

나는 몇 가지 PHP 프로젝트를 진행하고 있습니다. 하나는 응용 프로그램이고 다른 하나는 해당 응용 프로그램을 지원하는 라이브러리입니다. 이전에는 라이브러리가 응용 프로그램 리포지토리 내의 하위 저장소 인 경우 수은 설치를 사용했습니다. 즉, 라이브러리 코드의 모든 변경 사항이 하위 저장소에 커밋되어 라이브러리 코드의 기록을 앱과 별도로 유지하기 위해 라이브러리 프로젝트와 별도로 병합 될 수 있습니다.라이브러리 Bzr 하위 용

저는 Bazaar (현재 사용중인 DVCS)를 사용하여 예제 또는 문서를 찾는 데 어려움을 겪고 있습니다. 아무도 시도/해본 적이 있습니까? Bzr에서해야 할 가치가 있습니까, 아니면이 필요성을 더 잘 충족시키는 다른 DVCS 시스템을 봐야합니까?

+0

업데이트 : Bzr에서 "중첩 된 트리"라고하는 컨셉이있는 것처럼 보이지만, 아직까지는 구현이 완료되지 않았습니다 (http://doc.bazaar.canonical.com/ 참조). developers/nested-trees.html). 나를 고치기 위해 다른 사람이 좋아할 것입니다 (아니면 Mercurial 또는 Git이이 사용 사례를 처리하는 데 더 좋다고 추천합니다). –

답변

1

Bazaar에는 하위 리포지토리 기능이 없습니다. [수정 : 그것은 SVN 에뮬레이트하지만 BZR-외관, : : 분명히 LP에서 사용할 수있는 BZR-외관 플러그인이있다. 외관이 아니라 망할 놈의 서브 모듈 또는 의욕 subrepos 기능]을

그러나, 이것은 비교적 쉽게하면 해결할 수 있습니다 버전 제어 시스템을 전환하고 싶지는 않습니다. (그들이 할 필요는 있지만, 나는 그들이 나란히 것을 여기에 가정합니다)

응용 프로그램과 두 디렉토리에있는 라이브러리를 넣고, applib 말.

: 다음 두 개의 스크립트는 lib-snapshotlib-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에 계속 추가 할 수 있습니다.