フィルタを適用する前git
に、コミットのSHA-1をどのように知ることができますか?clean
以下のフィルターは、次のように出力Hello!
されstderr
ます。
$ cat filter.sh
#!/bin/bash
echo "Hello!" >&2
cat
新しいGitリポジトリを作成し、変更を構成myfilter
、ステージングfoo
、コミットします。
$ git init
Initialized empty Git repository in /tmp/git/.git/
$
$ echo -e '[filter "myfilter"]\n\tclean = "./filter.sh"\n\tsmudge = "./filter.sh"' >>.git/config
$
$ cat .gitattributes
foo filter=myfilter
$
$ echo 1234 >foo
$
$ git add foo
Hello!
$
$ git commit -m "First commit"
[master (root-commit) 637d6c1] First commit
Hello!
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 foo
コミットのSHA-1は、フィルター637d6c1...
を実行する前にあると言われます。clean
ただし、clean
フィルターはfoo
コミットする前に内容を変更する可能性がありますよね?そのgit
ため、事前にSHA-1を知ることができませんでした。ここで何が欠けていますか?