[解決済み] SVN: ファイルを「コミットしない」とマークする方法はありますか?
質問
TortoiseSVN で、あるファイルを ignore-on-commit チェンジリストに移動し、ツリー全体をコミットする際に、そのファイルへの変更がコミットされないようにすることはできますか?
svnコマンドラインツールを使って、そのようなことをする方法はありますか?
EDIT:を使うという提案をありがとうございました。
svn:ignore
しかし、それは私が探していたものとは全く違うものです。
svn:ignore
は、次のような影響を与えます。
svn add
&です。
svn import
. これは無視するファイル名のパターンのリストを与える。
すでにソース管理下にあるファイルがあるのですが、そのファイルに一時的な変更を加えて、後でソースツリー全体をコミットするときにコミットされないようにしたいのです。私は他にも多くの変更を行っているので、ツリーをコミットする前にそのファイルを元に戻すようにモニターにメモを貼り付けることもできますが、svn が自動的にそのファイルをスキップしてくれたら嬉しいですね。
解決方法は?
Subversionには、2016年2月/バージョン1.9現在、"do not commit" / "ignore on commit"の機能が組み込まれていません。この回答は、理想的でないコマンドラインによる回避策です。
OPにあるように、TortoiseSVNには"ignore-on-commit"というチェンジリストが組み込まれており、コミットからは自動的に除外されます。 コマンドラインクライアントにはこれがないので、これと同じ動作を実現するには複数のチェンジリストを使用する必要があります(注意点はあります)。 :
- コミットしたい仕事のためのもの[work]。
- 無視したいもの用[ignore-on-commit]をひとつ。
TortoiseSVN での前例があるので、私の例ではコミットしたくないファイルには "ignore-on-commit" を使っています。コミットするファイルには "work" を使用しますが、好きな名前を選ぶことができます。
まず、すべてのファイルを "work" という名前のチェンジリストに追加します。これは作業コピーのルートから実行する必要があります。
svn cl work . -R
これは作業コピーのすべてのファイルを再帰的に "work" という名前のチェンジリストに追加します。新しいファイルが作業コピーに追加されるとき、新しいファイルを明確に追加する必要がありますし、さもなければそれらは含まれません。第二に、もしこれをもう一度実行しなければならない場合、すべての "ignore-on-commit"ファイルを再度追加する必要があります。理想的ではありませんが、他の人がやっているように、自分自身の「無視」リストをファイルに保存して管理することも可能でしょう。
次に、除外したいファイルについて。
svn cl ignore-on-commit path\to\file-to-ignore
ファイルはひとつの変更リストにしか入れられないので、前回の "work" の追加後にこの追加を実行すると、無視したいファイルを "work" の変更リストから削除し、"ignore-on-commit" の変更リストに入れることができます。
変更したファイルをコミットする準備ができたら、コミットに "--cl work" を追加するだけです。
svn commit --cl work -m "message"
以下は、私のマシンでの簡単な例です。
D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'
Skipped 'src\java\com'
Skipped 'src\java\com\corp'
Skipped 'src\java\com\corp\sample'
A [work] src\java\com\corp\sample\Main.java
Skipped 'src\java\com\corp\sample\controller'
A [work] src\java\com\corp\sample\controller\Controller.java
Skipped 'src\java\com\corp\sample\model'
A [work] src\java\com\corp\sample\model\Model.java
Skipped 'src\java\com\corp\sample\view'
A [work] src\java\com\corp\sample\view\View.java
Skipped 'src\resource'
A [work] src\resource\icon.ico
Skipped 'src\test'
D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties
D:\workspace\trunk>svn status
--- Changelist 'work':
src\java\com\corp\sample\Main.java
src\java\com\corp\sample\controller\Controller.java
src\java\com\corp\sample\model\Model.java
M src\java\com\corp\sample\view\View.java
src\resource\icon.ico
--- Changelist 'ignore-on-commit':
M src\conf\db.properties
D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.
代替案としては、コミットしたいすべてのファイルを単に「作業用」チェンジリストに追加し、無視リストも維持しないことですが、これも大変な作業です。本当に、唯一のシンプルで理想的な解決策は、これがSVN自体に実装される場合です。Subversionのissue trackerに、この件に関する長年の課題があります。 SVN-2858 将来的に変更される可能性があります。
関連
-
[解決済み] svnadmin が認識されない
-
[解決済み] SVNエラー - 作業コピーではありません
-
[解決済み] TortoiseSVNでレポに接続できない
-
[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?
-
[解決済み] Subversionで部分的なチェックアウトは可能ですか?
-
[解決済み] あるファイルの以前のSVNリビジョンに戻すより良い方法?
-
[解決済み] アイテムをリビジョンに更新する vs リビジョンに戻す
-
[解決済み] SVNファイルの旧バージョンを表示するには?
-
[解決済み] あるSubversionのリポジトリから別のリポジトリに1つのフォルダを移動するにはどうしたらいいですか?
-
[解決済み] Git、Mercurial、Bazaarの相対的な長所と短所は何ですか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コマンドラインでSVNが動作しない
-
[解決済み] SVNエラー - 作業コピーではありません
-
[解決済み] SVNリポジトリURLの変更
-
[解決済み] Subversionで既にコミットされたログメッセージを編集するには?
-
[解決済み] 削除されたファイルの履歴を確認する
-
[解決済み] SVN: ファイルを「コミットしない」とマークする方法はありますか?
-
[解決済み] svn:トランクをブランチに置き換える
-
[解決済み] ローカルに存在しないファイルを全て削除するSVNコマンド
-
[解決済み] svn.exeは私のマシンのどこにあるのでしょうか?
-
[解決済み] Google CodeのSubversionリポジトリをGitHubにフォークして同期させる