2

いくつかの機密ファイルとディレクトリを含むアクティブなプロジェクトがあります。簡単な UI 作業を外部の請負業者に依頼したいと考えています。ただし、請負業者に一部のディレクトリやファイルへのアクセスを許可したくありません。私のプロジェクトは Bitbucket で mercurial を使用しています。

プロジェクトをクリーンアップし、変更をコミットするためのアクセスを彼に与える最良の方法は何ですか? 新しいリポジトリにフォークすることを考えましたが、彼にアクセスさせたくないディレクトリを削除することを心配しています。

元の変更セットに表示されないように削除するにはどうすればよいですか? メインリポジトリのディレクトリを削除せずに、彼のリポジトリをマージするにはどうすればよいですか? フォークは行く方法ですか?

4

2 に答える 2

3

当然、リポジトリは、その整合性をセルフチェックするために、その履歴全体にアクセスする必要があります。リポジトリの一部を選択的に非表示にする方法がわかりません(ACL拡張機能がありますが、書き込みアクセス専用です)。

あなたの場合、私は

  1. すべての機密情報が削除された新しいリポジトリを作成します(そのタスクには変換拡張機能を使用します)。
  2. 次に、外部の人にそのリポジトリを操作させます。
  3. 彼の作業が終了したら、彼のリポジトリを元のリポジトリのクローンにプルし(-f無関係のリポジトリを強制的にプルするために使用)、
  4. 彼の最初のチェンジセットとそのすべての子を元のリポジトリのヘッドにリベースします。
  5. 最後に、リベースされたヘッドを元のリポジトリにプッシュします。

手順3〜5の場合、外部開発者が完了するまで必ずしも待つ必要はありません。彼のリポジトリの中間状態をリベースすることも可能です。

それでも、それは理論的なアイデアです..実際にどのように機能するかを確認する必要があります。

代替案:コードの一部を表示してはならない外部の請負業者が頻繁にいる場合は、@Antonのコメントを2番目にコメントして複数のリポジトリに関連する許可を設定します。

于 2011-07-01T11:28:52.280 に答える
2

これを行うには複数の方法があります。

  1. サブリポジトリの使用
  2. 複数のリポジトリの使用
  3. ???

とにかく、既存のリポジトリを再構築して分割する必要があるため、このプロジェクトに多くの人が取り組んでいる場合、これは大混乱を引き起こします.リストラ。

複数のリポジトリを使用する 1 つの方法は、次のようにすることです。

  1. リポジトリの追加のクローンを 2 つ作成します (すべてが失敗した場合のフォールバック用に 1 つ残しておきます。いつでも元に戻すことができます)。
  2. hg convert請負業者がアクセスしてはならないすべての断片を取り除くためにコマンドを実行する必要がある最初のクローン
  3. 次に、そのリポジトリが単独で機能するように修正します。存在しないものの、ビルドする前にプロジェクトに挿入する予定のフックとイベントを提供するために、コードを変更する必要がある場合があります。
  4. hg convert次に、最初のクローンに存在するすべてのものを取り除くために、他のクローンで実行する必要があります。
  5. 次に、最初の (契約者) リポジトリから 2 番目の (プライベート) リポジトリにプルし、マージして、コードが意図したとおりに機能するように必要な修正を行います。

現在、2 つのリポジトリがあります。

  1. 公開したいビットのみを含む請負業者リポジトリ
  2. 請負業者リポジトリからプルおよびマージされ、他のすべての小片を含むプライベートリポジトリ

これからは、請負業者が作業を自分のリポジトリにプッシュするたびに、そこからプライベート リポジトリにプルしてからマージする必要があります。

リポジトリは次のようになります。

Contractor:  ---97---98---99---100---102---103---104

                                               M                 M
Private:     ---91---92---93---94---95---96---101---105---106---107
                                             /                 /
                                            /                 /
                       ---97---98---99---100---102---103---104

上記の M の付いた 2 つの変更セットは、請負業者が提供したコードをプライベート リポジトリにマージするマージ変更セットです。

あなたも請負業者リポジトリにコードをコミットし、そこでコードのバグを修正して作業する必要があることに注意してください。

于 2011-07-01T12:21:54.917 に答える