Передача существующих файлов в существующее хранилище 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 формат, который не приведет к ошибкам в этих, иначе недействительных часовых поясах, чтобы такие существующие репозитории можно было импортировать.

Другие вопросы по тегам