5

Mercurial リポジトリにあるプロジェクトがあります。

私たちの顧客は、次の方法でコード ベースの所有権を取得したいと考えています。

  1. お客様所有のサーバーに Mercurial リポジトリをセットアップします。
  2. 既存のコードを新しい Mercurial リポジトリにインポートします。

ステップ2を達成するための最良の方法は何ですか?

次のことを行うのは簡単なことですか?

  1. 既存の Mercurial リポジトリのクローンを作成します。

    hg clone <existing mercurial repo URL>
    
  2. 複製したリポジトリを新しいリポジトリにプッシュします。

    hg push <new mercurial repo URL>
    

手順がありませんか?hgrcファイルはどうですか?プロジェクトを新しいリポジトリにプッシュする前に、何らかの方法で変更する必要がありますか?

4

3 に答える 3

8

はい、あなたはあなたが述べたことを行うことができますがhg clone、メインリポジトリを簡単に実行すると、2つの間にリンクが存在することに注意してください。これは、あなたが望むものではないかもしれません. このリンクは、.hg/hgrcファイルを編集default = ...してセクション内の項目を削除することで削除できます[paths]

より良い方法は、クローンを作成せずに行うことです。この方法では、リポジトリ間のリンクがありません。これは顧客に送信されるため、必要な場合があります。

基本的な方法は、変更セットなしで新しいリポジトリをセットアップし、次に 3 つの方法のいずれかですべての変更セットを取り込むことです。

  1. リポジトリから新しいリポジトリに変更をプッシュします。
  2. 古いリポジトリから新しいリポジトリに変更をプルします。
  3. 新しいリポジトリにアクセスできない場合は、顧客に提供できるバンドルを作成します。これは、バンドルを解除するか、空のリポジトリにプルすることができます。

プッシュとプルは通常どおりに行いますが、リポジトリの場所を指定します。

// create the empty repository
hg init .
// pull in everything from the old repo
hg pull /projects/myOriginalRepo

押したり…

// create the empty repository
hg init /projects/myNewRepo
cd /projects/myOriginalRepo
hg push /projects/myNewRepo

バンドルを DVD に書き込んで、素敵なグリーティング カードと一緒に弓で包んで顧客に渡すことができるので、バンドルを作成する方がおそらく良い方法です。

cd /projects/myOriginalRepo
hg bundle --all ../repo.bundle

すべてが 1 つのファイルに書き出されます。このファイルは、hg unbundle repo.bundleまたはhg pull repo.bundleを使用して、既存の変更セットのないリポジトリに抽出できます。

ファイルに関してはhgrc、別の回答で既に述べたように、それは制御されたファイルではないため、コピーされません。ただし、コンテンツは、自動ビルドを実行するためのフックや、変更セットを適用する前の検証などである可能性があります。これはおそらくあなた自身の組織にしか意味をなさないロジックであり、これを顧客に押し付けたくないことをお勧めします.結局のところ、彼らはあなたのコードベースの所有権を取得しており、独自のコードベースを持っている可能性があります.このようなことのために整備されたシステム。

于 2013-05-15T15:14:59.143 に答える
3

単純なケースでは、それだけです。

ただし、.hg/hgrcファイルを変更した場合は、手動でリモート サーバーに移動し、(必要に応じて) 新しい環境に合わせて変更する必要があります。

つまり、元のリポジトリにフックを設定できます。

クライアントの時点で -defaultセクション内のリポジトリへのパスを変更するだけです (または、複数指定されている場合は他のセクション)

于 2013-05-15T01:23:44.017 に答える