J'ai récemment extrait quelques sous-répertoires à partir d'un dépôt git partagé avec
git filter-branch --subdirectory-filter foodir -- --all
Quel est l'impact sur les dépôts clonés après un --index-filtre git filtre-branche « git rm ... »
Maintenant, je Les sous-répertoires sont toujours laissés dans le référentiel central partagé et je voudrais les supprimer. Pour autant que j'ai compris de la recherche sur le web quelque chose comme
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
devrait être utilisé pour supprimer les anciens répertoires de l'histoire. Même si je crois que cela fonctionnera, je me demande maintenant si c'est la meilleure façon de supprimer quelque chose de l'historique dans le cas où le référentiel est partagé, car j'ai compris que tout le monde avec un clone local devrait -clone le dépôt? Donc, ma question ultime est, est-ce que j'ai raison avec ces suppositions ou existe-t-il un moyen de supprimer des répertoires de plusieurs branches dans l'histoire sans que tout le monde doive à nouveau cloner le référentiel?
MISE À JOUR
Je couru quelques tests et un en cours d'exécution avec cette commande: git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch -- Dir1 DIR2' --prune-empty --tag-name-filter cat -- --all
qui fonctionne, mais il change aussi complètement toutes les clés SHA-1 de tous les engage, ce qui est compréhensible mais pas souhaitable. Et cela signifierait que tout le monde doit re-cloner le dépôt et tous les liens précédents via Gitweb vont être brisés.
Nous avons maintenant décidé de supprimer simplement les fichiers dans les répertoires et de les valider. Ce n'est pas un problème de sécurité de les avoir dans le reste de l'historique. Mais si quelqu'un a une meilleure idée s'il vous plaît répondez toujours – AGrunewald