2012-04-05 4 views
9

バイナリとソースを含む.zipファイルにパッケージ化したいオープンソースプロジェクトがあります。プロジェクトはCodePlexでホストされ、TFSをソースコントロールとして使用します。私はどのようにすべてのソース管理バインディングを削除するプロジェクトをエクスポートするか分からない。そうすれば、人々は簡単にログインプロンプトを表示せずにローカルでソリューションを開くことができます。この機能はGitのExportと呼ばれていますが、Teamで同じことをする方法がわかりません。TFSからアンバウンドソリューションを入手する

答えて

11

This blog postは、ソース管理フォルダ上で実行することができ、次のPowerShellスクリプトが含まれており、ファイルからソース管理のバインディングを削除します:

# 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

Woot Woot!私はこのスクリプトを使って、TFSのソース管理を良くするようにしました。 – hylander0

+0

次の批判はMSに向けられています:これは組み込み機能であるべきです。このようなロックインは必要ありません。 –

+0

恐ろしいスクリプト!ありがとう –

5

ソースコントロールのバインディング情報は、VSプロジェクトおよびソリューションファイルの一部であり、削除することは困難です。しかし、私が知っている2つの選択肢があります:

プロジェクトを "取得"した場合、ソースフォルダを別の場所にコピー/移動し、ソリューションを再度開くと、VSはソース管理バインディングを削除します。

これを行うには、VSでソース管理ソリューションを開き、[ファイル/ソース管理/ソース管理の変更]をクリックします。このダイアログには、各プロジェクトのバインディングを削除する「バインド解除」ボタンがあります。

(警告:VS2010上でテストされ、あなたが使用しているどのバージョンかわからない。)

+1

私はTFS 2010を使用しています。バインドを解除するだけの問題の1つは、生成されたobj /およびbin/foldersのコピーを避けたいということです。 –

+0

あなたは取得することができ、バインドを解除する前にビルドすることはできません。 1台のマシンに2つ目のワークスペースを設定して、バインド解除に使用することは可能です。 (巧妙なスクリプティングのほんの一部が、おそらくそれを十分に簡単に自動化するでしょう。) –

+1

あなたはコピーする前にそれらをいつもきれいにすることができます。 Visual StudioでCleanを実行するといくつかのファイルが取得されますが、確かめたい場合は、このコマンドを追加して、ファイルエクスプローラで右クリックオプションを追加して、binとobjの再帰的な削除を行います。この例は.svnフォルダ用ですが、必要に応じて簡単に変更できます。 http://weblogs.asp.net/jongalloway//shell-command-remove-svn-folders –

0

TFSが結合することなく、ソースコードのエクスポートをサポートしていません。 Dan Puzeyが述べたように、ソースコントロールのコピーを作成し、ソースコントロールバインディングを削除するだけで済みます。

私の特定のプロジェクトでは、単にファイルをコピーし、TFSに関連するものはすべて削除しました。私はこれを、オープンソースプロジェクトのTeamCityで使用していた配置構成の一環として実行していました。

私はこのプロジェクトをGitに切り替えるつもりです。

0

ここで代替答えがあります。

ソリューションをある場所から別の場所にコピーして貼り付けて、新しい場所で開くときにソース管理に接続するように求められません。

「ファイル」 - >「ソース管理」 - >「詳細」 - >「ソース管理の変更」を選択すると、バインド解除機能はありません。だから、私はテキストエディタでソリューションファイルを開き、次のセクションを削除しました:

GlobalSection(TeamFoundationVersionControl) = preSolution 
.... 
EndGlobalSection 

と思われます。私はそれが誰かを助けることを望む。

関連する問題