バイナリとソースを含む.zipファイルにパッケージ化するオープンソースプロジェクトがあります。プロジェクトはCodePlexでホストされ、ソース管理としてTFSを使用します。プロジェクトをエクスポートして、すべてのソース管理バインディングを削除する方法がわかりません。そうすれば、ログインプロンプトを表示せずに、ローカルでソリューションを簡単に開くことができます。この機能はGitでのエクスポートと呼ばれますが、Teamで同じことを行う方法がわかりません。
4 に答える
このブログ投稿には、ソース管理フォルダーで実行でき、ファイルからソース管理バインディングを削除する次の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
}
ソース管理バインディング情報はVSプロジェクトおよびソリューションファイルの一部であり、削除するのは困難です。ただし、私が知っている2つのオプションがあります。
プロジェクトを「取得」し、ソースフォルダーを別の場所にコピー/移動してからソリューションを再度開くと、VSはソース管理バインディングの削除を提案します。
または、これをインプレースで行うには、VSでソース管理ソリューションを開き、[ファイル]/[ソース管理]/[ソース管理の変更]をクリックします。このダイアログには、各プロジェクトのバインドを削除する[バインド解除]ボタンがあります。
(警告:VS2010でテスト済み。使用しているバージョンがわからない。)
別の答えがあります。
プロジェクトを含むソリューションをある場所から別の場所にコピーして貼り付けましたが、新しい場所でソリューションを開こうとしても、ソース管理に接続するように求められません。
[ファイル]->[ソース管理]->[詳細設定]->[ソース管理の変更]に移動すると、バインドを解除する機能がありません。そこで、テキストエディタでソリューションファイルを開き、次のセクションを削除しました。
GlobalSection(TeamFoundationVersionControl) = preSolution
....
EndGlobalSection
動作しているようです。私はそれが誰かを助けることを願っています。
TFSは、バインドなしのソースコードのエクスポートをサポートしていません。Dan Puzeyが述べたように、ソース管理のコピーを作成して、ソース管理のバインディングを削除するだけです。
私の特定のプロジェクトでは、ファイルをコピーして、TFSに関連するものをすべて削除しました。これは、オープンソースプロジェクトでTeamCityで使用していた展開構成の一部として実行していました。
意味がわかり次第、このプロジェクトをGitに切り替える予定です。