2011-01-26 12 views
0

指定したファイル(パス)がリポジトリにコミットするのを防ぐことはできますか?ファイルをリポジトリにアップロードしないようにする方法は?

例えば、somepath/database_config.phpはコミットできません。

私はsvn:ignoreプロパティを使用しようとしましたが、リポジトリではなく作業コピーに対してのみ機能するようです。

私はこの機能についてsvnbook.red-bean.comを読んだことがありますが、私の脳は本当に私が望むようにうまくいかない理由を理解できません。

+0

「svn:ignore」は必要な処理を行う必要があります。正確に防止したいことを明確にすることはできますか? –

+0

リポジトリ内のファイル名にsvn:ignoreを設定しようとすると、 ''非ローカルターゲット 'https://example.com/sample_path/config'にプロパティを設定するとベースリビジョンが必要になります " – Azat

+0

リポジトリからチェックアウトされたローカルバージョンのpropset。私はあなたがreposで直接設定できるとは思わない。 – yvoyer

答えて

1

svn lockコマンドを使用して、特定のファイルまたはパスがリポジトリ内で変更されないようにすることができます。そのため、からのファイルがコミットされないようにするには、単に空のファイルをコミットするか(または「このファイルをコミットしないでください - ローカルマシン上でのみconfigを実行する」)、ローカルでファイルを変更します必要な内容を含めること。

ファイルをロックしたら、他の人がロックやファイル自体を変更するのを制限できますが、開発者が明らかにロックしようとしているファイルを操作していると、それらを叩き、そのリポジトリへのすべての書き込みアクセスを削除することを考えてください。

詳細は、manual entryおよびmore detailed documentationを参照してください。

+0

とにかく、誰かがこのファイルを_forced_ロック解除する能力を持っているでしょうか? – Azat

+0

ちょっと、Jeffがhttp://stackoverflow.com/questions/234075/what-is-your-best-programmer-jokeを削除したので、私は元に戻して移行しません。あなたが本当に気にしているなら、私はメタで尋ねるでしょう。 – Will

+0

誰かが(私の場合でも)何らかのファイルをロックした場合、作業コピーからリポジトリへの他の変更をコミットすることはできません。 – Azat

3

FYI:svn:ignoreは、無視するファイルがリポジトリにない場合にのみ機能します。

リポジトリに設定ファイルを追加するときに行うことは、リポジトリに保存されるテンプレートファイルを作成し、各開発者固有の設定ファイルを無視することです。 コードをチェックアウトする人は、.template拡張子を持たないテンプレートの名前を変更し、ローカル設定をそこに置く必要があります。

こうして、すべての開発者は、誰にも影響を与えることなく、異なる構成を持つことができます。

すなわち: テンプレートファイル:database_config.php.template

$config = array(
    'host'  => 'XXXX', 
    'db'  => 'XXXX', 
    'user'  => 'XXXX', 
    'password' => 'XXXX', 
); 

設定ファイル:あなたはこれらのsvnコマンドはリポジトリに追加することになるだろうdatabase_config.php

$config = array(
    'host'  => 'XXXX', 
    'db'  => 'XXXX', 
    'user'  => 'XXXX', 
    'password' => 'XXXX', 
); 

// Add the template 
svn add database_config.php.template 
// Ignore the config file used by the system (Should not be in repository) 
svn propset svn:ignore "config.php" . 
svn commit 
+0

'svn propset svn:ignore'は各開発者が行うべきですか? – Azat

+0

@Azat、いいえ、テンプレートファイルを追加したディレクトリで一度だけ実行します。無視はそれ以降の皆さんに効果的です。 'svn status'には決して現れません。 – yvoyer

+0

私はリポジトリのディレクトリでそれをやろうとしますが、svnは彼に "基本リビジョンが必要です"と伝えます。 – Azat

関連する問題