2011-01-26 6 views
2

Я пишу скоропортящийся/быстро импортируемый пакет для Plastic SCM/Git, и я нахожу некоторые проблемы.git fast-import commit order

Как я прочитал из documentation:

Эта конструкция позволяет фронтэндом программу обрабатывать неограниченное количество ветвей одновременно, генерируя фиксаций в порядке, они доступны из исходных данных

Но, внедряя «экспортера», я вижу, что вы не можете ссылаться на еще не созданную фиксацию. Например, предположим, что вы сначала вводите назначение фиксации слияния, чем источник, тогда вы просто ссылаетесь на источник там, но он просто не работает.

Итак, насколько я понимаю, предложение «генерация коммитов в том порядке, в котором они доступны из источника», просто неверно, и git fast-import действительно нуждается в том, чтобы коммиты были поставлены по порядку, а ссылки могут существовать только для объектов введено ПЕРЕД.

Верно ли это?

Спасибо.

+0

Позже я обнаружил, что была ошибка до 1.7, которая переполняла цифры cset. Это означает, что если ваш номер cset был слишком большим, он был переполнен на «вывод меток». Исправлено после Git 1.7. – pablo

ответ

1

Да, git-fast-import должен видеть коммиты для каждой ветки в порядке от старости до новейшего. Заявление, которое вы указали в документации, несколько неоднозначно, потому что «порядок, который они доступны из исходных данных», фактически должен увеличивать порядок времени для каждой ветви.

Я думаю, что это заявление означает, что вам не нужно представлять все коммиты по всем веткам в строго хронологическом порядке. Скорее, так же, как работать с Git обычно, каждая фиксация должна быть создана после создания всех ее предков.

Этот подход по-прежнему оставляет немного гибкости в том, как можно импортировать коммиты. Я написал импортера (для старой проприетарной системы управления исходными текстами), которая обрабатывала всю ветвь отдельно (от самого старого до новейшего, конечно). Гит подобрал общих предков между разными ветвями и сделал хорошее дерево правильной иерархии, потому что SHA1 хэши общих предков в каждой ветке были одинаковыми.