Создать Git-дерево из рабочего дерева, не касаясь индекса? - PullRequest
11 голосов
/ 07 марта 2012

Я создаю инструмент, который позволит людям хранить «решения» для тестов.Поскольку я не хочу заново изобретать управление версиями, я решил использовать git tree / blob / object - моя идея - создать объект git tree из текущего рабочего каталога.

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

Я посмотрел как mktree, так и write-tree, и для первого требуется вывод ls-tree, а второму необходимо изучить индекс.Ни то, ни другое я не хочу.

Я с удовольствием углублюсь и напишу аналоги этих команд для рабочего дерева, однако у меня возникают проблемы с поиском каких-либо низкоуровневых инструментов git для манипулирования деревьями., BLOB-объектов и объектов.

В идеале пользователь сможет запустить:

$ git create-tree .

, и git будет выдавать хэш недавно созданного объекта дерева.

1 Ответ

12 голосов
/ 07 марта 2012

Использование git mktree безусловно выполнимо. Он читает текст в формате ls-tree, но вы можете создать его самостоятельно, используя любой механизм, какой захотите.

Тем не менее, может быть проще пойти дальше и использовать индекс. В конце концов, вы можете свободно указывать любое местоположение в качестве индекса через переменную окружения GIT_INDEX_FILE. Просто установите эту переменную так, чтобы она указывала на какое-то временное местоположение, создайте свой индекс так, как вы хотите, создайте свое дерево, а затем сбросьте переменную env и выбросьте временный индекс.

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