2011-06-28 12 views
0

私はpyスクリプト と言う簡単な継承階層を持っています。CatCoolCatFurryCatです。このファイルはSVNの2つの異なるフォルダの下に置く必要があります(CatモジュールはFurryCatのディレクトリにあり、CoolCatに同じでなければなりません)。 - >私は同じファイルをリポジトリに複製しています。私のsvnリポジトリに複製された同じファイルが必要です

https://svn/.../FurryCat 
    /FurryCat.py 
    /Cat.py 

https://svn.../CoolCat 
    /CoolCat.py 
    /Cat.py 

私たちは二度ファイルをコミットすることを忘れように、我々はすべての忙しい人であり、今あなたがなどのsvnログを観察する必要があるので、彼らは同期外れている見つけるために悪いです。私の経験上、Pythonコードをマージすることは、ほとんどの場合手動マージであることが分かりました。それを推測

イムは、いくつかの

svn propedit svn:externals ... 

ですか?

+0

適切な解決方法は、1つのコピーを保持し、親クラスに基本クラスを配置することです。 – fyr

+0

できません。そのファイル構造をreatainする必要があります。 – Hanan

答えて

0

私はsvn:externalsパスに行きました。これはあなたが作成する方法です。
基本的に、外部定義を作成するとファイルが2か所に表示されます。 粒子が一度に多くの場所に存在する量子論のようなものです。

これは私がこれで見つけた最高のチュートリアルです。 http://blog.kowalczyk.info/article/Short-tutorial-on-svn-propset-for-svnexternals-p.html

私が混乱していたのは、フォルダとファイルの間の定義の違いでした。

共通https://svn/path/to/common_folder

- >フォルダ「普通」のファイルで作成されました。

coolest_script_ever.py https://svn/deliciouscripts/awesome.py

- >ファイルが現在のディレクトリに入りました。

何が混乱していますか?私にとっては混乱していました。なぜなら、私はSVNを使用するときに「あなたは常にフォルダをチェックアウトします」ということに慣れていたからです。

は、一般的に、あなたが作業ディレクトリに

svn propdel svn:externals . 

を行う必要があります悪いsvn:externals定義を取り除くために。 しかし、初めての方が良いと思います。間違えた場合は元に戻してください。

1

1つのファイルのシンボリックリンク(またはWindowsのショートカット)を作成し、他のフォルダ内の実際のファイルを指し、そのシンボリックリンクをSVNにコミットできます。

しかし、この質問はDRY(自分自身を繰り返さないでください)プログラミングの原則の正確な理由です。あなたの問題は、絶対に必要でない限り、コードを複製しないようにすべき理由です。私は両方のクラスが継承するファイルが1つだけになるようにコードを構造化する方法があると確信しています。私は、両方の場所でファイルを管理するためにいくつかのkludgeではなく、この問題を解決する「正しい方法」と考えています。それは私にとっては悪い習慣のようです。

+0

ファイル構造が与えられており、変更できないと具体的に述べました。とにかくこれが好ましい方法です。 – Hanan

+0

与えられた場合は、SVNコミットフックを使用して同期することができます。 – fyr

関連する問題