web-dev-qa-db-ja.com

Subversionに追加されていないファイルを検索する

次の問題が一般的になりつつあります。

  • 新しいファイル(通常は画像)を含むプロジェクトに取り組んでいる開発者が何人かいます
  • 誰もがすべてがチェックインされていると言い、開発を凍結します。私たちには知られていないが、チェックインされていない画像があります。ファイルはチェックアウトではなく新しいため、ユーザーは不足しているファイルに気付かないため、svnは問題なく表示されます。
  • コードがコンパイルおよびデプロイされます(申し訳ありませんが、QAチームはありません)
  • 翌日、クライアントは不足している画像について教えてくれます
  • CTOは私たちに暴動行為を読みます

注:画像パスはコードとデータベースの両方にあるため、使用されているすべての画像の完全なリストを取得するのは簡単ではありません。

私の望みは、展開前に全員が実行できる小さなC#プログラムを作成することです。プロジェクトディレクトリ(またはそのsubdir.sの1つ)内のどのファイルがSubversionに追加されていないかを調べたい。理想的には、無視リストに積極的に追加されたアイテムも除外したいと思います。

WindowsホストとクライアントでTortoiseSVNを使用しています。

追加されていないファイルをプログラムで検出するにはどうすればよいですか?

私がこれまでに見つけた最も近いものは thissvn status | grep -e ^?を使用すると言っていますが、これはUnixコマンドのように見えます。

18
Dinah

これには SharpSvn を使用して、次のように書くことができます。

SvnClient client = GetClient();

client.Status(workingCopyPath, (o, e) =>
{
    if(e.LocalContentStatus == SvnStatus.NotVersioned)
    {
        Console.WriteLine("Not versioned: " + e.FullPath);
    }
});

編集:これは、無視ファイルとsvn:ignoreプロパティも尊重します。

6
Sander Rijken
svn status | grep -e ^?

これはunixコマンドですが、Tortoiseからcommitを実行すると、疑問符が付いた新しいファイル、つまりsvnの制御下にないファイルを表示できると確信しています。

14
Ency

この質問はtortoisesvnとしてタグ付けされているので、あなたのチームはクライアントとしてTortoiseSVNを使用していると思います。 @ Joe Enos が示唆しているように、TortoiseSVNは、svn:ignoreのエントリと一致しないバージョン管理されていないファイルを表示します。チームはすでにTortoiseSVNでバージョン管理されていないファイルをチェックしているはずなので、別のツールを追加すると役立つのではないかと思います。

そうでなければ、C#プログラムは、SVN作業ディレクトリでバージョン管理されていないファイルを見つけるのはやり過ぎのようです。 @ Josh Kelley が示唆しているように、コマンドラインSVNクライアント(CollabNetまたは Slik SVN など)とgrepを使用できます。

Windowsコマンドラインで使用できる findstr コマンドを使用することもできます。

svn status | findstr "^?"
10
Jaime Soto

コードがコンパイルおよびデプロイされます(申し訳ありませんが、QAチームはありません)

これはここでの本当の問題ではありませんか?テストされていないコードをクライアントに送信する場合は、もちろん、問題を最初に発見したのはクライアントです。おそらく(この特定の問題を修正することに加えて)あなたがする必要があるのは、コードがコンパイルされてからクライアントに渡されるまでの間に、ビルドプロセスに少なくともいくつかの基本的な自動(または手動)機能テストを追加することです。

7
Jeremy Friesner

CollabNet Subversionコマンドラインクライアント をインストールしてから、そのsvnコマンドをサブプロセスとして実行し、その入力をプログラムにパイプして、?を持つ行を検索できます。最初の文字として(不明/ Subversionにチェックインされておらず、無視されていないことを示します)。 CollabNetのコマンドラインクライアントをTortoiseSVNと一緒に使用できます。

これはsvn status | grep -e ^?と同じことですが、Unixツールに依存しません。

または、 Cygwin をインストールして、すべてのUnixツールを自由に使用することもできます。

1
Josh Kelley

また、1つの設定を変更して、新しく追加されたファイルが変更されたフォルダーを表示することもできます。

設定->アイコンオーバーレイ->バージョン管理されていないアイテムのオーバーレイを表示

フォルダを右クリックして、TortoiseSVN-設定に移動します。 「アイコンオーバーレイ」をクリックします。右側のチェック-'バージョン管理されていないファイルは親フォルダを変更済みとしてマークします'

これはwindows7で動作し、他のOSでは試されません

0
Shirish Herwade