Передача существующих файлов в существующее хранилище Git с сохранением временных отметок
Ситуация такова: у меня есть куча файлов давным-давно (еще тогда, когда я не использовал какой-либо контроль над источниками), которые я бы хотел поместить в современные репозитории Git.
Я нашел один инструмент для этого - файл быстрого экспорта. Он берет существующие файлы и выплевывает файл, который может быть передан git fast-import
, Хорошо пока.
Единственная проблема заключается в том, что быстрый импорт немного требователен к формату ввода, а быстрый экспорт файлов не является особенно отточенной программой - он предполагает, что файлы импортируются в новый репозиторий.
Так что мой вариант использования таков: у меня есть git-репозиторий. Я обнаружил ранее отсутствующий подкаталог. Время модификации файла там. Мне нужно зафиксировать каждый из этих файлов поверх текущей истории репозитория, чтобы метки времени фиксации соответствовали времени модификации. Как я понял, Git не заставляет коммиты иметь хронологически последовательные временные метки, только то, что коммиты следуют друг за другом. Я счастлив, если я могу просто сделать git log xxxxx.txt
и посмотрите историю файлов.
Я уверен, что есть инструменты, которые могут сделать это. Как я могу это сделать?
0 ответов
Единственная проблема в том, что быстрый импорт немного требователен к формату ввода.
На самом деле... С Git 2.28 (Q3 2020) некоторые репозитории в дикой природе имеют коммиты, которые записывают бессмысленный часовой пояс коммиттера (например, rails.git
); "git fast-import
"узнал о возможности передавать эти бессмысленные временные метки без изменений, чтобы можно было воссоздать существующие репозитории как есть.
Это может быть полезно в вашем случае.
См. Commit d42a2fb (30 мая 2020 г.) Элайджа Ньюрен (newren
).
(Слияние Junio C Hamano -gitster
- в коммите 5404183, 02 июня 2020 г.)
fast-import
: Добавить новое--date-format=raw-permissive
форматПодписано: Элайджа Ньюрен
В дикой природе существует множество репозиториев со случайными недопустимыми часовыми поясами.
В первую очередь это фиксация от
rails.git
с часовым поясом "+051800".Несколько поисков найдут и другие репозитории с тем же недействительным часовым поясом.
Кроме того, Peff сообщает, что GitHub ослабил их
fsck
проверки в августе 2011 г., чтобы принять любое значение часового пояса, и было несколько отчетов дляfilter-repo
околоfast-import
сбой при попытке импортировать существующие репозитории, поскольку у них были значения часовых поясов, такие как "-[7349423]" и "- [43455309]".Существующая проверка значений часового пояса внутри
fast-import
может оказаться полезным для людей, которые создают ввод данных для быстрого импорта вручную или с помощью нового скрипта.Для них проверка может помочь избежать случайной записи неверных дат.
(Обратите внимание, что эта проверка довольно упрощена, и все еще есть несколько форм недопустимых дат, которые не проверяет быстрый импорт: даты в будущем, значения часового пояса с минутами, которые не делятся на 15, и значения часового пояса с минутами, которые равны 60 или выше.)
Хотя эта простая проверка может иметь некоторую ценность для этих пользователей, другие пользователи или инструменты захотят импортировать существующие репозитории как есть.
Обеспечить--date-format=raw-permissive
формат, который не приведет к ошибкам в этих, иначе недействительных часовых поясах, чтобы такие существующие репозитории можно было импортировать.