1

ルートに210以上のディレクトリを持つgitレポジトリ(リモートはgithubでホストされています-これをクライアントレポジトリと呼びましょう)があります。210以上のWindowsサーバーがあり、それぞれがこれらのルートディレクトリの1つを必要とし、実際には他のディレクトリを必要としません。

したがって、サーバーの1つにログインし、1.8.1.msysgit.1を使用します。

  1. gitハブからクライアントリポジトリのクローンを作成します
  2. スパースチェックアウトをオンにする
  3. このサーバーの作業コピーに必要な単一の*ディレクトリ/*でスパースチェックアウトファイルを更新します
  4. ツリーの読み取り操作を実行します

そして、10回のうち9回はすべてが正常に機能し、作業コピーには期待する単一のディレクトリが含まれています。

ただし、ときどき期待どおりに機能せず、他のいくつかのディレクトリも作業コピーに流れ込んでしまいます。完全な210以上になることはありませんが、他の6〜10個のディレクトリになります。これらのディレクトリは、目的のディレクトリのパターンと一致していません。また、上記のパターンに一致するサブディレクトリもありません。

これが発生すると、ローカルリポジトリを解決できませんでした。私たちは試しました:

  • さまざまなリセット
  • さまざまな読み取りツリー
  • sparse-checkoutを無効/再度有効にする
  • ログを調べて、何か奇妙なことが起こったかどうかを確認します

最終的には、通常、同じ手順を再度実行してローカルリポジトリを削除することになり、2回目だけで機能します。

クローン作成、スパースチェックアウトの設定などを繰り返し行う以外に、問題を確実に再現する方法はまだ見つかっていません。これが発生した20回ほどのうち、Windows以外のマシンで1回だけ発生しました(2週間前に同じ問題を表示したgit v1.8.1.5を実行しているubuntuサーバーがありました)。

私のGoogle-Fuはこれに弱いです。これが発生している理由と、リポジトリを削除して再クローンを作成する必要がない潜在的な回避策についての洞察をいただければ幸いです。前もって感謝します!

4

2 に答える 2

2

私にはかつてこの問題に遭遇した友人がいました。Unixシステムの子ディレクトリからファイルを削除したことが判明しましgit resetた。Windowsシステムでファイルを削除すると、(現在の)空のディレクトリからすべてのファイルが削除されますが、Git以降はディレクトリ自体は削除されません。ディレクトリではなく、コンテンツのみを追跡します。

Windowsシステム上のフォルダの「より大きな」サブセットですか?それらのディレクトリは空ですか?そこにあなたの問題があるかもしれません。

于 2013-03-25T17:51:50.020 に答える
1

Windowsはその権限で不安定です。スパースチェックアウトでフォルダがクリーンアップされた後、フォルダが残っている可能性があります。フォルダにアクセスして手動で削除する必要がある場合があります。彼らはおそらく空です;)

于 2013-03-25T17:47:09.763 に答える