7

この投稿から、git でフォルダーを追跡するには、少なくとも空のファイルが必要であることが説明されています。

Currently the design of the Git index (staging area) only permits files 
to be listed and nobody competent enough to make the change to allow 
empty directories has cared enough about this situation to remedy it.

Directories are added automatically when adding files inside them. 
That is, directories never have to be added to the repository, 
and are not tracked on their own. You can say "git add <dir>" and it 
will add the files in there.

If you really need a directory to exist in checkouts you should
create a file in it.

git が空のフォルダーを追跡しないため、いくつかの問題に直面しました。

問題 1 :

apache/logのgitリポジトリの1つにディレクトリがあります。

サーバーにプッシュしてWebサイトを実行すると、機能しませんでした。私のローカルシステムでうまくいったところ。多くの調査の結果git push、空のフォルダーがプッシュされていないことがわかりました/log。ログファイルを作成するためのサーブチェック済みフォルダーログ。フォルダlogが存在しなかったため、フォルダを自動的に作成してこれらのファイルを配置することはできません。それがエラーの理由です。

問題 2 :

私はたくさん持っていますbranch。私の特定のブランチの 1 つだけが、frontendfolder を持っていると言っていますcaps

ディレクトリ内のフォルダの 1 つmy_git_repo/caps/html/home/が空になることがあります。

ブランチmasterにフォルダがありませんcaps

私が作成git checkout masterすると、空のフォルダーが作成されます。つまりcaps/html/home/tmp 、フォルダーを手動で削除したいcaps場合、混乱が生じることがあります。

通常、空のファイル( README)をフォルダに入れることでこれらの問題を解決します。

そこで、すべての空のフォルダーを追跡するように git を作成したいと思います。編集.git/configか何かで可能ですか?

どんな助けでも感謝します.:))

4

2 に答える 2

3

個人的には、通常dir.info、ディレクトリの目的を示すテキストを含むファイルをすべてのディレクトリで呼び出すことで、これを解決します。

ただし、チェックアウト後に特定の空のディレクトリを作成する必要があり、それらのディレクトリが特定のブランチに固有である可能性がある場合は、git post-checkout フックをオーダーメイドにすることをお勧めします-空のトップレベルディレクトリにリストを作成できます必要なディレクトリと不要なディレクトリを作成し、約 5 行の Python を使用して、必要に応じてディレクトリを作成し、そうでないディレクトリを削除できます。

どちらを削除または追加する必要があるかによって、最初の文字に-orを入れるようなことをするでしょう。+

次のようなもの(エラー処理が追加されています)

import os

dirlist = open("Dirlist.Name", "rt")
for line in dirlist:
    flag = line[0]
    name = line[1:].strip()
    if flag == '+':
        os.makedirs(name)
    elif flag == '-':
        os.removedirs(name)
    else:
        print "Ignored:", line
于 2013-09-03T14:42:08.357 に答える