これは一種の奇妙なものであり、私の特定の状況以外にあまり適用されない場合は、事前にお詫び申し上げます. 私は git を使用して、展開に関連する一連の生成されたファイルとリリース コードを指すサブモジュールをコミットしてタグ付けすることにより、展開パッケージを管理しています。各マシンの裸のリポジトリから別の空のディレクトリに、この展開タグの git チェックアウトを実行しようとしています。取得した出力は、作成する必要のあるファイルを削除したことを示しており、その後、作業ツリー ディレクトリは空のままです。
$ ls -al /var/www/test/
total 0
$ git --bare --work-tree=/var/www/test/ checkout my_tag
D .gitmodules
D generated.tgz
D release
D signatures.md5
HEAD is now at 8946ff5... Generated contents of deployment package.
$ ls -al /var/www/test/
total 0
my_tag によって参照されるコミットと master のヒントの両方に同じ 4 つのファイルがあることを述べておく必要があります (ただし、内容は異なります)。これにより、次の手順で 75% の結果が得られることは非常に奇妙です。
$ git --bare --work-tree=/var/www/test/ checkout master
D .gitmodules
Previous HEAD position was 8946ff5... Generated contents of deployment package.
Switched to branch 'master'
$ ls -al /var/www/test/
total 4
-rw-r--r-- 1 root root 0 Oct 17 17:00 generated.tgz
drwxr-xr-x 2 root root 4096 Oct 17 17:00 release
-rw-r--r-- 1 root root 0 Oct 17 17:00 signatures.md5
$ git --bare --work-tree=/var/www/test/ checkout my_tag
D .gitmodules
(---- git's warning about detached HEAD state cut ----)
HEAD is now at 8946ff5... Generated contents of deployment package
$ ls -al /var/www/test/
total 4624
-rw-r--r-- 1 root root 2103765 Oct 17 17:02 generated.tgz
drwxr-xr-x 2 root root 4096 Oct 17 17:00 release
-rw-r--r-- 1 root root 2614883 Oct 17 17:02 signatures.md5
問題は、「リリース」は git サブモジュールであり、.gitmodules なしでは初期化または更新できないため、75% の方法ではまだ十分ではありません。
この問題の解決策の 1 つは、デプロイするたびにレポジトリを新しく複製することです。誰もより良い解決策を提案できない場合は、その方法で行くかもしれません。しかし、理想的には、各マシンに 1 つのベア レポを保持し、そこから毎回新しいワーク ツリーにチェックアウトしたいと考えています。ここで何が起こっているのか誰か教えてもらえますか?
参考までに、Git 1.8.2.1 を使用しています。