2016-08-23 12 views
0

共有ファイルを管理してバージョン管理するための最良の方法を探したいと思います。現在はTortoiseHGでmercurialを使用していますが、これは1つのプロジェクトのすべてのファイルをバージョン管理するのに適していますが、メインリポジトリとは別にいくつかのファイルを扱いたいものです。共有ファイルの管理方法

私たちはcodeigniterを使用しています。プロジェクト間で共有したいモデル、ライブラリ、およびビューファイルがあり、これらのファイルは他のリポジトリの現在のプロジェクトとは別にバージョン管理されています何が最高になるかは分かりません)。

言い換えれば、私たちはプロジェクトAとプロジェクトBを持っています(2つ以上のプロジェクトがありますが、これは例です)。プロジェクトBの所有者からの一般的な機能(より良いログインシステム)である機能要求を取得すると、必要な変更を準備します。この変更を他のすべてのプロジェクトにアップロードします。ここでは、作業中の現在のプロジェクトでこれらの変更を作成します。これらのファイルは単独では動作しないため、他のビューやコントローラファイルをロードしてテストする必要があるため、これらの共有ファイルに対する独自のリポジトリを持つ他の3番目のプロジェクトを作成すると開発が難しくなります。

構造:

root/ 
    application/ 
    model/ 
     auth.php 
     other1.php 
     other2.php 
    library/ 
     mail.php 
     other1.php 

だから我々はauth.phpとmail.phpバージョン別に、other.php-Sよりも、私たちのプロジェクトのいずれかから他の場所にアップロードして、確認したい任意のアップデートがあります共有ファイルのこれらの分離されたリポジトリにあり、そこにある場合は、これらのファイルを自分のプロジェクトに更新します。

これまでに試したこと:私は水銀でサブリポジトリを作成しましたが、分かりましたが、私たちが私たちの共有ファイルを分離したフォルダに保持すると動作します。

root/ 
    .hg/ 
    ... 
    application/ 
    model/ 
     auth.php 
     other1.php 
     other2.php 
    library/ 
     mail.php 
     other1.php 
    subrepo-files/ 
    application/ 
     model/ 
     auth.php 
    library/ 
     mail.php 

それはより治療がより困難であるので、私は、あなたは私が言っているものを理解してほしい:subrepositoryで

は、我々はこれらの構造を得ました。ここでは、これらの共有ファイルを更新したときに、これらの共有ファイルを他のすべてのプロジェクトに手動でコピーします。はい、これはひどいです!共有ファイルの更新されたバージョンを他のプロジェクトにコピーすることを忘れてしまい、共有ファイルの他のプロジェクトで他の変更を作成して他のプロジェクトにコピーした場合、以前の更新が失われますしかし、遅すぎることに気がついたので、手動でデバッグする必要があります)。

私はこれのための最善の方法を見つけるために日のcupelを費やしましたが、私は私たちが欲しいものを正確に見つけませんでした。

答えて

0

私はそれを得ると思います。このようなことで私が過去にしたことは、Composerprivate Composer repositoriesです。 Composerを使用すると、共有コードを「モジュール」(またはそれを呼びたいもの)としてパッケージ化することができます。

たとえば、社内で使用する社内DBモジュールと設定モジュールがあります。それらのために私はDBモジュールまたはconfigモジュールを独立して管理し、更新し、それらが必要なプロジェクトにそれらを含めることができます。

本当にクールな部分は、あなたの作曲家のモジュールversionです。つまり、モジュールをロードする各アプリケーションは特定のバージョンのモジュールのみを取得します。モジュールを更新すると、他のアプリは引き続き以前のバージョンを使用しており、すべてが中断するわけではありません。

私は、これはどのようにモジュールを開発しテストするのかという問題を解決しないことを知っていますが、いくつかのオプションがあります。

Composerは、現在のアプリケーション内のvendor/ディレクトリにモジュールをロードします。アプリケーションにロードされたら、Composerがロードされたモジュールコードを、モジュールの区切られたプロジェクトファイルへのシンボリックリンクで置き換えるか、またはvendorディレクトリで変更し、変更をMercurialにプッシュすることができます。

また、MVCアプリケーションのpared-downテスト/擬似バージョンを作成し、そこでテストを自動化することもできます。

+0

この場合、/ ciファイル/フォルダ構造を並べ替える必要があります。これは私たちができることではありません。残念ながら:( – Twois

関連する問題