Я пару раз читал (например, здесь), что Poky - это эталонный дистрибутив, который содержит OpenEmbedded, Bitbake и другие вещи. Но я никогда не был уверен в значении «содержит». Теперь я проверил и был очень удивлен, обнаружив, что репозиторий Poky буквально содержит содержимое нескольких других репозиториев. Среди них минимум:
Кажется, что эти репозитории были слепо скопированы вместе в другое репо. Но если копать дальше, они не копировались вслепую. Фактически, кажется, что каждая фиксация всегда существует идентично в обоих репозиториях. Пример:
me@home:~% cd poky && git show 8877980c99 > x && cd ..
me@home:~% cd openembedded-core/ && git show 812eb3121e > x && cd ..
me@home:~% diff poky/x openembedded-core/x
1c1
< commit 8877980c99045d53c2465faeb45aa6e81f126708
---
> commit 812eb3121e0aabe4e3de9a8c61b1e62c87f55aa4
6,7d5
<
< (From OE-Core rev: 812eb3121e0aabe4e3de9a8c61b1e62c87f55aa4)
За исключением хэша фиксации и этой одной строки From OE-Core rev: ...
, фиксации действительно идентичны - даже метка времени совпадает с точностью до секунды. Как это вообще работает?
Кроме того, разве это не плохая практика - дублировать содержимое одного репо в другом в том смысле, что это нарушает принцип DRY? Каждый ли коммиттер ответственен за то, что его коммит всегда попадает в оба репозитория? Нет ли риска, что репо разойдутся? На самом деле я обнаружил несколько (незначительных) файлов, которые немного отличаются, например этот:
me@home:~% diff poky/meta-poky/README.poky meta-yocto/meta-poky/README.poky
25c25
< DISTRO = "nodistro") and contains only emulated machine support.
---
> DISTRO = "") and contains only emulated machine support.