9

Tortoisehg (1.0) をサブリポジトリで動作させることができません

次のようなディレクトリ構造があります。

root
  .hg
  .hgsub
  .hgsubstate
  Customer1
    Project1
      .hg
      foo.txt
    Project2
      .hg
  Customer2
    Project3
      .hg

ルートの下の .hgsub ファイルは次のようになります

Customer1\Project1=Customer1\Project1  
Customer1\Project2=Customer1\Project2  
Customer2\Project3=Customer2\Project3  

ファイルCustomer1\Project1\foo.txtを変更してルートからコミットすると機能します

>hg ci -m "command line commit"
committing subrepository customer1\project1

Tortoisehgcustomer1\project1ではステータスS(サブレポ) が表示されますが、コミットするとメッセージが表示されます

abort: customer1/project1: no match under directory!

このシナリオはサポートされていませんか、それとも間違っていますか?

「TortoiseHg 1.0では
、サブリポジトリの基本的なサポートが導入されましたが、これはコミット / ステータス ツールでのみ行われました。Mercurial がサブリポジトリをダーティと見なすと、コミット ツールではファイル リストの特別なエントリとしてステータス S で表示されます。サブリポジトリがコミットのファイル リストに含まれている場合、サブリポジトリは他の変更と共にコミットされ、メイン リポジトリ ルートの .hgsubstate ファイルが更新されます。

4

5 に答える 5

9

私はほとんど同じ問題を抱えていて、さまざまなバリエーションを試し始めましたが、等号の両側にバックスラッシュ (\) ではなくスラッシュ (/) を使用することで、最終的に機能するようになりました。

だから試して...

Customer1/Project1=Customer1/Project1  
Customer1/Project2=Customer1/Project2  
Customer2/Project3=Customer2/Project3 

また、動作していないとき、私の .hgsubstate ファイルにはたくさんのゼロしかありませんでした。動作を開始したとき、本物の GUID が含まれていました。

于 2010-11-04T05:15:07.943 に答える
7

メインリポジトリのコマンドラインを使用してコミットすることで、この問題を回避できました。

hg commit -m 'Updated subrepo'
于 2012-11-21T17:07:36.293 に答える
4

私は同じ問題を抱えていました:

私のリポジトリの1つで、変更されたサブレポモジュールの1つをコミットすると、メッセージが表示されて失敗しました

"abort: mysubrepo: no match under directory!"

理由:

TortoiseHGは、フォルダー名の大文字と小文字を区別して処理するため、サブリポジトリへのコミットに失敗します。

例: 元のリポジトリ:

C:\Shared\MySubRepo

コマンドラインでこれをサブレポとして別のリポジトリに複製する

hg clone C:\shared\mysubrepo   <--- Note the lower cases!

親リポジトリ内にサブリポジトリフォルダーmysubrepoを作成します。いつものように.hgsubファイルに追加します(私は常に「\」の代わりにプラットフォームに依存しない「/」を使用するので、それがエラーの理由ではないと思います)。--subrepos TortoiseHG でコミットしようとすると、「ディレクトリの下に一致しません!」というメッセージが表示されます。エラー。ただし、コマンドラインによるコミットは機能します。

サブレポ フォルダー mysubrepoの名前をMySubRepo (大文字の元のフォルダー) に変更した後、 TortoiseHg は正常にコミットできました。

hgrcファイルでもフォルダー名を編集する必要があるかもしれませんが、これが本当に必要かどうかはわかりません. また、TortoiseHg Workbench のリポジトリ レジストリからリポジトリを削除し、再読み込みする必要がある場合があります (および/または Workbench の再起動も)。

于 2013-07-04T11:49:18.367 に答える
2

Customer1もネストされたリポジトリである必要があるため、「 Customer1 \Project1」をサブリポジトリとして指定することに問題があると思います。

Customer1Customer2の両方に、サブリポジトリを記述した '.hgsub' ファイルが必要です ( Project1/2 )

Customer1リポジトリを別の場所で作り直して、 Project1Project2を複製します。Project1およびProject2エントリをCustomer1内の '.hgsub' ファイルに追加します。

次に、Customer2リポジトリに対して同じことを行います。

ネストされたリポジトリ自体をネストできることに注意してください。そのため、「ルート」リポジトリを作成し、.hgsub ファイルにエントリを追加することを忘れずに、Customer1Customer2をそのリポジトリにクローンします。

'root' をコミットすれば問題ないはずです。

重要なのは、サブリポジトリのすべてのインスタンスからそのクローン マスターに変更をプッシュして、そのサブリポジトリを含む他のクローンが必要に応じてそのリビジョンをプルできるようにすることです。

マシンの同じ親フォルダーにすべてのマスター リポジトリがあるため、「../Project1」や「../Customer1」などの「.hgsub」ファイル内に相対パスを配置すると、ローカル クローンに変更をプッシュする簡単な方法になります。中央サーバーから。

TortoiseHG を使用する限り、'.hgsub' ファイルを既に作成している限り、ネストされたリポジトリで '.hgsubstate' ファイルを作成および管理するため、v1.0 で問題ありません。

于 2010-03-22T22:45:17.700 に答える
1

私の2セントを追加します。

abort: customer1/project1: no match under directory次のシナリオで、Windows でこのエラーを受け取りました。

  • リポジトリはという名前のフォルダーにありましたMyFolder(大文字に注意してください)
  • レポにはサブレポがありました
  • 親レポの一部のファイルmyfolder/filename.ext(一部のみ!) を使用してコミットされました(小文字に注意してください)

すべて正常に動作し、コマンドライン コミットは正常に動作しますが、Tortoise は文句を言います。

ファイルの名前を変更します (使用している小文字のものを見つけれhg status --allば問題ありません)。

于 2016-12-11T21:26:55.620 に答える