Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
hgbook.pdf
Скачиваний:
50
Добавлен:
17.03.2015
Размер:
3.15 Mб
Скачать

Имена файлов и шаблоны совпадений

По умолчанию файл .hgignore должен содержать список регулярных выражений, по одному в каждой строке. Пустые строки пропускаются. Большинство людей предпочитают помечать файлы, которые они хотят игнорировать с использованием «glob» синтаксиса, который мы описали выше, такой типичный файл .hgignore будет начинаться с директивы:

syntax: glob

Это говорит Mercurial интерпретировать строки, указанные ниже, с использованием модели glob, а не регулярных выражений.

Вот типичный вид файла .hgignore.

syntax: glob

#This line is a comment, and will be skipped.

#Empty lines are skipped too.

#Backup files left behind by the Emacs editor.

*~

#Lock files used by the Emacs editor.

#Notice that the "#" character is quoted with a backslash.

#This prevents it from being interpreted as starting a comment.

.\#*

#Temporary files used by the vim editor.

.*.swp

# A hidden file created by the Mac OS X Finder.

.DS_Store

7.7. Регистрозависимость

Если вы работаете в гетерогенной среде разработки, которая содержит как Linux (или другие Unix) системы так и системы с Mac или Windows, вы должны помнить, что они относятся к регистру («N» и «n» ) имен файлов, по разному. Это вероятно не очень, повлияет на вас, и это легко исправляется, если это произойдет, но это может удивить вас, если вы не знаете об этом.

Операционные и файловые системы отличаются по способам работы с регистром символов в именах файлов и директорий. Существует три основных модели работы с именами.

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

Сохранение регистра, без его учета в дальнейшем. Когда создается файл или каталог его имя сохраняется так как было введено. Оно также отображается операционной системой в сохраненном регистре. Когда производится работа с файлом, то регистр не учитывается. Это стандартное поведение в Windows и MaxOS. Например имена foo и FoO идентичны с этой точки зрения. Подобная обработка прописных и строчных букв как взаимозаменяемых также известна как сворачивание регистра.

С учетом регистра. В этом случае имя файла существенно всегда. Имена foo и FoO идентифицируют разные файлы. Это стандартно для Linux и Unix систем и в них это используется по умолчанию.

В Unix-подобных системах возможно иметь любой или даже все вышеупомянутые способы обработки имен сразу. Например, если вы используете USB накопитель с файловой системой FAT32 в Linux, то имена файлов в этой файловой системе будут сохранять регистр, но при работе он не будет учитываться.

7.7.1. Безопасное и переносимое хранилище

Система хранилищ Mercurial регистронезависима. Она переводит имена файлов так, что они могут быть безопасно сохранены и на регистрозависимых, и на регистронезависимых файловых системах. Это означает, что вы можете использовать обычное копирование файлов, например, на USB-флешку и спокойно переносить на ней хранилище между компьютерами, использующими MacOS, Windows и Linux.

79

Имена файлов и шаблоны совпадений

7.7.2. Определение конфликтов регистра символов

Когда операционная система работает в директории, Mercurial соблюдает политику именования принятую в файловой системе где расположена директория. Если файловая система позволяет сохранять регистр, но не учитывает его, Mercurial считает имена, различные по регистру, равнозначными.

Важным аспектом этого поведения является то что возможно сделать commit набора изменений в системе с учетом регистра в файловой системе (в Linux или Unix), которые вызовут проблемы у пользователей с другим типом файловой системы (Windows или MacOS). Если Linux-пользователь создаст файлы myfile.c и MyFile.C, оба будут успешно сохранены в репозитории и с ними можно будет работать на других Linux-машинах.

Если пользователь Windows или Mac зальет в свой репозиторий подобные изменения, то он не получит каких-то проблем, т.к. механизм хранения в репозитории Mercurial безопасен к регистру символов. В тоже время, как только он попытается сделать hg update в рабочем каталоге до этого набора изменений, или hg merge с ним, Mercurial определит конфликт имен файлов, которые файловая система трактует как идентичные и запретит обновление или слияние.

7.7.3. Исправление конфликта регистра символов

Если вы используете Windows или Mac в среде, где кто-то использует Linux или Unix, и Mercurial сообщает о проблемах с регистром, когда вы пытаетесь сделать hg update или hg merge, процедура исправления этого очень проста.

Просто найдите ближайшую машину с Linux или Unix, клонируйте на нее репозиторий и используйте команду hg rename для изменения имени на какое-то другое, так чтобы конфликта не было. Сохраните свои изменения (hg commit), сделайте hg pull или hg push в ваш Windows или MacOS репозитарий и hg update на ревизию без конфликта.

Список изменений с конфликтом регистра останется в истории вашего проекта и вы все еще будете не в состоянии выполнить hg update вашей рабочей директории к этому набору изменений в Windows или MacOS, но вы сможете продолжить разработку.

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]