2015-02-05 12 views
1

TfvcTemplate.12.xaml을 사용하여 TFS 2013 빌드 정의를 작성했으며 각 체크인시 트리거되도록 설정하고 작업 공간을 정리하지 않음. 빌드가 실행될 때 은 빌드가 실행될 때 특정 소스 파일을 소스 제어에서 수정합니다. 그때 체크인하면 이전에 확인, 내가받을 다음과 같은 오류시 빌드 시스템에서 수정 된 파일에 대한 변경 :가져 오기를 수행 할 때 TFS 2013 빌드 정의를 덮어 쓸 수 있도록 구성하려면 어떻게합니까?

Unable to perform the get operation because the file already exists locally 
Exception Message: One or more errors occurred while performing a Get operation. (type GetException) 
Exception Stack Trace: at Microsoft.TeamFoundation.Build.Workflow.Activities.SyncWorkspaceInternal.ThrowIfErrorsOccurred.Execute(CodeActivityContext context) 
    at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) 
    at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation) 

이 가능 TFS가 덮어 쓰기 할 때 함께 가져 오기를 할 얻을 "Team Foundation Version Control에서 소스 가져 오기"단계을 실행 하시겠습니까? 내 빌드 정의 수정하려면 소스 제어와 일치하지 않는 빌드 에이전트에서 수정 된 파일을 덮어 쓰고 내 빌드 정의를 설정하여 작업 영역을 정리하지 않으십시오.

TFS의 이전 버전에서 나는 TFSBuild.proj에 다음을 추가하여 그것을 할 수 있습니다 : 당신이 빌드 정의를 편집 할 때

<IncrementalBuild>True</IncrementalBuild> 
<GetOverwrite>True</GetOverwrite> 
+0

빌드의 일부로 체크인하는 것은 좋지 않습니다. 필요성을 설명해 주시겠습니까? –

+0

빌드는 컴파일하기 전에 디스크상의 일부 레거시 소스 파일을 사전 처리합니다. – canuckdownunder

답변

1
  1. 을 PowerShell 스크립트를 작성합니다.

    : 내용에 빌드 에이전트 (인스턴스 C의 \는 \ GetCodeGeneratedFiles.ps1가 구축)
    & "c:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\TF.exe" get "$Env:TF_BUILD_SOURCESDIRECTORY\*.*" /v:"$Env:TF_BUILD_SOURCEGETVERSION" /recursive /overwrite /noprompt 
    
  2. 업데이트 빌드 정의 사전 빌드 스크립트 경로가 PowerShell을 스크립트가되도록 (인스턴스 C를 위해 : \는 \ GetCodeGeneratedFiles.ps1를 구축)

때 빌드 R을 unsafe하면 작업 공간에서 대기중인 빌드에 지정된 버전까지 모든 파일 가져 오기가 수행됩니다. 그런 다음 팀 빌드 프로세스의 Get 단계가 실행될 때 로컬 작업 영역에 이미 있기 때문에 파일을 가져올 필요가 없습니다.

0

, 당신은 프로세스 탭을 볼 수 있습니다. 거기에는 일반적으로 빌드 정의가 수행되는 방식을 변경하는 옵션이 있습니다. 처음부터 올바른 파일을 얻을 수 있으므로 동일한 덮어 쓰기 문제가 없습니다. 당신은 이미 파일이있는 경우이 체크 파일로 대체합니다

+0

TfvcTemplate.12.xaml의 프로세스 탭에 Get (tf.exe/덮어 쓰기와 같은) 작업을 수행 할 때 덮어 쓰기를 설정하는 옵션이 없습니다. 이 프로세스는 이전 빌드에서 변경된 파일을 소스 제어에서 대체하지 않고 대신 "파일이 이미 로컬로 존재하기 때문에 가져 오기 작업을 수행 할 수 없습니다"라는 오류 메시지를 표시합니다. – canuckdownunder