git fast-import commit order - PullRequest
       25

git fast-import commit order

2 голосов
/ 26 января 2011

Я пишу пакет быстрого экспорта / быстрого импорта для Plastic SCM / Git, и я нахожу некоторые проблемы.

Как я читал из документации :

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

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

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

Это правильно?

Спасибо.

1 Ответ

1 голос
/ 19 мая 2011

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

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

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

...