2012-04-05 3 views
9

바이너리와 소스가 포함 된 .zip 파일에 패키지하려는 오픈 소스 프로젝트가 있습니다. 프로젝트는 CodePlex에서 호스팅되며 TFS를 소스 컨트롤로 사용합니다. 모든 소스 제어 바인딩을 제거하기 위해 프로젝트를 내보내는 방법을 모르겠습니다. 그렇게하면 사람들은 로그인 프롬프트를받지 않고도 쉽게 솔루션을 로컬에서 열 수 있습니다. 이 기능은 Git에서 내보내기라고 불리지 만 팀에서 같은 작업을 수행하는 방법을 잘 모르겠습니다.TFS에서 언 바운드 솔루션 얻기

답변

11

This blog post는 소스 제어 폴더에서 실행 할 수 있으며 파일에서 소스 제어 바인딩을 제거합니다 다음과 같은 파워 쉘 스크립트가 포함되어 있습니다.

프로젝트를 한 위치에서 다른 위치로 복사하여 붙여 넣을 때 새로운 위치에서 열려고하면 소스 제어에 연결하라는 메시지가 표시되지 않습니다.

파일 -> 소스 제어 -> 고급 -> 소스 제어 변경을 선택하면 바인딩 해제 기능이 없습니다. 텍스트 파일에서 솔루션 파일을 열고 다음 섹션을 제거했습니다.

GlobalSection(TeamFoundationVersionControl) = preSolution 
.... 
EndGlobalSection 

나는 그것이 누군가를 돕기를 바랍니다.

+0

Woot Woot! 이 스크립트를 사용하여 TFS 소스 제어 도구를 제거했습니다. – hylander0

+0

다음과 같은 비판은 MS를 대상으로합니다 : 이것은 내장 기능이어야합니다.그러한 고정 장치가 필요하지 않습니다. –

+0

대단한 스크립트! 감사 –

5

소스 제어 바인딩 정보는 VS Project 및 솔루션 파일의 일부이며 제거하기 어렵습니다. 그러나 내가 아는 두 가지 옵션이 있습니다.

프로젝트를 "가져오고"원본 폴더를 다른 위치로 복사/이동 한 다음 솔루션을 다시 열면 VS에서 소스 제어 바인딩을 제거합니다. .

다른 방법으로이 작업을 수행하려면 VS에서 소스 제어 솔루션을 연 다음 파일/소스 제어/소스 제어 변경을 클릭하면됩니다. 이 대화 상자에는 각 프로젝트의 바인딩을 제거하는 "바인딩 해제"버튼이 있습니다.

(경고 : VS2010에서 테스트, 사용중인 버전을 확인하지.)

+1

저는 TFS 2010을 사용하고 있습니다. 바인딩 해제 문제 중 하나는 생성 된 obj/bin 및 폴더를 복사하지 않으려는 것입니다. –

+0

글쎄, 얻을 수 있고 바인딩을 해제하기 전에 빌드 할 수 없습니다. 단일 기계에서 두 번째 작업 공간을 설정 한 다음이를 바인드 해제에 사용할 수 있습니다. (똑똑한 스크립팅을 사용하면 쉽게 자동화 할 수 있습니다.) –

+1

복사하기 전에 항상 제거 할 수 있습니다. Visual Studio에서 Clean으로 일부 파일을 가져올 수 있지만 확실하게하려면 파일 탐색기에서 bin 및 obj에 대한 재귀 적 삭제를 수행하는 오른쪽 클릭 옵션을 추가하는이 명령을 추가 할 수 있습니다. 이 예제는 .svn 폴더 용이지만 원하는대로 쉽게 적용 할 수 있습니다. http://weblogs.asp.net/jongalloway//shell-command-remove-svn-folders –

0

TFS 바인딩없이 소스 코드를 수출 지원하지 않습니다. Dan Puzey가 언급했듯이 소스 컨트롤의 복사본을 만들고 소스 컨트롤 바인딩을 제거하면됩니다.

내 프로젝트의 경우 단순히 파일을 복사하고 TFS와 관련된 모든 것을 삭제했습니다. 오픈 소스 프로젝트를 위해 TeamCity와 함께 사용했던 배포 구성의 일부로이 작업을 수행했습니다.

이 프로젝트를 이해하자마자 Git으로 바꿀 계획입니다.

# Remove unnecessary files 
get-childitem . -include *.vssscc,*.user,*.vspscc,*.pdb,Debug -recurse | 
%{ 
    remove-item $_.fullname -force -recurse 
} 

# Remove the bindings from the sln files 
get-childitem . -include *.sln -recurse | 
%{ 
    $file = $_; 
    $inVCSection = $False; 
    get-content $file | 
    %{ 
     $line = $_.Trim(); 
     if ($inVCSection -eq $False -and $line.StartsWith('GlobalSection') -eq $True -and $line.Contains('VersionControl') -eq $True) { 
      $inVCSection = $True 
     } 
     if ($inVCSection -eq $False) { 
      add-content ($file.fullname + '.new') $_ 
     } 
     if ($inVCSection -eq $True -and $line -eq 'EndGlobalSection') { 
      $inVCSection = $False 
     } 
    } 
    mv ($file.fullname + '.new') $file.fullname -force 
} 

# Remove the bindings from the csproj files 
get-childitem . -include *.csproj -recurse | 
%{ 
    $file = $_; 
    get-content $file | 
    %{ 
     $line = $_.Trim(); 
     if ($line.StartsWith('<Scc') -eq $False) { 
      add-content ($file.fullname + '.new') $_ 
     } 
    } 
    mv ($file.fullname + '.new') $file.fullname -force 

} 
0

여기 대안 대답 :

관련 문제