MaxScript) SVN 접근하기

Max 2013. 11. 26. 11:10

맥스에서 SVN 접근하기

 

 

 

 

맥스에서 SVN을 사용하기 위해서는 TortoiseSVN이 설치되어 있어야 합니다.

그런데 그냥 설치만 한다고 맥스에서 SVN을 사용 할 수 있는 건 아니고~

Command Line이 설치 되어 있어야 한다는 거죠.

 

 

 

1. SVN Command Line 설치하기

 

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

파일을 받고 설치할 때 주의 해야할 것이 바로 Command Line을 활성화 해 설치하는 겁니다.

 

기본 값이 Off로 되어 있으니 On 해줘야겠죠.

이게 되지 않으면 맥스에서 접근할 수 없습니다.

 

Command Line은 쉽게 말하면 Dos 명령어를 사용해 SVN을 작동 시켜주는 방법 입니다.

Win키 -> 프로그램 & 파일검색에서 cmd를 치면 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코드가 실행됩니다.

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

 

<추가>

HiddenDOSCommand를 사용할 때 getclipboardText()함수로 리턴값을 받을 수 있다고 하네요.

 

 

 

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 설치를 확인이 가능해 지겠죠.

 

 

 

'Max' 카테고리의 다른 글

MaxScirpt Exception Log 남기기  (0) 2013.12.04
MaxScript로 Dll Load 하기  (0) 2013.11.29
플랜 나무 음영개선 방법  (0) 2013.02.15
MaxScript) Matrix 함수 정보  (0) 2013.01.19
MAX Custom ViewCube 적용하기  (0) 2012.06.28
Posted by Hwanggoon
,