2009-05-21 7 views
51

リポジトリ全体に無視を伝播させることなく、1つのクライアント上のSubversionのファイルに対する変更を無視することはできますか?Subversion:1つのクライアント上でローカルにファイルに対する変更を無視する

私が扱っている特定の問題は、私がプロジェクトをチェックアウトし、既にリポジトリの一部であるMakefileを含むたくさんのファイルを変更したことです。今私が取り組んでいる環境はグループの残りの部分とは異なります。私は、Makefilesへの変更を自分のマシン上でローカルに残し、コミットしないことを望みます。

しかし、私はsvn:ignoreを設定したくありません。なぜなら、そこにmakeファイルを保持することが重要ですが、リポジトリに無視をコミットすると思うからです。

+4

基本的に、間違った問題を解決しようとしていると思います。両方の環境で正常に動作するようにMakefileを変更しないでください。 –

+22

Nicholasは、fuadが自分の問題に対する最良のアプローチを使用していないとしても、あなたの作業コピーにのみ適用される無視する正当な理由があると確信しています。 – allyourcode

+7

私はallyourcodeに同意します。開発者(svnのユーザ)は基本的な原則を変更する特権や希望を持っていないかもしれません。私はこの問題の解決法も望んでいます。私たちは、リポジトリにチェックインされた環境プロパティファイルを持っています。これらをローカルで変更すると、チェックイン時に手動でチェックを外す必要があります。私がそれらのチェックを外すのを忘れるまで、それは時間の問題です。私は、これらのファイルはレポに載せてはならないということに同意しますが、私はその決定を下す権限がありませんので、本当に回避策が必要です。 – andersonbd1

答えて

-3

svn exportを使用してファイルをエクスポートし、バージョン管理下にはないようにします。

http://svnbook.red-bean.com/en/1.0/re10.html

編集:私は、これはディレクトリ毎に行われなければならないと考えているので、あなたはややあなたのファイルを再編成する必要があると思いますが。

私は現時点でこれをテストすることはできませんが、ここでスパースなチェックアウトが役立つでしょうか?

http://svnbook.red-bean.com/nightly/en/svn.advanced.sparsedirs.html

+0

まだ動作せず、依然としてリポジトリの一部であり、変更されたものとして表示されます。 – fuad

+1

バージョン管理されたディレクトリ内にファイルをエクスポートすることはできません。 –

+0

なぜこれが大いに投票されたのか分かりません。これは、他の解決策ではない多くの状況で機能します。私は2つの余分な要件があったので、最も顕著なのは私のために働く。 1)No TortoiseSVN(私はOS Xに入っている)2)変更リストのために自分の習慣を調整したくない。 編集:バージョン管理されたディレクトリbtwの内部でテストされ、作業しています。 "svn update .set-depth = empty"で指定されたディレクトリを(ディレクトリ内から)削除してから、 "svn export --force svnrepopath/directory"で再度チェックアウトする必要があります。 – radicaledward101

1

私は考えることができる最も近い安全な解決策は、個人的なブランチを使用することです。

+1

これはどのように役立ちますか?あなたがトランクに戻ってマージするときは、別の(悪い?)問題があります:無視したいファイルをマージしないでください。 – allyourcode

+1

自分の個人的な変更を自分のブランチにコミットすることができます。メッセージには「マージしない」というメッセージが表示され、マージ時にそのメッセージが表示されます。そのリビジョンに既にマージされたマークを付けることもできます。これにより、偶発的なマージを防ぐことができます。 私はチェンジリストについて知らなかったし、その目的のためにブランチよりもはるかに優れています。 – Gleb

10

あなたがSubversionの1.5.xの以降を使用する場合はチェンジ使用することができます。

svn cl COMMIT /path/to/project/* 

svn cl NOT_COMMIT /path/to/project/Makefile 

注:2番目のコマンドでMakefileのが最初チェンジから削除されます。警告を無視することができます。

2番目のチェンジリストをコミットしないでください。

を経由してコミットします:

svn ci --cl COMMIT -m"<LOG MESSAGE HERE>" 

重要: あなたが--clオプションを使用せずに、すべての変更は、SVNの多くの側面と同様に

+1

svn clは、チェンジリストへのディレクトリの追加をサポートしていないため、適切なオプションではない可能性があります。あなたがコミットしたいと思っているディレクトリがsvn add'edである場合、これは問題です。 – allyourcode

+2

チェンジリストは便利だと思われますが、実際にはここでは適用されません。それは別のユースケースです。これらのコマンドは、デフォルトでコマンドがチェンジリストにあったファイルを無視した場合に有効です。これは本当に便利です。しかし、私が間違っていない限り、それはどのように動作するのではありません。コマンドにチェンジリストを指定しないと、チェンジリストが存在しないかのように動作しますが、正しいのでしょうか?したがって、チェンジリストがディレクトリをサポートしても、それは理想的な解決策ではありません。チェックインしたいファイルを手動でチェンジリストに移動する必要があります。私はむしろチェックインしたくないファイルを手動でマークするだけです。 – andersonbd1

38

をコミットされますコミットした場合、カメは本当にそれを作ります簡単です。実際には、私は亀が実際に体系的な方法で既存のsvn機能を使用することによって機能を追加すると考えています。私はこの答えが窓だけであることを理解していますが、おそらくそこの人々のうちのいくつかは私のようであり、まだ窓を使用しています。 "Check for Modifications"ポップアップであなたのファイルを単に右クリックし、 "Changelistに移動" - > "無視してコミットする"を選択します。今では、亀を使ってチェックインすると、変更をさまざまな変更リストに分割するので、少なくともコミットするものとコミットしたくないものを視覚的に指示できます。

+3

ニース!ファイル(とフォルダ)は変更されたまま表示されます。 – Loda

+0

はい、同じ問題が発生しています。これは、偶発的な更新/コミメリティに対する防御です。 – ArtB

+2

前述したように、これはファイルが変更されたことを示す以外は完全です。しかし、私がコミットするたびにこれらのファイルをすべてチェック解除する必要があります。この機能のコマンドラインバージョンの –

関連する問題