1

Mercurialリポジトリにいくつかの大きな変更を加えようとしています。ラストリゾートの機能を使用するので、私は愚かなことをしていないというアドバイスと安心を探しています。

わたしはどこにいますか:

これらすべてのファイルの完全な履歴を持つMercurialリポジトリがあります。

/source
    /secret_subsystem
    /unclassified_subsystem
    /common_files       

ソースはMercurialリポジトリです。シークレットサブシステムフォルダには、社内に保持したい知的財産であるコードが含まれています。未分類のサブシステムフォルダには、保守のためにサードパーティにアウトソーシングするコードが含まれています。共通ファイルフォルダには、両方のサブシステムが依存するコードが含まれています。所有権は保持しますが、第三者と共有したいと考えています。

もちろん、リポジトリ全体をサードパーティの会社にプッシュすることはできません。サードパーティはあまりにも多くを見るでしょう。

私がなりたい場所:

サブリポジトリを 読んだ ので これ は私がする必要があると思うところです:

3つのサブリポジトリ(secret_subsystem、unclassified_subsystem、common_files)があります。この推奨事項により、/sourceレベルに他のファイルがないことを確認してください。

アウトソーサーに、自分のマシンのソースレベルで新しいリポジトリと、対応する2つのサブリポジトリを作成してもらいます。

unclassified_subsystemとcommon_filesをアウトソーサーにプッシュし、必要に応じてunclassified_subsystemをプルバックし、必要に応じて新しいcommon_filesリポジトリーをプッシュします。

履歴の維持:

すべてのサブシステムについて、可能な限りコミット履歴を維持したいと思います。

これを行うには、サブリポジトリごとに1回ずつ、hgconvertextensionコマンドを3回実行します。各サブリポジトリに属する​​ファイルのみにフィルターをかけます。また、ファイルを./common_files/foo.pyから./foo.pyに移動するためにファイル名をマップする必要がある場合もあります(たとえば)。

私の質問:

1)リポジトリをサブリポジトリに分割することは、セキュリティを実装するための合理的な方法です。サードパーティは一部のファイルしか表示および編集できないということですか?

2)hg convert履歴を維持しながら、既存のリポジトリからサブリポジトリを作成するための合理的な方法を使用していますか?

3)hg convertのフィルターは(a)フィルターされたリポジトリにないファイルに関するすべてのコミットメッセージを取り除きますか?フィルタリングされたリポジトリにないファイルのすべての差分を除外しますか?

別の暗黙の質問があります:私は傷ついた世界に向かっていますか?もしそうなら、私は単にファイル履歴の保持をあきらめるか、あるいはそれらを別々のリポジトリにして、リポジトリ間のコミットを忘れます。

4

1 に答える 1

1

私はこれまでサブリポジトリを使用していませんが、2)と3)に答えることができます:

2)はい、合理的に聞こえます。

3)はい。

ちょうど2日前に同様の質問がありました:Mercurialリポジトリを完全な履歴を持つサブリポジトリに変換します(hg log -fなど)

于 2012-06-22T08:57:01.267 に答える