Régression de `git fetch` peu profonde dans discourse_docker

Vous avez raison, à ce moment-là, nous ne connaissons pas la version. Il semble que l’image de base utilise la version actuelle + la branche tests-passed, bien que la branche contienne le commit au moment où l’image a été construite.

La méthode actuelle ne conduirait-elle pas à des reconstructions plus lentes, même lorsque la branche tests-passed est utilisée ?

Considérez simplement les instructions suivantes :

Dans l’image de base :

git clone --depth 1 https://github.com/discourse/discourse.git
cd discourse/
git remote set-branches --add origin tests-passed

Dans web.template.yml

git reset --hard
git clean -f
git remote set-branches --add origin master
git pull
...
Lorsque `git pull` est appelé, **l'intégralité du dépôt est téléchargée**, ce qui peut prendre plusieurs minutes, car seul un clone partiel (shallow clone) avait été effectué auparavant. Vous pouvez essayer d'exécuter uniquement les instructions ci-dessus localement pour le vérifier. Je ne dis pas qu'il est préférable d'avoir l'intégralité du dépôt dans l'image de base, mais le code dans `web.template.yml` s'exécute à chaque reconstruction, même si seul un plugin a été ajouté ou si une modification a été apportée dans `app.yml`. Ce que je fais habituellement dans mes projets (non-Discourse), c'est de créer une nouvelle image pour chaque nouvelle version, mais cela pourrait ne pas être réalisable pour vous (compte tenu de votre méthode actuelle). N'avez-vous pas remarqué une augmentation du temps de reconstruction ? (ou peut-être que cela n'est pas si important par rapport au temps total de reconstruction dans la plupart des cas)

Mise à jour

J’ai à nouveau testé les étapes ci-dessus et elles étaient rapides. Je suppose que lors de la première tentative, j’ai exécuté une autre commande qui a modifié l’arbre Git, ce qui a fini par entraîner le téléchargement de tout lors de l’exécution de git pull.

2 « J'aime »