Почему промежуточный каталог также называется Index / Git Index? - PullRequest
19 голосов
/ 16 июля 2011

Меня смутило наименование промежуточного каталога (Git Index) в Git.

Есть ли какое-то особое значение, такое, что оно называется Индекс? Почему бы просто не вызвать каталог Cache / или Temp, чтобы нам было легче разобраться?

Для меня индекс - это что-то, что помогает нам быстрее искать вещи, такие как индексация в СУБД, как это связано с областью постановки ???

Я провел поиск в Google, но понятия не имею. ссылка ссылка Индекс Git

1 Ответ

22 голосов
/ 16 июля 2011

Статья основного сопровождающего Git Джунио С. Хамано поучительна для понимания разницы между кешем и индексом:
(акцент мой)

Когда Линус начал писать git, его целью было дать ему возможность воспроизвести каждое промежуточное состояние, созданное его оригинальным рабочим процессом "tarball and patches", который он использовал до дней BitKeeper.
Начиная с архива 2.6.12, он ставит в очередь patch-1, patch-2, ... так что сам 2.6.12, 2.6.12 с примененным patch-1, 2.6.12 с примененным patch-1 и patch-2, стать три версии.

Но это, очевидно, не будет масштабироваться, если вам придется перетасовывать сотни патчей в день. Так он изобрел «кеш каталога»; как концепция, это примерно соответствует «древовидным» объектам в сегодняшнем git: коллекции записей, каждая из которых является компактным представлением того, что содержит вся структура каталога.
Чтобы построить его, нужно было «добавить содержимое в кеш или обновить содержимое в кеше».

Управляющий каталог для размещения коллекции таких записей управления версиями был назван ".dircache" (через некоторое время он был переименован в ".git").
Был файл с именем ".dircache/index", и содержимое этого файла читалось и манипулировалось в наборе переменных в C, которые были названы в честь существительного "cache".
Тогда концепция того, что мы сегодня называем индексом, буферная область для создания коллекции содержимого, которое вы намереваетесь записать как объект дерева, называлась «кеш» .
Все говорили о «кэше» и «индексе» взаимозаменяемо, поскольку файл, в котором записано, что находится в «cache», был назван «index». Это был (и остается) индекс , который позволял вам находить содержимое в кэше, задавая ему путь .

Поскольку все больше и больше людей начинают использовать git без необходимости вообще читать его код, использование слова "index" стало более распространенным по очевидным причинам.
Как то, что находится в файловой системе, оно гораздо более заметно, чем имя переменной в исходном коде C.
В конце концов, мы перестали использовать «кеш» в качестве существительного, чтобы назвать то, что мы сегодня называем «индексом», когда объясняли использование git в качестве конечного пользователя.
Однако слово «кеш» все еще используется как существительное, когда мы хотим поговорить о внутренней структуре данных в контексте обсуждения реализации git (например, «Давайте сделаем так, чтобы программы могли работать с более чем одним кеш одновременно ").

На уровне конечного пользователя «кеш» в наши дни используется только как прилагательное ; «кэшировано», что означает «содержимое, кэшированное в индексе, а не содержимое в рабочем дереве».
Мы могли бы назвать его «проиндексированным», но «кэшированное содержимое» было уже устоявшейся фразой, означающей именно это понятие, и нам не требовалось другое слово, означающее то же самое.

[...] В прежние времена существовало различие между «добавлением нового файла в индекс» и «обновлением файла, который уже находится в индексе, новым содержимым».
[...] Современные (и средневековые) версии git используют «git add» для обоих. Мы могли бы быть просто честными и называть акт обновления или добавления в индекс «add», но некоторые люди в индустрии «git training» начали преподавать индекс как «область подготовки для следующего коммита». "и, как неизбежное следствие, во многих документах начал появляться глагол" этап ", означающий" добавление содержимого в указатель ".
Я иногда использую этот глагол сам, но это только тогда, когда я подозреваю, что аудитория, возможно, сначала узнала git от этих новых людей. Строго говоря, это избыточное и довольно недавнее слово в словаре git.

...