2010-05-27 6 views
4

Subversion 저장소에는 공유 파일과 각 프로젝트의 하위 디렉토리를 포함하는 여러 하위 디렉토리가 있습니다. 프로젝트는 상대 svn:externals 등록 정보로 설정되어 저장소에서 공유 디렉토리를 가져 와서 하위 디렉토리로 설정합니다.Subversion에서의 상대 외부 처리

 
client 
shared 
portable 
app1 
app2 

app1svn:externals

 
../shared shared 
../portable portable 

은 그래서 체크 아웃에 portablesharedapp1의 하위 디렉토리로 사용할 수 있습니다로 있습니다

따라서, 예를 들어, 우리의 repostory이 같이 보입니다 .

TortoiseSVN을은 그들이 같은 저장소의 일부임을 인식, 자동으로 externals 하위 디렉토리를 검색합니다 app1에 커밋하고있는 멋진 기능을 가지고 있으며, 커밋 동일의 일환으로 모든 변경 사항을 커밋합니다. 그러나 명령 줄 클라이언트에서 동일한 동작을 수행하는 방법을 알아낼 수 없습니다. 어떤 제안?

+0

또한이 기능에 의존하고 명령 줄 클라이언트가 공을 재생하지 못했음을 알지 못했습니다. –

답변

0

적어도 Subversion 1.6.12에서는 매우 간단한 해결책이 있습니다. 명령 줄에 경로를 명시 적으로 지정하십시오. 예를 들어

, 내가가 원하는대로 다음 서브 버전은 모든 일 개정 내 app1, sharedportable을 마련하기 위해 최선을 다할 것

cd app1 
svn ci file_in_repository.cpp shared portable 

를 실행합니다.분명히 명령 행 클라이언트는 기본적으로 외부를 처리하지 않지만 명시 적으로 주어진 경우에는 외부 커밋을 처리하는 데 어려움이 없습니다.

2

이 기능은 아직 구현되지 않았습니다. 다음은 SVN ver. 1.5 book에서 가져온 다음

는 아마도

가장 실망의 외관 정의 지원을 통해 만든 작업 사본은 여전히 ​​기본 작업 복사본에서 연결이 끊어집니다 (그 버전 디렉토리 SVN의에 : 외관 특성 실제로는 이었습니다). 그리고 Subversion은 여전히 ​​ 은 실제로는 비 연결형 작업 복사본에서만 작동합니다. 따라서, 예를 들어, 경우는 이 차 작업에 복사 - 저지르고 그 작업에 명시 적으로을 커밋 SVN, 당신이 실행해야 하나 또는 그 외부 작업 사본을 더 만들어 을했습니다 변경 사항을 적용 할 사본은 어떤 외부 으로 재발생하지 않습니다.

는 또한 SVN 1.6 release notes을 확인하고 만든 두 개선 SVN과 관련되는 : 외관을. svn : externals에있는 파일을 지원하고 외부 정의에 일반적인 셸 따옴표 규칙을 지원합니다.

아마도 이것은 구현할 가치가있는 기능이 아닙니다 (내 생각이기도합니다). 일반적으로 svn : externals는 상대적으로 안정적인 헤더/파일을 종속적 인 일부 프로젝트/응용 프로그램에 포함시키는 데 사용됩니다. 대개 특정 개정판의 태그 나 경로를 참조합니다. 이 질문에 svn 클라이언트가해야 할 특별한 대답이 없습니다.

0

각 외부 프로젝트를 개별적으로 참조하는 위의 해결책은 외부 참조가 절대적 일 때만 작동합니다.