Я не уверен, git cat-file --batch
должно работать так, как вы упоминаете в своем вопросе.
(Возможно, после git 2.8, март 2016 г., см. Ниже)
Даже в « GitMagic book », в среде unix, git cat-file
используется как sinelaw , упоминаемый в комментариях:
Проверьте, действительно ли этот файл содержит вышеперечисленное, набрав:
$ echo 05b217bb859794d08bb9e4f7f04cbda4b207fbe9 | git cat-file --batch
Как упоминалось выше в OP Alex.Shen , это новая строка выпуск:
Команды git всегда ожидают LF
(перевод строки, U + 000A) , а не Windows CRLF
(CR
+ LF
: CR
(U + 000D), за которым следует LF
(U + 000A)) последовательность.
С '|
' он использует символ EOL
оболочки bash msysgit (LF
), поэтому он всегда работает.
Примечание. В Git 2.5+ (второй квартал 2015 года) добавлена поддержка символических ссылок с git cat-file --batch
.
(Новые выпуски Git доступны для Windows на github.com/git-for-windows/git/releases
)
См. коммит 122d534 от Дэвид Тернер (csusbdt
) , 20 мая 2015 г.
(Объединено Junio C Hamano - gitster
- в коммит 67f0b6f , 01 июня 2015 г.)
cat-file
: добавьте --follow-symlinks
к --batch
"git cat-file --batch(-check)
" узнал опцию "--follow-symlinks
", которая следует по символической ссылке внутри дерева, когда его спрашивают о
объект через расширенный синтаксис SHA-1.
например. HEAD:RelNotes
, что указывает на Documentation/RelNotes/2.5.0.txt
.
С новой опцией команда ведет себя так, как если бы вместо нее было задано HEAD:Documentation/RelNotes/2.5.0.txt
.
Обновление за февраль 2016 года:
Git 2.8 добавляет поддержку CRLF для некоторых команд git:
См. коммит a551843 , коммит 933bea9 , коммит 1536dd9 , коммит b42ca3d , коммит 692dfdf , commit 3f16396 , commit 18814d0 , commit 1f3b1ef , commit 72e37b6 , commit 6e8d46f , commit c0353c7 (28 октября 2015 г.) Junio C Hamano (gitster
) .
(Объединено Junio C Hamano - gitster
- в коммит 0175655 , 03 февраля 2016 г.)
В частности, commit b42ca3d использует strbuf.c#strbuf_getline()
(который может принимать байт, отличный от LF
или NUL
в качестве ограничителя строки)
С git 2.8:
cat-file
: читать пакетный поток с strbuf_getline()
Можно подготовить текстовый файл с помощью редактора DOS и подать его
в качестве потока пакетной команды на команду .