2009-06-10 9 views
4

다음 상황에 대한 해결책을 찾고 있습니다."Mark"수정 버전으로 SVN 내보내기

우리는 Subversion을 사용하고 있으며 체크 아웃을 사용하는 개발 환경 이외에 가능한 한 프로덕션 환경을 닮은 테스트 환경이 있습니다.

따라서 SVN 내보내기를 사용하여 환경을 업데이트하도록 설정했습니다. 그러나 최신 개정판 만 원하기 때문에 어떤 개정본을 내보냈는지 알 수 없습니다.

이 내보내기를 "표시"할 수 있습니까? 예를 들어 생성 된 파일을 추가하여 어떤 개정판을 내보 냈는지 나타낼 수 있습니까? 한 번의 릴리스주기 내에서 여러 번 업데이트되므로 태그를 내보내려는 것이 아닙니다.

답변

3

한 가지 방법은 알려진 개정에서 내보내고 해당 수정 번호를 다음과 같이 작성하는 것입니다. 내보내기의 텍스트 파일 svnversion 명령은 작업 디렉토리의 개정 번호를 알려줍니다. 따라서 svn update을 사용하여 최신 버전을 얻은 다음 배포 위치에 svn export을 입력하고 svnversion을 출력과 동일한 위치의 텍스트 파일로 리디렉션하십시오. 누군가가 새로운 코드를 커밋 한 경우에도 개정 번호는 업데이트 시점의 개정 버전이됩니다.

위의 과정을 셸 스크립트 또는 다른 것으로 자동화하고 싶습니다.

+1

감사합니다. 그러나 내 문제는 실제로 해결되지 않습니다. 외부 개발자가 체크 아웃에서 커밋을하고 수출을 수행하는 업데이트 스크립트를 실행하는 경우가 있습니다. 나는 그것이 "Exported revision ..."을 인쇄 할 때 svn export 명령의 출력을 캡처하려고 시도 할 수 있다는 것을 알아 냈습니다. –

1

내보낼 직전 (또는 이후에) svn info /path/to/repository 할 수 있지만 변경하지 않았 으면 잠글 수 있습니다.

또는, 같은 쉘 스크립트를 통해 의견 및 배관에 설명 된 기술을 사용하여 :

svn export /path/to/repository | grep ^Exported > revision.txt 

또는

svn export /path/to/repository | tail -l > revision.txt 
+0

이전 또는 이후에 수행하는 경우 다른 개정판 일 수 있습니다. –

0

다른 방법으로, 당신은 그 지역에서 svn update 다음 svn export을 할 수 부. 이것의 이점은 Subversion이 "rsync"(또는 사용하는 알고리즘)를 사용하여 변경된 파일 만 업데이트한다는 것입니다. 그런 다음 로컬 복사본에서 내보내고 대역폭을 절약하고 로컬 체크 아웃을 통해 모든 저장소 정보를 유지합니다.

는 두 단계의 과정을 배포, 두 개의 디렉토리, 수출 체크 아웃을위한 하나, 하나를 만들기 : 당신의 대답에 대한

svn update /path/to/repository checkout/project 
svn export checkout/project export/project 
관련 문제