パスワードを忘れた? アカウント作成
12017703 journal
ソフトウェア

Endowsの日記: gitattributes と gitignore 1

日記 by Endows

gitattributes は .git/info/attributes (作業ディレクトリ) > .gitattributes (リポジトリ) > core.attributesfile (ユーザー設定) > /etc/gitattributes (システム設定) の順に優先。
gitignore は .gitignore (リポジトリ) > .git/info/exclude (作業ディレクトリ) > core.excludesfile (ユーザー設定) の順に優先。

…と思っていたのだけれど、実際に試してみたら gitignore は .gitignore (リポジトリ) > core.excludesfile (ユーザー設定) > .git/info/exclude (作業ディレクトリ) の順っぽい?

ドキュメントと実際の動作が異なっている気がするんですが、どこか私の理解が間違っているんでしょうか。教えて詳しい人。

gitattributes のドキュメントgitignore のドキュメント

-- 追記 --
その後詳しく調べて報告してみた結果

-- 追記 2015-05-21 --
修正が master にマージされていました。 2.5.0 で修正されると思われます。

-- 追記 2015-06-08 --
2015-06-05 にリリースされた 2.4.3 でこの修正が取り込まれました。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • テスト用のスクリプトを書いてみました。
    最後の 2つが私の予想通りとなりません。

    #!/bin/sh
     
    TESTDIR=./testdir
     
    if [ -e "$TESTDIR" ] ; then
            echo "ERROR $TESTDIR already exists." >&2
            exit 1
    fi
     
    echo "##### $TESTDIR を git リポジトリとして初期化。"
    echo ""
     
    git init "$TESTDIR"
     
    cd "$TESTDIR"
     
    echo ""
    echo "##### test~ ファイルを作成。"
    echo ""
     
    touch test~
     
    echo ""
    echo "##### .gitignore ファイルを作成。 (現時点では空のファイル)"
    echo ""
     
    touch "$PWD"/.gitignore
     
    echo ""
    echo "##### test_git_excludes ファイルを作成し、 core.excludesfile に設定。"
    echo "##### (現時点では空のファイル)"
    echo ""
     
    touch "$PWD"/test_git_excludes
    git config core.excludesfile "$PWD"/test_git_excludes
     
    echo ""
    echo "##### core.excludesfile で *~ を無視する設定にする。"
    echo "##### test~ ファイルは無視される(はず)。"
    echo ""
     
    echo '*~' > "$PWD"/test_git_excludes
    echo '' > "$PWD"/.git/info/exclude
    echo '' > "$PWD"/.gitignore
     
    git status --ignored
     
    echo ""
    echo "##### .git/info/exclude で *~ を無視する設定にする。"
    echo "##### test~ ファイルは無視される(はず)。"
    echo ""
     
    echo '' > "$PWD"/test_git_excludes
    echo '*~' > "$PWD"/.git/info/exclude
    echo '' > "$PWD"/.gitignore
     
    git status --ignored
     
    echo ""
    echo "##### .gitignore で *~ を無視する設定にする。"
    echo "##### test~ ファイルは無視される(はず)。"
    echo ""
     
    echo '' > "$PWD"/test_git_excludes
    echo '' > "$PWD"/.git/info/exclude
    echo '*~' > "$PWD"/.gitignore
     
    git status --ignored
     
    echo ""
    echo "##### core.excludesfile で *~ を無視する設定にし、"
    echo "##### .git/info/exclude で *~ を無視しない設定にする。"
    echo "##### test~ ファイルは無視されない(はず)。"
    echo ""
     
    echo '*~' > "$PWD"/test_git_excludes
    echo '!*~' > "$PWD"/.git/info/exclude
    echo '' > "$PWD"/.gitignore
     
    git status --ignored
     
    echo ""
    echo "##### core.excludesfile で *~ を無視しない設定にし、"
    echo "##### .git/info/exclude で *~ を無視する設定にする。"
    echo "##### test~ ファイルは無視される(はず)。"
    echo ""
     
    echo '!*~' > "$PWD"/test_git_excludes
    echo '*~' > "$PWD"/.git/info/exclude
    echo '' > "$PWD"/.gitignore
     
    git status --ignored

typodupeerror

Stableって古いって意味だっけ? -- Debian初級

読み込み中...