2013-05-31 2 views
5

Возможно ли передать объект непосредственно из памяти в репозиторий, или вам всегда приходится записывать память в файл, только чтобы git перезагрузил файл в память?GIT фиксировать из памяти, а не файл

+1

Я не уверен, что ваш вопрос имеет смысл. Репозиторий git * - это куча файлов. –

+0

Как вы тестируете свои изменения, не записывая их сначала в файл? Я полагаю, ваш компилятор или интерпретатор использует ваши изменения в памяти? Теперь, если вы создаете ramdisk, тогда вы можете зафиксировать память, но вы все равно будете сохранять из памяти в память и перезагружать ее в память. У Ramdisks также есть крутая способность мгновенно откатывать любые коммиты (и незафиксированные изменения), которые вы не нажали, так что функция тоже может быть полезна. – cjc343

+0

Вы спрашиваете, нужно ли сохранять файл (записанный на диск) перед записью? –

ответ

5

Нет, вам не нужно сначала записывать на диск. Вы можете создавать капли из памяти, передавая данные на git hash-object -w --stdin. Вы можете добавить их непосредственно к индексу или построить с ними деревья и зафиксировать их напрямую. Некоторые детали можно найти здесь: http://git-scm.com/book/en/Git-Internals-Git-Objects

+0

Спасибо за ссылку - из раздела «сантехника» было ясно, как это можно сделать. Я думаю, это именно то, что я искал. – eswint

+0

Обратите внимание, что это немного уклоняется от вопроса - добавление файла в индекс также записывает содержимое в файл в файловой системе до тех пор, пока не будет вызвано фиксация (или что-то еще, что действует на индекс). –

+0

@NevikRehnel: Это неправда. Создание объекта для файла является частью процесса фиксации. Если вы хешируете свои капли, затем создаете дерево, а затем создаете объект фиксации, вы только «совершаете». Конечно, есть файловые записи. Но это только результат сохранения git-репо в файловой системе. Мы по-прежнему «фиксируем объект непосредственно из памяти в репозиторий». – Chronial

Смежные вопросы