次の問題が一般的になりつつあります。
注:画像パスはコードとデータベースの両方にあるため、使用されているすべての画像の完全なリストを取得するのは簡単ではありません。
私の望みは、展開前に全員が実行できる小さなC#プログラムを作成することです。プロジェクトディレクトリ(またはそのsubdir.sの1つ)内のどのファイルがSubversionに追加されていないかを調べたい。理想的には、無視リストに積極的に追加されたアイテムも除外したいと思います。
WindowsホストとクライアントでTortoiseSVNを使用しています。
追加されていないファイルをプログラムで検出するにはどうすればよいですか?
私がこれまでに見つけた最も近いものは thissvn status | grep -e ^?
を使用すると言っていますが、これはUnixコマンドのように見えます。
これには SharpSvn を使用して、次のように書くことができます。
SvnClient client = GetClient();
client.Status(workingCopyPath, (o, e) =>
{
if(e.LocalContentStatus == SvnStatus.NotVersioned)
{
Console.WriteLine("Not versioned: " + e.FullPath);
}
});
編集:これは、無視ファイルとsvn:ignore
プロパティも尊重します。
svn status | grep -e ^?
これはunixコマンドですが、Tortoiseからcommitを実行すると、疑問符が付いた新しいファイル、つまりsvnの制御下にないファイルを表示できると確信しています。
この質問はtortoisesvn
としてタグ付けされているので、あなたのチームはクライアントとしてTortoiseSVNを使用していると思います。 @ Joe Enos が示唆しているように、TortoiseSVNは、svn:ignore
のエントリと一致しないバージョン管理されていないファイルを表示します。チームはすでにTortoiseSVNでバージョン管理されていないファイルをチェックしているはずなので、別のツールを追加すると役立つのではないかと思います。
そうでなければ、C#プログラムは、SVN作業ディレクトリでバージョン管理されていないファイルを見つけるのはやり過ぎのようです。 @ Josh Kelley が示唆しているように、コマンドラインSVNクライアント(CollabNetまたは Slik SVN など)とgrep
を使用できます。
Windowsコマンドラインで使用できる findstr
コマンドを使用することもできます。
svn status | findstr "^?"
コードがコンパイルおよびデプロイされます(申し訳ありませんが、QAチームはありません)
これはここでの本当の問題ではありませんか?テストされていないコードをクライアントに送信する場合は、もちろん、問題を最初に発見したのはクライアントです。おそらく(この特定の問題を修正することに加えて)あなたがする必要があるのは、コードがコンパイルされてからクライアントに渡されるまでの間に、ビルドプロセスに少なくともいくつかの基本的な自動(または手動)機能テストを追加することです。
CollabNet Subversionコマンドラインクライアント をインストールしてから、そのsvn
コマンドをサブプロセスとして実行し、その入力をプログラムにパイプして、?
を持つ行を検索できます。最初の文字として(不明/ Subversionにチェックインされておらず、無視されていないことを示します)。 CollabNetのコマンドラインクライアントをTortoiseSVNと一緒に使用できます。
これはsvn status | grep -e ^?
と同じことですが、Unixツールに依存しません。
または、 Cygwin をインストールして、すべてのUnixツールを自由に使用することもできます。
また、1つの設定を変更して、新しく追加されたファイルが変更されたフォルダーを表示することもできます。
設定->アイコンオーバーレイ->バージョン管理されていないアイテムのオーバーレイを表示
フォルダを右クリックして、TortoiseSVN-設定に移動します。 「アイコンオーバーレイ」をクリックします。右側のチェック-'バージョン管理されていないファイルは親フォルダを変更済みとしてマークします'
これはwindows7で動作し、他のOSでは試されません