Git мелкий клон с некоторыми подмодулями - PullRequest
0 голосов
/ 12 июня 2018

Я хочу получить исходный код некоторых модулей Qt.Мне не нужна история изменений и большинство подмодулей Qt, поэтому я решил клонировать репозиторий Qt Git и инициализировать и обновить некоторые модули:

git clone --branch v5.10.1 --depth 1 git://code.qt.io/qt/qt5.git source
cd source
git submodule update --init --depth 1 qtbase qtlocation

Однако, когда я пытаюсь запустить приведенный выше код, он дает мнеследующая ошибка:

fatal: The remote end hung up unexpectedly
Fetched in submodule path 'qtbase', but it did not contain 6c6ace9d23f90845fd424e474d38fe30f070775e. Direct fetching of that commit failed.

Если я пытаюсь инициализировать и обновить все подмодули , это работает:

git clone --branch v5.10.1 --depth 1 git://code.qt.io/qt/qt5.git source
cd source
git submodule update --init --depth 1

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

1 Ответ

0 голосов
/ 16 декабря 2018

Я делаю нечто подобное в Ubuntu 18.04 с самой последней версией целом .Чтобы сделать это, я установил ver равным git ls-remote, который собирает версии с целыми числами, затем сортирует по возрастанию и захватывает последнюю.На момент написания этой статьи результат был 5.12.1

ver="$(git ls-remote --heads https://code.qt.io/qt/qt5.git | grep -Pio '(?<=refs/heads/)[\d\.]+' | sort -V | tail -1)" ; git clone --depth 1 --branch $ver https://code.qt.io/qt/qt5.git

Это немного сложнее.Сначала мы сосредоточимся на группах модулей essential addon preview deprecated, перечисленных в .gitmodules.Оттуда я вернусь к заголовку для каждого и отфильтрую те, которые не содержат qtweb qtwin qtmac qtandroid qtpurch.Я буду перебирать список, выполняя мелкий клон каждого из них, основываясь на его определенной версии ветви.

for value in $(grep -B10 -Pi 'status = (essential|addon|preview|deprecated)' .gitmodules | grep -Pio '(?<=\[submodule \")(?!qt(web|win|mac|android|purch)).*(?=\"\])' | sort); do git clone --depth 1 --branch $(grep -A6 -Pi "(?<=\[submodule \")$value(?=\"\])" .gitmodules | grep -Pio '(?<=\tbranch = ).*') https://code.qt.io/qt/"$value".git ; done

Для меня конечной целью было сделать статическую сборку, поэтому я просто отмечуварианты, которые я использовал:

./configure -prefix $PWD/qtbase -static -confirm-license -opensource -ltcg -optimize-size -ccache -no-pch -skip webengine -nomake tests -nomake examples
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...