Team Foundation Server용 크로스 플랫폼 명령줄 클라이언트의 스크립팅
소스 코드 체크 인 및 체크 아웃 같은 작업을 자동화하시겠습니까? 외부 또는 내부 자동화를 사용하여 작업을 수행할 수 있습니다. 먼저 이러한 두 가지 자동화 모드에 대해 검토해 보겠습니다. 또는 pros and cons로 직접 건너뛸 수 있습니다.
외부 자동화
외부 자동화는 완벽하게 맞는 인수를 가진 tf 명령줄 도구를 반복적으로 호출할 때마다 다른 프로세스를 구성합니다. 이 모드를 사용하기 위해 특수 구문을 사용할 필요가 없습니다. 다음 외부 프로세스 중 하나를 사용하여 이 메서드를 구현할 수 있습니다.
sh, ksh, bash 또는 csh 같은 Unix 셸
Perl 또는 스크립트를 사용하는 다른 프로그래밍 언어
Apache Ant 또는 다른 빌드 지향적인 도구
tf 프로그램 및 공급 인수를 시작할 수 있는 다른 모든 도구
내부 자동화
내부 자동화에서는 자동화 프로세스를 구동하고 명령줄을 인수로 전달되는 명령 파일을 해석하도록 tf 명령줄 도구를 구성합니다. @ 기호 바로 다음에 명령 파일의 로컬 경로를 공급하여 내부 자동화를 호출할 수 있습니다. 이 명령줄에 제공하는 모든 추가적인 인수는 명령 파일에서 명령하기 위해 위치 인수로 사용할 수 있습니다.
참고
표준 입력을 명령 파일로 처리하려면 뒤에 파일 이름이 없는 @ 기호(tf@)를 제공합니다. 입력 스트림은 플랫폼의 기본 인코딩과 문자 집합에 따라 텍스트로 해석됩니다.
다음 명령 파일은 파일의 지정된 버전을 가져와 해당 버전에 대한 자세한 기록 정보를 인쇄합니다.
# This line is ignored because it is a comment.
get "-version:%2" -force "%1"
history -format:detailed "-version:%2" "%1"
/home/john/get-and-history.tfc라는 명령 파일은 두 개의 위치 인수를 예상하므로 다음 예제처럼 실행할 수 있습니다.
tf @/home/john/get-and-history.tfc README.doc C5087
첫 번째 인수인 README.doc는 각 줄이 해석될 때 %1(으)로 대체됩니다. C5087은 %2(으)로 대체됩니다.
참고
대체 값(예를 들어, 파일 이름 또는 날짜 버전 사양)에 공백이 올 수 있기 때문에 명령 파일에서 두 개의 위치 인수는 큰따옴표로 둘러싸입니다.
명령 파일의 형식은 EBNF(Extended Backus-Naur Form)로 설명할 수 있습니다.
command file ::= { line } ;
line ::= comment line | blank line | action line , EOL ;
comment-line ::= "#" | "rem" , { ? any non-EOL character ? } ;
blank line ::= { ? any whitespace character ? };
action line ::= tf command , [ { white space , tf option } ] , [ { white space , tf free argument } ] ;
tf command ::= ? any tf command ?
tf option ::= ? any tf option ? | positional argument ;
tf free argument::= ? any tf free argument ? | positional argument ;
positional argument::= "%" , non-zero digit , [ { digit } ] ;
EOL ::= ? your platform's EOL character or sequence ?
white space ::= { ? any non-EOL whitespace character ? }
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
non-zero digit ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
tf command는 get, workfold 및 workspace 같은 유효한 tf 명령이 될 수 있습니다.
tf option는 -login, -profile 및 -format 같은 유효한 tf 옵션이 될 수 있습니다.
tf free argument는 서버 경로 및 로컬 경로 같은 tf에 사용 가능한 인수인 모든 문자열이 될 수 있습니다.
positional argument는 외부 tf 명령줄 인수에서 대체되는 텍스트의 자리 표시자입니다. 번호는 "%1"와 "%2" 같은 대체할 명령줄 인수의 인덱스에 해당하는 양의 정수입니다. %1은(는) 첫 번째 인수를 참조합니다. 위치 인수를 옵션으로 또는 사용 가능한 인수를 명령 다음에 어떤 순서로나 사용할 수 있습니다.
참고
공백이 있는 옵션 및 인수 주위에 큰따옴표를 사용합니다. 예를 들어, 레이블 지정자로 “-version:LRelease 2.1”을, 프리 인수로 “$/Inventory/Client Project/main.c”을, 공백을 포함하는 위치 인수로 "%1"을 사용하십시오. 큰 따옴표만 명령 파일에서 옵션 경계를 나타냅니다. 단일 인용 문자는 문자 그대로 해석됩니다. 동작 줄에서 리터럴 큰따옴표를 지정하려면 두 개의 이중 따옴표("")를 함께 사용해야 합니다. 명령 파일 내의 규칙을 인용 규칙은 사용자 셸이 명령 파일의 줄을 구문 분석하지 않으므로 사용자 셸을 사용하는 규칙과는 다를 수 있습니다.
두 가지 방법의 장단점
그렇다면 외부 또는 내부 자동화 중 어떤 방법을 사용해야 합니까? 각 메서드의 장단점을 살펴 보겠습니다.
외부 자동화 |
내부 자동화 |
|
장점 |
|
|
Cons |
|
외부 자동화보다 효율성이 떨어집니다. 그 이유는 다음과 같습니다.
|