Что означает «git commit», когда на stdout говорится «создать режим ...»? - PullRequest
29 голосов
/ 15 декабря 2011

EDIT:

См. git-store-meta от Danny Lin в качестве предлагаемого решения проблемы метаданных контроля версий, описанной ниже. Я еще не тестировал его на 2015-05-13 гг.

ОРИГИНАЛЬНЫЙ ВОПРОС:

Строки create|delete mode ... в выводе git commit (пример ниже) представляют собой какой-то элемент управления метаданными? (И / или, что эти строки представляют в целом?) Они выглядят как Unix-подобные коды / представления разрешений файлов, хотя я не уверен - точно - отображение, но более важный вопрос: что, если что-то делает git do с этими кодами / настройками / значениями? Git пытается каким-либо образом использовать эти сохраненные коды, чтобы оказаться полезными для решения проблем метаданных, на мой вопрос superuser.com ["Как повторно использовать / расширить механизм метаданных etckeeper для управления git файловыми системами, не относящимися к / etc, или расширять git изначально с помощью указанных возможностей ? "] (https://superuser.com/questions/367729/how-to-reuse-extend- механизм обработки метаданных etckeepers для git-control-of-non-etc-file)? Я знаю, что git не контролирует все метаданные файловой системы.

[Git, очевидно, уже контролирует «исполняемый атрибут / perm» файла (по-видимому, переносимый для большинства ОС) и некоторые другие вещи, такие как ссылки на файловую систему. Я ищу более специфичный для Unix / Linux / BSD / DarwinMacOSX механизм управления для большего количества / всех метаданных, а именно всех прав доступа и владения пользователя / группы. ACL и другие элементы управления метаданными необязательны. Попытка выяснить, может ли git хранится в данный момент , может оказаться полезной для решения этой проблемы.]

root@node1 Dec 15 09:40:45 ~/.../sandbox-1# git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   README
#   new file:   dummy-file-will-be-removed
#   deleted:    ownerfile
#
root@node1 Dec 15 09:40:45 ~/.../sandbox-1# git commit -m "testing git"
[master c5b0201] testing git
 2 files changed, 1 insertions(+), 2 deletions(-)
 create mode 100644 dummy-file-will-be-removed
 delete mode 100644 ownerfile
root@node1 Dec 15 09:41:55 ~/.../sandbox-1# 
[...]
root@node1 Dec 15 11:33:11 ~# git --version
git version 1.7.4.1
root@node1 Dec 15 11:33:14 ~# 

Ответы [ 3 ]

23 голосов
/ 15 декабря 2011

Для получения дополнительной информации о режиме Git см. этот ответ .

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

Git не пытается реализовать какое-либо понятие файловой системы, оставляя процедуры файловой системы фактической реализацией файловой системы. Это имеет смысл разрешить Git одинаково работать на файловой системе FAT32, NTFS, EXT3, XFS, NFS и т. Д., Работающей в Linux, MacOS, Windows и др.

6 голосов
/ 15 декабря 2011

Это права доступа к файлам в виде значений разрешений в стиле Unix.Они напечатаны в восьмеричном виде и представляют собой кластеры по 3 бита для чтения, записи и выполнения.Если вы посмотрите на объект дерева в git (например: git ls-tree HEAD), вы увидите все записи git о содержимом каталога.То есть дерево содержит деревья и BLOB-объекты с битами прав доступа

C:\project>git ls-tree HEAD
100644 blob 66f3f25c8ca9ae73b99669aca6ba5ecfa4703b2b    .gitignore
100644 blob 60b88ac20b8b7cccdcd856e65415a9eb9495b63a    Makefile
040000 tree e1d9381e4d12effea7e33f8d7e2b16e372f67b51    demos
100644 blob a60e08eeb9f75160ae2bf6a9feeff3c1c75bfc1d    doxygen.cfg

6 означает чтение-запись, 4 - только чтение.

3 голосов
/ 15 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...