2

私はgitリポジトリにたくさんのrubyスクリプトを持っていますが、適切にインデントされたコードを書くように人々に強制するのは本当に難しいようです。

また、特定の標準に合わせてコード化する小さなルビースクリプトがあります。これをフィルタースクリプトとして実行して、ジャンクがリポジトリにコミットされないようにします。

echo "*.rb filter=rubyfilter" > .gitattributes
echo "[filter \"rubyfilter\"]" >> .git/config
echo "    clean = /home/rasjani/bin/rbeauty" >> .git/config
echo "    smudge = /home/rasjani/bin/rbeauty" >> .git/config

ダーティトリックのgit側を実行しますが、rubyスクリプトは影響を受けるファイルを処理する必要があります。

どのように/どこからそれらを検索しますか?

4

1 に答える 1

1

GitProブックで説明されているように

Gitは、これらの設定をサブディレクトリまたはファイルのサブセットにのみ適用します。これらのパス固有の設定はGit属性と呼ばれ、いずれかのディレクトリの.gitattributesファイルで設定されます。

git attributesマニュアルページには次のように記載されています。

  • チェックアウト時に、smudgeコマンドが指定されると、コマンドには標準入力からblobオブジェクトが供給され、その標準出力を使用してワークツリーファイルが更新されます。
  • 同様に、cleanコマンドは、チェックイン時にワークツリーファイルの内容を変換するために使用されます。

代替テキスト

したがって、スクリプトは、チェックアウトおよびコミット時に各*.rbファイル(ファイルが配置されているディレクトリおよびサブディレクトリ内)を処理します。.gitattributes

具体的な例については、このSOの質問を参照してください。
次の方法で独自の設定をテストできます。

git checkout --force

注:このSOの質問で述べたようにsmudgecleanスクリプトは、処理している正確なファイルを知らなくても、ファイルのコンテンツのみを変更できます。

于 2010-05-20T11:40:16.277 に答える