2012-01-24 3 views
5

ローカルのgitリポジトリからSVNサーバへの変更をマージするのにgit svnを使用しています。しかし、git svn dcommitを発行すると、ソースツリーにある.gitignoreファイルを実際にコミットします。これは、SVNリポジトリをローカルで(SVNを使用して)チェックアウトした後でも、svn:ignoreプロパティを再帰的に設定して、無視するファイルの1つとして.gitignoreをリストし、そのプロパティをSVNに直接コミットすることです。.gitignoreファイルをSVNの外に保つことは可能ですか?

これは意図した動作ですか?バグ?誰かが.gitignoreをSVNの外に保つことを知っているということを回避する作業はありますか?

私のチームの非gitユーザーがこれらのファイルを参照して削除を開始することを知っていれば、次にrebase/dcommitに行くときにSVNに多くの不要なファイルが巻き込まれることになります。

答えて

8

.gitignoreファイルを使用する代わりに、Gitのリポジトリ固有の "除外"ファイルを使用できます。 "除外"ファイルは$GIT_DIR/info/excludeにあります($GIT_DIRはGitリポジトリディレクトリです)。通常は.gitです。このファイルの形式は、.gitignoreファイルの形式とまったく同じです。違いは、これがリポジトリ固有のファイルであることです。リポジトリにのみ存在します。それは他のリポジトリに伝播されません(例えば、git cloneまたはgit svn dcommitを介して)。

.gitignoreのファイルをSVNリポジトリから除外する方法はありませんが、Gitに保管してください。そうしようとすると、git-svnがSVNサーバーから取得したコミットとローカルコミットが一致しなくなります。言い換えると、あなたのローカルリポジトリの履歴は、SVNの履歴と調整できません。永続的に同期しないことになります。

+0

repo-ignoreについて知っておいて嬉しいです。また、私はそれらの厄介な.gitignoreファイルをSVNから守れない唯一の人でもありません! – ThaDon

+0

このファイルは複数形なしでは '$ GIT_DIR/info/exclude'と呼ばれるようです。 –

+0

@JannikJochem私はそれがちょうど私の部分の誤植だと思う。私が知る限り、「除外」ではなく「除外」という名前が常に付けられています。それを指摘していただきありがとうございます! :) –

関連する問題