3 votes

Fichiers .gitignore en fonction de leur contenu

Je cherche un moyen d'ignorer les fichiers dans git qui ont un certain chemin dans leur fichier. Ce sont des fichiers XML qui sont tous stockés ensemble, mais certains font référence à des dossiers qui sont dans .gitignore. Je veux exclure les fichiers XML qui font référence à ces dossiers.

Est-ce possible uniquement avec .gitignore ? Je peux imaginer d'autres moyens d'y parvenir, comme forcer le maintien de ces fichiers avec un script, mais ce ne serait pas favorable.

4voto

bk2204 Points 6334

Non, Git ne permet pas d'ignorer des fichiers en fonction de leur contenu. Cela impliquerait de lire chaque fichier de votre arborescence de travail pour déterminer s'il contient une chaîne particulière, et dans de nombreux cas, vous pouvez avoir un grand nombre de fichiers générés, de sorte qu'une telle opération serait extrêmement coûteuse. L'un des objectifs de .gitignore est d'améliorer les performances en ne prenant pas en compte les fichiers qui ne sont pas intéressants.

Vous devrez adopter une autre solution, par exemple en plaçant ces fichiers dans un seul dossier ou en les nommant selon une certaine convention afin de pouvoir les ignorer à l'aide d'un modèle basé sur le chemin d'accès.

1voto

rackpit Points 13

Pour être honnête, je ne comprends pas très bien ce que vous entendez par "forcer la conservation de ces fichiers avec un script", donc peut-être que c'est la méthode que vous ne préférez pas : Je suggère de générer un (second) .gitignore via le fichier crochet de pré-commission y git add les fichiers XML souhaités automatiquement, comme par exemple :

grep -l <referenceToFolderToAvoid_1> <pathToXmls>/*.xml > <pathToXmls>/.gitignore
...
grep -l <referenceToFolderToAvoid_N> <pathToXmls>/*.xml >> <pathToXmls>/.gitignore

git add <pathToXmls>/*.xml

Au lieu d'insérer tous les chemins à la main, le second .gitignore pourrait être généré en utilisant le contenu de votre fichier .gitignore fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X