2010-12-01 4 views
0

Windows 컴퓨터에서 실행되는 SVN 저장소가 있습니다. 커밋 된 파일을 원격 웹 서버에 업로드하는 스크립트가 필요합니다. 미리 커밋 된 후크에 대해 읽었지만 실제로 스크립트를 작성하는 방법이나 작성해야하는 언어를 모르겠습니다. 스크립트가 .bat 또는 .exe로 실행되어야하는 것처럼 보입니다. 창문에.SVN 사전 커밋 후크 Windows에서 업로드 FTP

누구나 Windows 컴퓨터에서 실행할 스크립트가 있습니까? 전체 사이트를 업로드하지 않고 개별 파일을 커밋하려고합니다. ftp 업로드가 실패 할 경우 사용자 피드백을 줄 것이므로 미리 커밋 훅을 원합니다.

이전에이 작업을 수행 한 경우 전체 프로세스를 newb에 설명하십시오.

답변

1

포스트 커밋 후크가 필요하다고 생각합니다.

svn 훅은 실제로 모든 실행 파일 또는 스크립트 파일 일 수 있습니다. Look here for some samples

Windows에서 기본 제공 명령 줄 FTP 클라이언트를 사용할 수 있습니다. 한 가지 방법은 FTP 명령을 배치 파일에서 생성 할 수있는 텍스트 파일에 저장하는 것입니다. 예 :

echo [username]>ftp.txt 
echo [password]>>ftp.txt 
echo put [filename]>>ftp.txt 
echo quit>>ftp.txt 

ftp -s:ftp.txt [server] 

은 물론, 당신은 또한합니다 (FtpWebRequest 클래스를 사용하여, 예를 들어, 닷넷)이 작업을 수행하는 프로그램을 작성할 수 있습니다, 그것은 배치 스크립트 일 필요는 없습니다.

+0

아니요, 사전 커밋이 필요합니다. 그렇지 않으면 FTP 업로드가 실패하지만 커밋이 이루어지며 망가졌습니다. – Liquidgraph

+0

FTP 업로드와 관련된 샘플은 없습니다. 또한, hook-script를 통해 Windows에서 빌드 인 명령 줄 ftp 클라이언트를 사용하는 방법을 자세히 설명 할 수 있습니까? – Liquidgraph

+2

마지막으로 원하는 것은 pre-commit hook입니다. 사전 커밋 훅은 사용자 문제에만 사용해야합니다. 그렇게하면 사용자가 문제를 해결하고 다시 시작할 수 있습니다. FTP 서버에 문제가 있습니다. –

3

사전 커밋 훅은 어떤 이유로 커밋을 실패 할 수 있기를 원할 때 사용됩니다. FTP 사이트가 다운되었거나 디스크가 꽉 찼기 때문에 커밋을 실패하고 싶습니까?

필수 속성이 누락 된 파일 등 개발자 통제하에있는 것만 실패하면 사전 커밋 스크립트 만 사용해야합니다. 그러면 개발자가 문제를 해결 한 다음 커밋을 다시 제출할 수 있습니다.

포스트 커밋 스크립트는 사용자의 터미널이 완료 될 때까지 기다리지 만 여전히 스크립트가 실패하고 실패했다는 것을 사용자에게 알리지 만 커밋이 발생합니다. 후크를 사용하여이 작업을 수행하려면 미리 커밋 된 후크가 아닌 후행 커밋 후크를 사용해야합니다.


훅은 좋은 방법이 아닙니다. 사용자가 많은 파일을 커밋하면 어떻게 될까요? 후크 스크립트가 실행되는 동안 10 분 정도 앉아 있어야합니까?

더 좋은 아이디어는 Hudson과 같은 연속 빌드 시스템을 사용하는 것입니다. Hudson은 Subversion 저장소를보고 사용자가 커밋을 할 때마다 원하는 FTP 작업을 수행 할 수 있습니다. Hudson을 사용하면 개발자가 훅을 완료하기를 기다릴 때 개발자를 묶어 두지 않고 모든 커밋과 관련된 모든 일을 완벽하게 기록 할 수 있습니다.

사실 모든 사이트는 연속 빌드 서버를 사용해야합니다. 코드를 컴파일하지 않더라도 모든 커밋에 대해 테스트를 실행하고 싶습니다.

허드슨은 작업을 더 쉽게 할 수있는 FTP 및 SFTP 플러그인을 가지고 있습니다. 또한 Hudson에서 사전 구축 및 사후 구축 스크립트를 호출 할 수 있기 때문에 마음껏 원하는 모든 것을 할 수있는 유연성을 확보 할 수 있습니다.

허드슨은 Windows 서버와 유닉스 서버에서 실행됩니다. 이것은 Java 프로세스입니다.


는 Windows에있어, 당신은 에게 PowerShell을이없는 경우, 당신은 몇 가지 스크립트 언어 당신을 다운로드하여 후크를 작성하는 것을 사용해야합니다. Windows command.exe 프로세서의 표준 프로그래밍 언어는 매우 유연하거나 강력하지 않습니다. 후크는 서버에서 실행되기 때문에 후크가 단일 컴퓨터에서 실행되는지 여부 만 고려하면됩니다. 일부 프로그램은 클라이언트 측 훅을 사용하며 훅을 작성하는 경우 클라이언트가 사용할 수있는 모든 단일 시스템에서 실행 가능해야합니다.

+0

나는 하루 종일이 주제에 대해 연구 해 왔으며 합의는 다음과 같은 것으로 보인다. – Liquidgraph

+0

기본적으로 허드슨이 말한 것을 설정하려고합니다. 개발자가 커밋 할 때마다 스테이징 서버에 업로드됩니다. 만약 그가 여러개의 파일을 커밋하고 있다면 커밋 한 것으로 간주되지 않을까요? 왜 너를 늦출 까? – Liquidgraph

+0

나는 @David W.에 동의한다. 이것은 당신이하려고하는 것을 구현하는 이상한 방법 인 것처럼 보인다. ... – jeroenh

관련 문제