문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

Team Foundation Server용 크로스 플랫폼 명령줄 클라이언트의 스크립팅

소스 코드 체크 인 및 체크 아웃 같은 작업을 자동화하시겠습니까? 외부 또는 내부 자동화를 사용하여 작업을 수행할 수 있습니다. 먼저 이러한 두 가지 자동화 모드에 대해 검토해 보겠습니다. 또는 장단점으로 직접 건너뛸 수 있습니다.

외부 자동화는 완벽하게 맞는 인수를 가진 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 commandget, workfoldworkspace 같은 유효한 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"을 사용하십시오. 큰 따옴표만 명령 파일에서 옵션 경계를 나타냅니다. 단일 인용 문자는 문자 그대로 해석됩니다. 동작 줄에서 리터럴 큰따옴표를 지정하려면 두 개의 이중 따옴표("")를 함께 사용해야 합니다. 명령 파일 내의 규칙을 인용 규칙은 사용자 셸이 명령 파일의 줄을 구문 분석하지 않으므로 사용자 셸을 사용하는 규칙과는 다를 수 있습니다.

그렇다면 외부 또는 내부 자동화 중 어떤 방법을 사용해야 합니까? 각 메서드의 장단점을 살펴 보겠습니다.

외부 자동화

내부 자동화

장점

  • tf 명령을 실행할 수 있을 뿐만 아니라 다른 명령도 실행할 수 있으므로 훨씬 융통성이 있습니다.

  • 간단합니다. 외부 프로세스 또는 언어에 익숙하다면 다른 명령줄 프로세스와 같은 방식으로 tf 명령줄 도구를 호출합니다.

  • 쉽게 디버깅할 수 있습니다. 예상대로 일부 명령이 실행되지 않으면 명령줄에서 문제 진단 명령을 변경할 필요가 없습니다.

  • 외부 메서드보다 빠릅니다. Java 가상 컴퓨터가 한 번만 로드되고 명령줄 도구에 서버 연결을 다시 사용할 수 있으므로 각 명령을 개별적으로 실행하는 경우 보다 빠르게 여러 명령을 명령 파일에서 실행할 수 있습니다.

Cons

  • 내부 자동화보다 느립니다. 실행하는 각 명령어에 대해 CPU는 Java 가상 컴퓨터 실행과 클라이언트 실행 준비를 위한 시간이 필요합니다.

  • 외부 프로세스는 오류를 감지해야 합니다. 종료 코드를 실행할 때마다 외부 프로세스를 테스트하지 않으면 프로세스 오류를 놓칠 수도 있습니다.

  • 프로그램이 더 번거로워질 수 있습니다. 외부 프로세스에서는 tf 명령줄 도구를 실행할 때마다 모든 관련 옵션을 제공해야 하며 인수는 특수한 따옴표 또는 이스케이프를 필요로 할 수도 있습니다.

외부 자동화보다 효율성이 떨어집니다. 그 이유는 다음과 같습니다.

  • 명령 파일에서는 tf 명령만 지정할 수 있으므로, tf 명령 사이에 다른 작업을 수행하고 싶은 경우 여러 명령 파일을 쓰고 각 작업을 실행해야 할 수 있습니다.

  • 발생하는 첫 번째 오류 조건에서 실행이 중지됩니다. 도구에서 모든 오류 조건을 강제로 건너뛰거나 무시할 수 없습니다.

  • 정상 또는 오류 출력을 다루는 것이 더 복잡하다는 것을 알 수 있습니다. 내부 자동화에 의해 도구를 실행하는 프로세스는 명령 파일의 어떤 줄이 일반 출력의 어떤 부분을 생성하는지 확인할 수 없습니다.

표시: