본문 바로가기
3DMAX/Script

MaxScript에서 Svn 접근하기

by tartist 2015. 12. 17.

회사에서 맥스 스크립트를 많이 쓰게 되면서 스크립트 관리포인트가 상당히 많이 생겼습니다.

그러다보니 여기저기 버그도 발생하고, 누가 쓰고 있는지 알기도 힘들고, 업데이트 마다 mzp 파일 배포하는 것도 피곤하고..

그래서 SVN이 도입되어 사용되어 왔습니다. 제 선임이 멋지게 구축해 놓은걸 저는 인계받아 쓰고 있는데요

맥스 스크립트에서 SVN에 접근하는 방식에 대한 내용 정리입니다.

출처 -  http://hwanggoon.tistory.com/109

 

 

1. SVN Command Line 설치하기 

다운로드 경로 : http://tortoisesvn.net/downloads.html 

SVN 설치시에는 반드시 Comand 라인을 설치해 줘야만 맥스 설치폴더에서 접근할 수 있게 됩니다.

Command Line 이란? Dos 명령어를 사용해 Svn을 작동 시켜주는 방법입니다.

맥스도 Dos 명령어를 사용할 수 있기 때문에 Command Line을 설치함으로SVN을 맥스에서도 쓸 수 있게 됩니다.

 

 

2. 맥스에서 SVN 사용하기 

1) HiddenDOSCommand 

Dos 명령어를 사용하는 방법은 HiddenDOSCommand 함수를 사용하는 것이 일반적 입니다.

Dos 창이 보이지 않지만 Dos 명령어는 실행 되니깐 즐겨 사용 하는 방법 입니다.

그런데 HiddenDOSCommand는 기능 상 한계가 있는데요.

Log같은 정보를 받을 수 없습니다.

(return 되는 exitCode는 성공, 실패 같은 간단한 정보만을 보여줍니다.)

 

 

2) dotNet Process 

위와 같은 경우는 dotNet을 사용하면 해결 할 수 있습니다.

 

<예제 코드>

commandString = "info \"" + thePath + "\"" -- SVN 파일 경로

-- StartInfo -------------------------------------

 dno_ProcessStartInfo = dotNetObject "System.Diagnostics.ProcessStartInfo"
 dno_ProcessStartInfo.CreateNoWindow = true
 dno_ProcessStartInfo.UseShellExecute = false
 dno_ProcessStartInfo.RedirectStandardOutput = true
 dno_ProcessStartInfo.FileName = "svn"
 dno_ProcessStartInfo.Arguments = commandString
 ------------------------------------------------
 -- Process 적용 --------------------------------
 dnc_Process = dotNetClass "System.Diagnostics.Process"
 process = dnc_Process.Start dno_ProcessStartInfo
 process.WaitForExit()

------------------------------------------------

infoLine = process.StandardOutput.ReadLine()

-- infoLine : svn info 정보를 String으로 받아 볼 수 있음

 

dotNet Process를 사용해서 Dos 명령어를 실행 하는 방법입니다.

WaitForExit는 써주는 것이 좋은데요.

이걸 하지 않으면, Process가 끝나기 전에 MaxScript코드가 실행됩니다.

오류가 날 확률이 있으니 미리미리 방지해 봅니다.

 

 

 

3. User Name 찾기 

 

캐싱파일 분석하기 

SVN을 MaxScript로 만들다 보면 사용자 이름이 필요한 경우가 발생하는데요.

(사용자 정보를 수집할 때 필요하죠.)

SVN 명령어로 사용자 이름을 알 수는 없을 겁니다.

이럴 경우 캐싱 된 SVN파일을 열어 분석해줘야 하는데요.

 

SVN 사용자 정보

경로 : C:\Users\HwangGoon(개인마다 다름)\AppData\Roaming\Subversion\auth\svn.simple

안에 GUI로 되어 있는 파일이 있습니다.

이 파일을 텍스트 편집기에서 열어보면

다음과 같이 나오게 됩니다.

 

K 8
passtype
V 8
wincrypt
K 8
password
V 372
AQAAANCMnd8BFdERjHoAwE/ClK 15+.....
svn:realmstring
V 40
<http://100.100.100.100:80> VisualSVN Server
K 8
username
V 9
hwanggoon
END


 

svn:realmstring 값이 내가 사용하는 Url과 같은지 비교하는 것이 우선이 되겠죠.

(SVN을 2개 이상 사용하는 경우도 많기 때문에)

username 하위에 보시면 hwanggoon이 SVN username입니다.

 - K 8과 같은 코드는 무시하는 것이 좋습니다. 사용자마다 같다는 보장을 할 수 없어요.

 

  

3. SVN 설치 유무 알아내기 

1) TortoiseSVN 설치 알아내기 

특정 프로그램이 설치되어 있는지 확인하는 방법은 윈도우 레지스트리에서 찾을 수 있는데요. 

예제 코드를 보겠습니다.

dnc_Registry = dotNetClass "Microsoft.Win32.Registry"
registryKey = dnc_Registry.LocalMachine.OpenSubKey "SOFTWARE\\TortoiseSVN"

 

위와 같이 찾으면 TortoiseSVN이 설치 되어 있지 않다면 registryKey값은 undefined로 나오게 됩니다.

 

2) Command Line SVN 설치 알아내기 

TortoiseSVN이 설치되어 있어야 Command Line이 있을 수 있겠죠.

그렇다면 위에서 찾은 registryKey를 가지고 한번 더 하위를 찾아 봅니다.

 

dir = registryKey.GetValue "Directory"
svnFile = dir + "bin\svn.exe"

 

이제 svnFile이 있는지 여부만 판단하면 Command Line 설치를 확인이 가능해 지겠죠.