LINUX.ORG.RU
ФорумTalks

В ядро Linux для ФС Ext4 включена поддержка работы без учёта регистра символов

 ,


2

2

Тед Цо (Ted Ts'o), автор файловых систем ext2/ext3/ext4, принял в ветку Linux-next, на основе которой будет сформирован выпуск ядра Linux 5.2, набор изменений, реализующих поддержку регистронезависимых операций в файловой системе Ext4. Патчи также добавляют поддержку обработки символов UTF-8 в именах файлов (для сравнения и нормализации строк, включающих символы определённые в спецификации Unicode 12.0).

Режим работы без различия регистра символов опционально включается в привязке к отдельным каталогам при помощи нового атрибута «+F» (EXT4_CASEFOLD_FL). При установке данного атрибута на каталог все операции с файлами и подкаталогами внутри будут производиться без учёта регистра символов, в том числе регистр будет игнорироваться при операциях поиска и открытия файлов (например, файлы Test.txt, test.txt и test.TXT в подобных каталогах будут считаться одинаковыми). По умолчанию, за исключением каталогов с атрибутом «+F» , ФС продолжает быть регистрозависимой. Для управления включением регистронезависимого режима предлагается модифицированный набор утилит e2fsprogs.

Ответ на: комментарий от x3al

Не зная локали, ты не можешь определить, считать ли I за uppercase-вариант i или за другую букву.

Изучил документацию на unicode.org. http://unicode.org/faq/casemap_charprop.html#2 Ты говоришь про «case mapping». Для сравнения принято использовать «case folding». Видимо, именно его имели в виду под приведением к нижнему регистру. Как именно обеспечивают локаленезависимость — не вникал.

question4 ★★★★★
()

А дождёмся ли поддержки ext4 работы без прав доступа? Аки fat32 - воткнул-выткнул - нормально.

(Регистронезависимость не нужна, ессно. Ядро будет зависеть от ICU, нет пути)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от torvn77

переносной диск - не read-only, и создавая новые мы натыкаемся на umask. Когда у нас у юзера не 1000:1000 uid:gid - тяжко

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ядро будет зависеть от ICU

В нынешней реализации — не зависит.

question4 ★★★★★
()
Ответ на: комментарий от Deleted

Длину имени когда увеличат ?

+100500.

Уже несколько раз напарывался на ситуацию, когда файлы из Виндовс не проезжают через Линукс именно по этой причине.

Но, насколько я понял, проблема весьма глубокая, одними лишь средствами конкретной ФС ее не решить.

Deleted
()
Ответ на: комментарий от quwy

Поймите уже, что нормальному человеку file.txt и File.txt — одно и то же.

«Нормальных» и «простых» людей не бывает.

В реальной жизни, скажем в гастрономе, «батон» = «Батон» = «БАТОН», почему в компе должно быть по-другому?

В реальной жизни «батон» == «булка», почему в компе должно быть по-другому?

Evenik ★★
()
27 ноября 2019 г.
Ответ на: комментарий от question4

Сборка их под Цигвином была тяжёлой.

Тут говорили в швиндузе регистрозависимость можно включить было.

Xenius ★★★★★
()
Ответ на: комментарий от atrus

Представьте себе, что ведёте кроссплатформенную разработку и часть ваших коллег работает над проектом на венде.

Ага, и например они обращаются к Project.h, тогда как в проекте есть только project.h. Регистрозависимость хотя бы у некоторых разработчиков поможет выловить такие баги. Так что пусть они в реестр лезут.

Вы бы не хотели случайно создать пару файлов с разным регистром...

А вот это крайне маловероятно как раз, и если ты это сделаешь, разработчики на винде заметят при первой же попытке клонировать репозиторий.

Для данного конкретного пример использовать этот флаг будет как раз скорее вредно, так как это будет маскировать баги, чем полезно.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

Ага, и например они обращаются к Project.h, тогда как в проекте есть только project.h.

Формат имён файлов покрывается нормальным code style’ом. А за подобные фокусы надо сразу бить лопатой по морде.

atrus ★★★★★
()
Ответ на: комментарий от atrus

А как эту фигню обнаружить? Для кроссплатформенной разработки наоборот следует в винде девелоперам отключить case folding в реестре (или как минимум в директории проекта), чтобы баги вовремя выявлять, а не включать его в линуксе, чтобы их маскировать.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

А как эту фигню обнаружить?

pre-commit hook

atrus ★★★★★
()
Ответ на: комментарий от question4

Это как?

Это вот так: https://superuser.com/questions/266110/how-do-you-make-windows-7-fully-case-s...

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"obcaseinsensitive"=dword:00000000

Я считаю, что подход когда файловые имена нечувствительны к регистру в принципе ущербен, поскольку универсальный алгоритм case folding невозможен. Поэтому для интероперабельности следует научить швиндуз нормальным именам, а не тащить эту гадость в линукс.

Кстати, кто-нибудь знает, можно ли при монтировании FAT с ключом utf8=1 сделать имена файлов case sensitive?

Я бы на месте разработчиков линукса, не стал бы case insensitivity пихать даже в FAT и NTFS, так как ничего не мешает проверять регистр символов в юзерспейсе.

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

https://superuser.com/questions/266110/how-do-you-make-windows-7-fully-case-sensitive-with-respect-to-the-filesystem

Спасибо. Но дальше пишут, что большинство распространённых неюниксовых программ работают с приведёнными именами файлов, поэтому пойдут глюки.

Кстати, кто-нибудь знает, можно ли при монтировании FAT с ключом utf8=1 сделать имена файлов case sensitive?

Видел предупреждение об этом в мануале к mount или fstab. Не сталкивался.

универсальный алгоритм case folding невозможен

Почему? Достаточно сделать таблицу в несколько сотен килобайт, что к чему преобразовывать.

question4 ★★★★★
()
Ответ на: Давно пора было сделать как опцию от quwy

Поймите уже, что нормальному человеку file.txt и File.txt — одно и то же.

Как нормальный человек скажу тебе что не нужны мне эти твои рассуждения, особенно если два разных файла надо назвать одинаковым образом, сделав различие в регистрах букв.
Так что я регистрозависимость пожелал ещё когда был пользователем винды и про линукс ничего не знал.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 3)
Ответ на: комментарий от question4

Почему? Достаточно сделать таблицу в несколько сотен килобайт, что к чему преобразовывать.

Ну например потому что он зависит от локали. В турецкой локали i соответствует İ и ı соответствует I, тогда как в английской локали i→I. Так к чему приводить регистр этих букв Iiİı? Видимо понадобится не одна таблица, а несколько сотен таблиц на все локали, поддерживаемые системой.

Но дальше пишут, что большинство распространённых неюниксовых программ работают с приведёнными именами файлов, поэтому пойдут глюки.

Так багрепорты напиши, если будут глюки. Нормальный софт должен работать с регистрозависимыми именами. А если не захотят фиксить, значит софт такой и не нужен.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.