문제

다소 흥미로운 개발 상황이 있습니다.클라이언트와 배포 서버는 Subversion 서버에 액세스할 수 없는 방화벽 내부에 있습니다.그러나 개발자는 방화벽 외부에 있으며 Subversion 서버를 사용할 수 있습니다.현재 제가 해결한 해결책은 코드의 로컬 복사본을 업데이트한 다음 UnleashIT를 사용하여 가장 최근에 업데이트된 파일을 꺼내는 것입니다.

문제는 방화벽을 통해 물리적으로 전송되어 배포 서버에 배치할 수 있도록 Subversion에서 업데이트된 파일을 가져오는 방법입니다.

방화벽 설정을 변경하거나 방화벽 내부에서 Subversion 서버에 접근하는 더 쉬운 방법을 찾는 것에 대해서는 걱정하지 않습니다.가장 최근에 변경된 파일의 저장소에서 부분 내보내기를 가져오는 방법에 관심이 있습니다.

다른 제안이 있나요?

찾은 답변:답변으로 표시한 답변 외에도 TortoiseSVN에서 이 작업을 수행할 수 있는 다음 항목도 찾았습니다.

~에서 http://svn.haxx.se/tsvn/archive-2006-08/0051.shtml

* select the two revisions
* right-click, "compare revisions"
* select all files in the list
* right-click, choose "export to..." 
도움이 되었습니까?

해결책

내가 발견했다 재동기화 여러 시스템에서 디렉터리 트리를 동기화하는 데 매우 유용합니다.개발 워크스테이션에서 서버에 대한 셸 액세스 권한이 있는 경우 정기적으로 로컬에서 코드를 체크아웃하고 rsync를 실행할 수 있습니다. 그러면 변경된 파일만 서버로 전송됩니다.

(이는 개발 워크스테이션에서 Unix와 유사한 환경을 가정합니다.Cygwin은 잘 작동할 것입니다.)

cd deploy
svn update
rsync -a . server:webdir/

귀하의 질문은 실제로 개발 워크스테이션에서 서버로 직접 네트워크에 액세스할 수 없는 것처럼 들리며 실제로 찾고 있는 것은 Subversion이 어떤 파일이 변경되었는지 알려주는 방법입니다. svn 내보내기 특정 개정판 간에 변경된 파일만 체크아웃할 수 있는 인수를 지원합니다.svn 도움말에서:

  -r [--revision] arg      : ARG (some commands also take ARG1:ARG2 range)
                             A revision argument can be one of:
                                NUMBER       revision number
                                '{' DATE '}' revision at start of the date
                                'HEAD'       latest in repository
                                'BASE'       base rev of item's working copy
                                'COMMITTED'  last commit at or before BASE
                                'PREV'       revision just before COMMITTED

서버에 복사한 최신 개정판을 추적해야 합니다.SVN 개정 xxxx라고 가정합니다.

svn export -r xxxx:HEAD http://svn/

그런 다음 간단히 내용을 복사하십시오. 배포 기존 파일 위에 서버 디렉토리를 추가하세요.

삭제된 파일은 처리되지 않으므로 일부 환경에서는 문제가 발생할 수 있습니다.

다른 팁

svn export 수정 범위를 허용하지 않는 경우 시도해 보세요.

가능한 해결책은 다음을 사용하여 변경된 파일 목록을 얻는 것입니다.

svn diff --summarize -rXXX http://svn/...

그런 다음 각각을 내보냅니다.

그럼 제가 이해한게 맞다면..

다음과 같은 저장소가 있다고 가정해 보겠습니다.

/
|+-DIR1
|   |- FILEa
|   |- FILEb
|+-DIR2
|   |- FILEc
|   |- FILEd
|- FILEe
|- FILEf

그리고 파일을 업데이트한다고 가정해 보겠습니다. FILEa, FILEc, 그리고 FILEf 그리고 다시 저장소에 커밋합니다.그런 다음 저장소에서 내보내려는 것은 다음과 같은 구조입니다.

/
|+-DIR1
|   |- FILEa
|+-DIR2
|   |- FILEc
|- FILEf

그렇죠?

Subversion 후크는 많은 가능성을 갖고 있는 것처럼 보입니다.그러나 후크 스크립트 방법에 대해 상대적으로 잘 모르는 상황에서 커밋된 파일을 꺼내어 디렉토리 구조를 유지하는 어딘가에 FTP로 보내려면 어떻게 해야 할까요?

그렇게 할 수 있다면 방화벽 내부의 누군가가 파일을 배포 서버로 끌어올 수 있고 우리는 계속 진행할 수 있습니다.

당신은 가지고 놀아 볼 수 있습니다 svnadmin 덤프 Subversion 바이너리와 함께 제공되는 명령입니다.이 명령을 사용하여 전체 저장소를 파일, 특정 개정판 또는 개정판 범위로 덤프할 수 있습니다.그런 다음 사용 svnadmin 로드 로드하려면 덤프 파일 새롭고 깨끗한 저장소로.

개별 파일이 아닌 저장소 측면에서 작동하므로 완벽한 솔루션은 아닙니다.

방화벽 뒤에 있는 사람들이 Subversion에 적용된 최신 파일에 액세스할 수 있기를 원할 뿐입니다. 그렇죠?

혹시 글을 써주실 수 있나요? svn 후크 스크립트 파일이 커밋될 때 원격 위치로 파일을 보내기 위해 어떤 방법(scp 또는 ftp 등)을 사용합니까?

개정판에 태그를 지정하면 도움이 될 수 있습니다. github svn-diff-export

방화벽을 통해 허용되는 사항에 대한 정보는 제공하지 않습니다.저는 UnleashIT에 익숙하지 않습니다.

SVN에서 SVN 서버의 폴더로 내보내는 스크립트가 있을 수 있을 것 같습니다.그런 다음 스크립트는 내보낸 파일을 압축합니다.그런 다음 ZIP 파일을 원하는 대로 전송하고 배포 서버에 추출할 수 있습니다.

TortoiseSVN은 프록시 서버를 지원하므로 클라이언트 측에서 그 중 하나를 사용할 수 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top