1

私が開発しているプロジェクトは、CodeIgniterから構築されています。プロジェクトの主要部分は私が作成しているプラ​​イベートシステムですが、関連するすべての機能を取得するために、ソース管理に追加したいと思います。今はMercurialを使用しているので、hg initビット全体を実行したので、リポジトリを設定しました。

さて、私がやったことの1つは、このプロジェクトで使用するCodeIgniterのライブラリを作成することです。このライブラリを開いてみたいので、そのための別のリポジトリが必要です。

CodeIgniterライブラリの開発に慣れていない人のために、ここにリファレンスがあります:

application
  /config <- configuration files
  /libraries <- library logic in here

このプロジェクトの過程で、おそらくさらにいくつかのライブラリを開発する予定です。そのため、リポジトリをまとめずにアプリケーションフォルダにダンプすることはできません。

私がしたことはこれでした:

dev/ci/library <- library here
dev/project <- project here

これらのフォルダの両方に、リポジトリを作成しました。私がやりたいのは、プロジェクトリポジトリがライブラリリポジトリを自動的に参照するようにすることです。これにより、前に説明したように、プライベートリポジトリとパブリックリポジトリを持つことができます。

これを行う主な方法は、私が読んだことですが、サブリポジトリを使用することですが、ネストされたものの例しか見つけることができません(とにかく不明です)。svn:externalsのような別のリポジトリを参照させるにはどうすればよいですか?

4

2 に答える 2

3

正解です。Mercurialのサブリポジトリ(またはGitのサブモジュール)は、ネストされた組織に基づいています。
しかし、特定のケースでは、次のものが必要です。

  • 2つの別々のリポジトリ、
  • ネストされていません

両方の組織(あなたとネストされた「サブリポジトリ」)を調整する方法は、3つのリポジトリを持つことです。

  • 親リポジトリ(プライベートリポジトリにプッシュできるように、プライベートリポジトリ)
  • プロジェクト(プライベートリポジトリにプッシュできるように、プライベートプロジェクト)
  • ライブラリ(パブリックレポにプッシュできるように、パブリックライブラリ)

それは次のようになります:

/dev
  .hg (private repo)
  .hgsubs (declare the two nested repos 'project' and 'ci/library')
  project
    .hg (private repo for your project)
    config
    .hgignore (for ignoring anyhting from libraries)
    libraries (private directory, not version)
      (symlink to /dev/ci/library)
  ci
    library
      .hg (public repo 

そうすれば、次のことを維持できます。

  • 2つのリポジトリを必要に応じて分離します
  • あなたがそれらを残した正確な参照でそれらの2つのリポジトリを取り戻すことができるようにするための2つの間のリンク(すなわち、あなたはそれらのリポジトリのそれぞれを最後にプッシュしました)。
于 2010-12-27T15:46:07.470 に答える
0

Mercurial 1.3で実装された、手順は次のとおりです。

于 2010-12-27T15:21:47.763 に答える