Хорошая новость: это больше не испортит ваш Git.
Потому что с Git 2.25 (1 квартал 2020 г.) Git запрещает имена путей, которые файловая система платформы не может представить на MinGW.
См. commit 4dc42c6, коммит 98d9b23 (21 декабря 2019 г.), автор Йоханнес Шинделин (dscho
).
(Объединено Юнио С. Хамано -- gitster
-- в commit 13432fc, 2 января 2020 г.)
mingw
: отклонять пути, содержащие зарезервированные имена.
Подписал: Йоханнес Шинделин
Есть несколько зарезервированных имен, которые не могут быть именами файлов в Windows, например AUX
, NUL
и т. д.
Почти полный список см. в разделе "Именование файлов, путей и пространств имен: 'Соглашения об именах'".
Если бы кто-то попытался создать каталог с именем NUL
, он фактически «успех», то есть вызов вернул бы успех, но ничего не было бы создано.
Хуже того, даже добавление расширения файла к зарезервированному имени не делает его действительным именем файла.
Чтобы понять причину такого поведения, см. "Что делать с такими зарезервированными именами файлов, как NUL
и CON
?" из Раймонд Чен.
Давайте просто запретим их все.
Git 2.27 (второй квартал 2020 г.) исправляет еще одну проблему с COM0
.
См. коммит 3efc128 (09 апреля 2020 г.) и commit b6852e1 (08 апреля 2020 г.), автор Йоханнес Шинделин (dscho
).
См. commit a748f3f (8 апреля 2020 г.), автор Маттиас Ашхауэр (rimrul
).
(объединено < a href="https://github.com/gitster" rel="nofollow noreferrer">Юнио С. Хамано -- gitster
-- в commit b3eb70e, 22 апреля 2020 г.)
mingw
: не рассматривать COM0
как зарезервированное имя файла.
Подписал: Йоханнес Шинделин
В 4dc42c6c186 ("mingw
: отказаться от путей, содержащих зарезервированные имена", 2019-12-21 , Git v2.25.0-rc1 -- слияние), мы начали запрещать имена файлов, зарезервированы, например NUL
, CONOUT$
и т. д.
Это включало COM<n>
, где <n>
— цифра.
К сожалению, сюда входит COM0
, но зарезервированы только COM1
, ..., COM9
, согласно официальной документации, COM0
упоминается в разделе "Пространства имен NT", но явно опущено из списка зарезервированных имена: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions
Тесты подтверждают это: вполне возможно записать файл с именем com0.c
в Windows 10, но не com1.c
.
Итак, давайте ужесточим код, чтобы запретить только зарезервированные имена файлов COM<n>
, но снова разрешить COM0
.
Это устраняет git-for-windows/git
проблему 2470 "Невозможно добавить файл COM0.c
или ветку проверки, содержащую COM0.c
файл".
person
VonC
schedule
03.01.2020