Импорт репозитория CVS в GIT приводит к ошибочному поведению, связанному с метками времени

Я использовал git cvsimport импортировать мой CVS-репозиторий в совершенно новый GIT-репозиторий.

К сожалению, в некоторых случаях о некоторых коммитах сообщалось в неправильном порядке.

Например, у меня было две версии CVS файла: rev1.1 в 11.39 и Rev.1.2 в 11.42; в GIT я вижу коммит в 11.42 утра (с контентом, равным rev1.2) и последующий коммит в 11.45 утра (с контентом, равным rev1.1).

Мне известно об известной проблеме, указанной в справочной странице cvsimport

Если временные метки коммитов в репозитории cvs недостаточно стабильны, чтобы использовать их для упорядочивания коммитов, изменения могут отображаться в неправильном порядке.

но я не могу понять, что значит достаточно стабильный.

Более того, было бы здорово, если бы кто-нибудь смог мне обойти эту проблему.

большое спасибо

cghersi

1 ответ

Очень легко обмануть git в timestamp, так как он проверяет только местное время, поэтому, вероятно, cvs проверил время в порядке, в котором были установлены теги.

Но обходной путь к этому - использование cherry-pick. Эта команда является почти копией-вставкой из коммитов, так что вы можете просто дать checkout совершить коммит из rev1.1 и там использовать cherry-pick в коммит, потерянный после rev1.2. Чем после использования rebase -i просто стереть / раздавить дублированный коммит после rev1.2. Как при использовании rebase/cherry-pick, дерево коммитов будет запрашивать push -f в ветку, чтобы все исправить.

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