Автоматизация сборки Qt - проблема с подмодулями.Не могу получить чистый рабочий каталог - PullRequest
0 голосов
/ 18 мая 2018

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

git clone https://code.qt.io/qt/qt5.git
git checkout v5.9.0
git submodule update --init --recursive

Это сработало, и в результате была получена чистая рабочая папка с версией 5.9.0.Теперь я проверил версию 5.8.0 с командами

git checkout v5.8.0
git submodule update --init --recursive

Во время обновления были некоторые предупреждения, что некоторые каталоги не могут быть удалены, потому что они не пусты.И теперь результат git status выглядит следующим образом

HEAD detached at v5.8.0
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

        modified:   qtdeclarative (untracked content)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        qtremoteobjects/

В Qt Wiki процесс очистки обозначается как

git submodule foreach --recursive "git clean -dfx" && git clean -dfx

При выполнении этой командыесть сообщения, что некоторые каталоги пропущены - но не указано почему.Поэтому рабочий каталог все еще содержит неотслеживаемый контент.

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

1 Ответ

0 голосов
/ 18 мая 2018

Если вы внимательно прочитаете man-страницы git clean, вы увидите, что в нем говорится:

Git откажется удалять каталоги с подкаталогом или файлом .git, если толькодается второй -f.

Поэтому, чтобы действительно получить чистое дерево каталогов, вы должны выполнить очистку, подобную этой:

git submodule foreach --recursive "git clean -dffx" && git clean -dffx

Это полностью удалит хранилища.Так что, если вы переключитесь на другую версию, которая содержит подмодуль - он должен быть снова клонирован.

...