성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] How can I tell whether two programs...
[정성태] The case of the fail-fast crashes c...
[정성태] Creating Docker multi-arch images f...
[정성태] BinaryFormatter removed from .NET 9...
[정성태] Extending the Windows Shell Progres...
[우광현] 와..... 범위를 잡았으니 클라이언트가 해당 범위를 확인해본다...
[정성태] 딱히, 그것 이상으로 더 설명할 내용이 없습니다. 동적 포...
[정성태] If Windows 3.11 required a 32-bit p...
[정성태] What is a hard error, and what make...
[괴물신인] 질문작성자인데 이 글을 이제봤네요 ㄷㄷ 이 글처럼 타입별로 인...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <div style='font-family: 맑은 고딕, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>TFS 2010의 소스 서버 수작업 구성</div><br /> <br /> 예전 글에서, 소스 서버를 TFS 2008에 연동하는 방법과 효과를 설명해 드린 적이 있는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > TFS Team Build + Source Server = 소스 코드 디버깅 ; <a target='_tab' href='/2/0/600'>http://www.sysnet.pe.kr/2/0/600</a> TFS Team Build + Symbol Server ; <a target='_tab' href='/2/0/599'>http://www.sysnet.pe.kr/2/0/599</a> Symbol Server 생성 ; <a target='_tab' href='/2/0/323'>http://www.sysnet.pe.kr/2/0/323</a> </pre> <br /> TFS 2010에서 좋은 소식이 있다면 TFS 2008에 비해 자동화된 구성이 가능합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > Enabling Symbol and Source Server Support in TFS Build 2010 Beta 1 ; http://blogs.msdn.com/b/jimlamb/archive/2009/06/15/enabling-symbol-and-source-server-support-in-tfs-build-2010-beta-1.aspx </pre> <br /> 그런데, 팀 빌드가 아닌 수작업 배치파일(.bat)에서 돌려야 할 필요가 있어서 <a target='_tab' href='/2/0/600'>그때의 TFS 2008 구성</a>을 가지고 배치로 바꿔보았는데요.<br /> <br /> ssindex.cmd 실행 부분에서 자꾸만 다음과 같은 오류가 발생합니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > ssindex -SYSTEM=TFS -SYMBOLS="D:\...\bin" -SOURCE="D:\...\" -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Server ini file: C:\Program Files (x86)\Debugging Tools for Windows (x86)\srcsrv\srcsrv.ini ssindex.cmd [STATUS] : Source root : D:\... ssindex.cmd [STATUS] : Symbols root : D:\...\bin ssindex.cmd [STATUS] : Control system : TFS ssindex.cmd [STATUS] : TFS program name: tf.exe ssindex.cmd [STATUS] : TFS Label : <N/A> ssindex.cmd [STATUS] : Old path root : <N/A> ssindex.cmd [STATUS] : New path root : <N/A> -------------------------------------------------------------------------------- ssindex.cmd [STATUS] : Running... this will take some time... ssindex.cmd [STATUS] : <b style='COLOR: blue'>Server name not returned by tf.exe info for D:\...\.Skipping all files in the working folder.</b> </pre> <br /> 예전에도 "Server name not returned by tf.exe" 오류를 겪은 적이 있었는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > 소스 서버 구성, 그 외의 이야기 ; <a target='_tab' href='/2/0/603'>http://www.sysnet.pe.kr/2/0/603</a> </pre> <br /> 위의 경우에는 ActivePerl 설치 과정 중에 PATH가 잘못 잡혀서 발생했던 것에 반해, 이번에는 모든 경로가 정상적으로 잡혀있는데도 그와 같은 오류가 발생했습니다.<br /> <br /> 휴~~~ 한숨 먼저 짓고. 배워본 적도 없는 Perl 소스 코드를 이렇게 해서 또 뒤집어 보는 군요. ^^;<br /> <br /> "C:\Program Files (x86)\Debugging Tools for Windows (x86)\srcsrv" 폴더에 있는 "tfs.pm"을 메모장으로 열어서 다음과 같은 코드를 찾아냈습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > $hProc = ExecTFSCmd($self, $SourceRoot, "workfold"); while (<$hProc>) { chomp; if (m/Server\s+:\s+(.*)/i) { $PreferredServer = $1; } } close($hProc); # Confirm the results. if ( defined $PreferredServer ) { $Server = $PreferredServer; } if ( ! defined $Server ) { ::status_message("Server name not returned by $$self{'TFS_CMD'} info for $SourceRoot.". "Skipping all files in the working folder."); return; } </pre> <br /> while 문 사이에다가 "print $_;" 코드를 넣어서 살펴보니, 정상적으로 "tf.exe workfold"가 실행되었다는 것과 그 콘솔 출력 내용이 올바르다는 것이 확인되었습니다. 그런데, 왜? $PreferredServer 변수에는 아무런 값이 안 들어오는 것인지...? ^^;<br /> <br /> 가만히 살펴보다가 음... "m/Server:\s+(.*)/i" 정규 표현식 잘못임을 알게되었습니다. 실제 tf.exe workfold의 출력문은 다음과 같은데,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > D:\...>tf workfold =============================================================================== Workspace : MYPC (TESTDOMAIN\MyUser) Collection: http://mypc:8080/tfs/defaultcollection $/TestSolution: D:\... </pre> <br /> 아하~~~ TFS 2010부터 Collection이 지원되면서 예전 "Server :" 자리에 "Collection:"이 대체하고 있었기 때문에 정규표현식에서 못 걸러낸 것입니다. (애초부터, 그냥 웹 서비스를 호출했으면 좋았지 않았을까요?)<br /> <br /> 그래서, 결국 tfs.pm에 들어있는 Perl 코드를 다음과 같이 변경해 주면 TFS 2010에서도 정상적으로 소스 코드 인덱싱이 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; width: 800px; background-color: #fbedbb; overflow-x: scroll; font-family: Consolas, Verdana;' > [TFS 2008 용 tfs.pm 파일 내용] while (<$hProc>) { chomp; if (m/Server\s+:\s+(.*)/i) { $PreferredServer = $1; } } ==> [TFS 2010 용 tfs.pm 파일 내용] while (<$hProc>) { chomp; if (m/<b style='COLOR: blue'>Collection</b>:\s+(.*)/i) { $PreferredServer = $1; } } </pre> <br /> <br /><br /><hr /><span style='color: Maroon'>[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1366
(왼쪽의 숫자를 입력해야 합니다.)