Импорт репозитория 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
в ветку, чтобы все исправить.