2015-01-07 23 views
2

Windows 기반 SVN 설치 (CollabNet Subversion Edge 사용)에서 필자는 작성 후 커밋 훅 배치 파일을 가지고 있습니다 리포지토리 폴더 이름이며, file: URL을 사용하여 해당 Windows 폴더를 가리키는 svnsync으로 전화해야합니다.Windows 경로를 파일로 변환하는 방법 : 배치 파일의 URL (SVN 명령 줄 사용에 적합)

질문의 답은 다음과 같습니다. Windows 폴더 또는 파일 이름을 file: URL로 변환하여 최소한 URL이 SVN 명령 줄 도구에 적합하도록하려면 어떻게해야합니까?

답변

3

변수 FILE_OR_FOLDER_NAME에 (절대 또는 상대, 로컬 또는 UNC, 공백을 포함 또는 포함하지 않고 기존 또는 존재하지 않는) Windows 파일 또는 디렉터리 이름이 포함되어있는 경우 배치 파일에서 다음 명령은 해당 file: URL을 가변 FILE_URL :

for /f "delims=" %%R in ("%FILE_OR_FOLDER_NAME%") do set FILE_URL=%%~fR% 
set FILE_URL=file:///%FILE_URL% 
set FILE_URL=%FILE_URL:///\\=//% 
set FILE_URL=%FILE_URL:\=/% 

줄 1 절대 하나에 대하여 파일명을 확장; 2 번째 줄은 file:///; 3 행은 UNC 경로의 특별한 경우를 처리합니다. 4 행에서는 슬래시 만 사용합니다.

함께 표현하면, 이들 변환은 \\remotehost\share\folder에서 file://remotehost/share/folder까지이며, d:\folder에서 file:///d:/folder입니다.

필자의 테스트가 끝나면 위의 명령은 항상 SVN 명령 줄에서 허용되는 file: URL로, 다른 용도로도 사용할 수 있습니다. D:/my test#repofile:///D:/my test#repo이되고, 기술적으로 정확하지 :

정말 정확하지 않은 유일한 것은, 공간과 # 같은 다른 특수 문자가 제대로 URL 인코딩 된 결과 file: URL에없는 것입니다. 그러나 SVN 명령 줄 구문 분석기가 관계없이 저장소를 찾는 이후 내 특정 사용 예에서이 문제가 발생하지 않습니다.