22

TortoiseHg を使用してネストされたリポジトリを正しく追跡する方法に苦労しています。

プロジェクト全体を追跡するメイン リポジトリがあります。このプロジェクトには、いくつかの小さなプラグインが含まれており、これらは plugins/ サブディレクトリ内に保存されています。

プラグインに加えられた変更を含むプロジェクトの「全体」コミットを作成し、それを別の場所にプッシュできるようにしながら、各プラグインを個別に追跡したいと思います (それぞれのプラグインをコミットして BitBucket にプッシュします)。 BitBucket ではありません)。

これまでに行ったことは、プラグインごとに新しいレポを作成することです。簡単に BitBucket にコミットしてプッシュできます。しかし、「メイン」リポジトリをコミットしようとすると、TortoiseHg はエラー メッセージを表示しますabort: path 'mainrepo\\plugins\\plugin1\\plugin1.php' is inside repo 'mainrepo\\plugins\\plugin1'

何か間違ったことをしていることはわかりますが、何が悪いのかわかりません。

WinXP で Mercurial と TortoiseHg (ToirtoiseHg バージョン 0.9.3+237-ea50f793bbe4 および Mercurial-1.4.3+225-70dea42c9406) の両方のナイトリーを使用しています。サブリポジトリの処理がこの TortoiseHg ビルドに追加されたことを読みましたが、サブリポジトリがここで使用する機能であるかどうかさえわかりません。

更新
ある程度の進歩はありましたが、まだ思い通りに動作させることができません。
これが私の構造です:

-- .hg
-- core
-- app
    -- file.php
    -- file.css
    -- plugins
        -- plugin1
            -- file1.php
        -- plugin2
            -- file2.php

app/plugins に移動し、ここで BitBucket からプラグイン (plugin3 という名前) を複製しました。次に、ルートに .hgsub ファイルを作成して追加app/plugins/plugin3 = app/plugins/plugin3しました。その後、ディレクトリ全体をコミットできました。

しかしその後、BitBucket から plugin1 の最新バージョンを取得しようとしたため、app/plugins に移動し、plugin1/ フォルダーを削除して、BitBucket から plugin1 のクローンを作成しました。app/plugins/plugin1 = app/plugins/plugin1次に.hgsubに追加しましたが、コミットしようとすると、abort: path 'app/plugins/plugin1/file1.php' is inside repo 'app\\plugins\\plugin1'

この問題は、subrepo が plugins/ ディレクトリで Hg によって既に追跡されているディレクトリと同じ名前を保持している場合に発生するようです。

私は何を間違っていますか?プラグインの .hg に何か特別なものを追加/編集する必要がありますか?

更新
最終的に、思い通りに動作させることができました。
「手動で」Mercurial に plugins/plugin1、plugins/plugin2 ディレクトリを削除し、変更をコミットしてから、BitBucket から plugin1 と plugin2 を複製し、.hgsub に追加app/plugins/plugin1 = app/plugins/plugin1してすべてコミットするように指示する必要がありました。出来た。
重要なステップは、plugin1/plugin2 フォルダーを削除した後にコミットすることでした。

4

2 に答える 2

18

私はついにそれを自分の好きなように機能させることができました。私は winXP で TortoiseHg を使用しているため、内部でどのような hg 呼び出しが行われたかはわかりませんが、ここでは派手なものは使用されていないと思います。

私は既存のリポジトリから始めました。その中には、plugins/ディレクトリで満たされplugin1/たディレクトリがありましたplugin/2(リポジトリではなく、単なるディレクトリです)。また、BitBucket でホストされているこれらのプラグインをオンラインにしました。

  • 最初に自分のディレクトリに移動し、plugins/を右クリックします。plugin1/TortoiseHg => Remove Files
  • レポのルートに戻り、右クリックしてHg Commit
  • 次に、ディレクトリに戻りplugins/、右クリックしてTortoiseHg => Clone...、ビットバケットでプラグインの http アドレスを選択し (http://bitbucket.org/username/plugin1/Done
  • メインレポのルートに戻ります。ファイルを作成 (またはファイルが既に存在する場合は編集) し、その中に行.hgsubを追加しましplugins/plugin1 = plugins/plugin1た。
  • その後、メインのルート リポジトリまたは plugin1 リポジトリを個別にコミットできました。

remove追加のおよびcommitステップは、新しく複製されたリポジトリーが既に追跡されているディレクトリーと同じ名前である場合にのみ必要であることに注意してください。

于 2010-03-05T11:51:26.220 に答える
5

以下を使用してみてください。

サブリポジトリは、リポジトリのコレクションをグループとして扱うことができる機能です。
これにより、プロジェクトとそれに関連するライブラリをグループとして複製、コミット、プッシュ、およびプルできます。

于 2010-03-03T14:44:07.720 に答える