0

これを明確に説明する方法がよくわかりませんが、ここに行きます。

Tortoise-git のバグにより、このような状況で終了しました。

すべてのコードは、このようなディレクトリ構造の下にある必要があります (これは Symfony2 プロジェクトです)。

src/XYZ/OurExitingBundle
src/XYZ/AnotherExcitingBundle

しかし、Tortoise-git のバグが原因で (私たちはそう考えています)、コードを Linux ボックスにプルすると、次のようになります。

src/XYZ/OurExcitingBundle
src/XYZ/AnotherExcitingBundle
src/xyz/ourexcitingbundle
src/xyz/anotherexcitingbundle

(つまり、実際のディレクトリとそれに相当する小文字)。私たちのプロジェクトを構成するファイルは、CamelCase と小文字のディレクトリの間でランダムに分割されているようです。

Windows マシンで開発しているため、コーディング中は問題ありませんが、コードが Linux サーバーにプッシュされると、ファイルが本来あるべき場所にないか、CamelCase ディレクトリにファイルが存在するため、すべてが失敗します。ただし、新しいバージョンは小文字のディレクトリにあります。

それで、私の質問は、小文字のディレクトリ内のすべてのファイルを CamelCase ディレクトリ内の同等のファイルに「マージ」して、すべての最新コードを CamelCase ディレクトリだけにする方法はありますか?

すべての助けを前もって感謝します。

4

1 に答える 1

1

ここで行うことは 2 つあります。最も簡単なのは、Windows 上の各クライアントが持っていることを確認することです。

core.ignorecase = true 

それぞれのリポジトリに設定します。これは、git がローカルで大文字と小文字の違いを無視し、ローカル リポジトリで使用されているのと同じ大文字と小文字を使用する必要があることを意味します。

次に、間隔が正しくないすべてのパスをリポジトリで変更する必要があります。これには、チームがこの新しいバージョンの履歴をプルしなければならないという副作用があります。filter-branchコマンドは、このタイプのタスクによく使用されます。これは次のようになります。

git filter-branch --tree-filter 'test -d src/xyz && for f in `git ls-files src/xyz`; do git mv "$f" src/XYZ; done'

大文字と小文字の区別の処理のサポートを改善するために、Tortoise Git にも変更が加えられました。

したがって、使用しているバージョンを確認することも価値があります。

于 2013-08-26T21:05:54.837 に答える