0

CVS から SVN に移行することにしました。

プロジェクトの subclipse に新しいリポジトリをセットアップしました。セットアップを「終了」すると、最初のコミットが必要になり、バージョン管理用のファイルを選択するためのファイルのフラット リストが表示されます。

問題は、コミットしたくないバイナリ ファイルが何千も生成されていることです。

そのため、キャンセルをクリックしました。不要なファイルをすべて確認して選択を解除するには、丸一日かかるからです。迷惑なことに、無視したいファイルの親カテゴリをクリックすると、再帰的ではありません!

そこで、キャンセルをクリックしてから、プロジェクトの Eclipse ディレクトリ構造に移動し、無視するすべてのディレクトリに svn:ignore を手動で設定します。次に、再度コミットを試みると、すべてのファイルが再び表示されます - 無視は何もしていないようです。

誰かが私が間違っているかもしれないことを指摘できますか?

4

2 に答える 2

1

最初のコミットでは、コミットするつもりのないすべてのファイルを削除する小さなスクリプトを作成することをお勧めします (もちろん、バックアップは作成されます)。

その後、誤ってファイルをコミットしたことに気付いた場合は、次のことができます。

svn delete file

最初のチェックアウト時に、すべてのバイナリ ファイルを元にコピー (できれば再生成) します。これにより、ローカル リポジトリがリモート リポジトリと同期していないことを svn が認識します。

cd <Root of local repository>
svn status 

「追加予定」のアイテムがたくさん表示されます。親ディレクトリに移動しsvn:ignore、生成された各アイテムのプロパティを追加します。

cd build
svn propedit svn:ignore .

これでエディターが開きます (開かない場合は、環境変数 SVN_EDITOR を適切なエディターに設定する必要があります)。次に、追跡されていないことを svn が認識するエントリを追加できます。

(in the ignore property editor)

target
build
image*
*.o

(and so on)

ファイルを保存すると、次のコミットのためにステージングされます。の後続の実行でsvn statusは、これらのファイルは「追加が必要」と表示されなくなりますが、ディレクトリは「コミットが必要です (ディレクトリのリビジョンです)」と表示されます。

于 2013-04-08T14:52:07.147 に答える
0

すぐに脇に

したがって、レポを作成してプロジェクトを共有するためにSubclipseのどの機能を使用していたのか正確にはわかりません。Eclipse SVNレポビューを介してファイルベースのレポのように作成し、共有しようとしたと仮定していますそれからそれにコミットします。あなたの問題は解決したようですが、ここに回答を追加したかったのは、この投稿に出くわして、一般的にSVNでも初期コミットを処理するという同じ問題に対する回答を探していて、探している他の人に助けを提供したかったからです助けのために。

はじめに

最初に、SVN でレポを開く処理の多くのオプションを見逃す可能性があるため、最初のコミットのためだけに、このような IDE 拡張機能を使用しないことをお勧めします。個人的には、SVN のコマンド ライン形式が非常に気に入っていますが、TortoiseSVN は GUI に適したオプションです。

ローカルのファイルベースのリポジトリを作成する場合でも、SVN サーバーに接続する場合でも、以前にバージョン管理されていないプロジェクトでの最初のコミットをより適切に制御したい場合は、これを行うための一般的なワークフローとして最適なものを見つけました。

保存先のリモート フォルダーを作成します。

コマンドラインでは、これは次のようになります。

$> svn mkdir your-url-scheme://your-site-address.domain/path/to/repo/example-directory

または、TortoiseSVN でリポジトリを参照用に開き、右クリックして [新しいフォルダーの作成] を選択します。

これにより、次のステップでチェックアウトする SVN リポジトリ内の場所が提供されます。

すでに開始されているプロジェクトへのチェックアウト

チェックアウトには、リポジトリに新しく作成された空のフォルダーを必ず使用してください。SVN では、実際にはチェックアウトするフォルダーを空にする必要はありません。これは、実際に非常に柔軟であり、正しく使用すればディレクトリの一部をかなり簡単に含めることができる重要な部分です。

ここで、この空のフォルダーを、既に開始されているプロジェクトのルート フォルダーにチェックアウトします。これにより、コミットが行われることなく、プロジェクトがこのフォルダーの作業コピーに追加されます。コマンドは次のとおりです。

$> svn co your-url-scheme://your-site-address.domain/path/to/repo/example-directory /your/projects/root/

「co」はチェックアウトの略です。Tortoise svn では、空の repo フォルダーを右クリックして [checkout...] を選択し、プロジェクト ルートを選択します。

無視を設定してコミットする

最後に、次のコマンドを使用して、他のファイルをツリーに追加する前に、特定のファイルに無視を簡単に設定できます。

$> svn propset svn:ignore file-or-directory-to-ignore

無視されていないすべてのディレクトリとファイルを追加するには、次のようにします。

$> svn add * --force

この場合、強制は技術的に不要ですが、完全な再帰が保証されます。また、TortoiseSVN を使用している場合は、ファイル エクスプローラーでこれらすべてを実行できます。または、この時点で IDE 拡張機能を使用してこれを実行することもできます (コミットのためにファイルを一括追加する前に、必要なすべてのファイルを必ず無視してください)。左は、新しく追加されたファイルをリポジトリに確実にコミットすることであり、ソース管理で稼働しています:)

このメソッドをここに追加したのは、このメソッドを使用すると、誰も持ち歩きたくない臭いバイナリの不要なコピーを回避できるからです。

于 2020-01-20T06:00:30.117 に答える