К сожалению, эта информация просто недоступна. Здесь - это код, который фактически выполняет преобразование текста:
temp = prepare_temp_file(r, spec->path, spec);
*arg++ = pgm;
*arg++ = temp->name;
*arg = NULL;
child.use_shell = 1;
child.argv = argv;
child.out = -1;
if (start_command(&child)) {
remove_tempfile();
return NULL;
}
Два аргумента - это имя самой программы (как обычно argv [0]) и имя временногофайл, содержащий биты, извлеченные из тех мест, где они находятся (на основе параметра spec
; для получения дополнительной информации перейдите по ссылке выше).
Спецификация, вероятно, содержит исходное имя пути в большинстве или во всех случаях (и еслинет, посмотрите на функцию чуть ниже этой), она просто не скопирована в аргументы программы.Код фильтра textconv может, но не использует технику %
-расширения, используемую драйверами слияния Git, и если он это сделал (но не делает), он может иметь %
-escape, который передал исходный файлназвание.Но, конечно, это не так.
(Вы можете создать свой собственный клон Git и поработать над ним, и, возможно, попытаться убедить людей Git принять ваши изменения в качестве вклада в публичный Git ...)