Вы можете просто механически заменить:
textconv = sqlite3 "$1" .dump
с:
textconv = "f(){ sqlite3 \"$1\" .dump; }; f"
Почему
Документация gitattributes
говорит об этом textconv
:
Программа должна принять один аргумент - имя файла для преобразования и выдать полученный текст на стандартный вывод.
, а затем приводит это в качестве примера:
[diff "jpg"]
textconv = exif
Добавляя $1
, вы запускаете команду Git с первым аргументом, а затем с аргументами. Аргументы состоят из одного аргумента, поэтому вы видите один аргумент дважды. Если бы аргументы состояли из двух строк, вы бы видели, как первая повторялась, а затем - вторая.
(Это поведение аналогично псевдонимам Git.)
Если вам нужно запустить sqlite3
с двумя аргументами, как в sqlite3 <em>name-of-file</em> .dump
, вы должны изобрести промежуточную команду, которая принимает один аргумент, как в <em>command name-of-file</em>
. Затем эта промежуточная команда может просто добавить последний аргумент.
Как и для псевдонимов, вы можете сделать это с помощью функции оболочки:
[diff "odd"]
textconv = "f(){ echo $1 extra; }; f"
$ git diff
diff --git a/.gitattributes b/.gitattributes
index 9fa72ad450..bf2ef674cb 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,6 +1,6 @@
* whitespace=!indent,trail,space
*.[ch] whitespace=indent,trail,space diff=cpp
-*.sh whitespace=indent,trail,space eol=lf
+*.sh whitespace=indent,trail,space eol=lf diff=odd
*.perl eol=lf diff=perl
*.pl eof=lf diff=perl
*.pm eol=lf diff=perl
diff --git a/check-builtins.sh b/check-builtins.sh
index a0aaf3a347..089031a86e 100755
--- a/check-builtins.sh
+++ b/check-builtins.sh
@@ -1 +1 @@
-/tmp/fo3NBV_check-builtins.sh extra
+check-builtins.sh extra