C'est comme ça que vous pouvez le faire avec filtres git :
- Créer/ouvrir le fichier gitattributes :
-
<project root>/.gitattributes
(sera intégré dans le repo)
OU
-
<project root>/.git/info/attributes
(ne sera pas commise dans le repo)
- Ajouter une ligne définissant les fichiers à filtrer :
-
*.rb filter=gitignore
c'est-à-dire exécuter un filtre nommé gitignore
sur tous les *.rb
fichiers
- Définir le
gitignore
dans votre gitconfig
:
-
$ git config --global filter.gitignore.clean "sed '/#gitignore$/d'"
c'est-à-dire supprimer ces lignes
-
$ git config --global filter.gitignore.smudge cat
c.-à-d. ne rien faire lorsque le fichier est extrait du dépôt.
Notes :
Bien sûr, ceci est pour les fichiers ruby, appliqué quand une ligne se termine par #gitignore
appliqué à l'échelle mondiale dans ~/.gitconfig
. Modifiez-le comme vous le souhaitez pour vos besoins.
Attention !
Cela laisse votre fichier de travail différent du repo (bien sûr). Tout check out ou rebase signifie que ces lignes seront perdues ! Cette astuce peut sembler inutile puisque ces lignes sont perdues à plusieurs reprises lors d'un check out, d'un rebasement ou d'un pull, mais j'ai un cas d'utilisation spécifique pour m'en servir.
Juste git stash save "proj1-debug"
pendant que le filtre est inactif (il suffit de le désactiver temporairement dans gitconfig
ou autre). De cette façon, mon code de débogage peut toujours être git stash apply
à mon code à tout moment sans craindre que ces lignes ne soient accidentellement validées.
J'ai une idée possible pour résoudre ces problèmes, mais j'essaierai de la mettre en œuvre une autre fois.
Merci à Rudi et à jw013 pour avoir mentionné les filtres git et les gitattributs.
92 votes
Je ne peux pas dire si c'est une idée terrible ou une idée brillante.
0 votes
@KyleStrand au moins, je peux l'ajouter aux lignes de débogage que je tape et me sentir en sécurité en sachant qu'elles ne seront pas accidentellement validées.
7 votes
Bien, c'est la partie "brillante".
0 votes
Je me sentirais peut-être plus à l'aise avec ce système s'il ne pouvait être appliqué qu'aux lignes d'impression, par exemple. Et je suppose que s'il y a une infrastructure de test unitaire en place qui s'exécute après chaque livraison, ce serait assez sûr.
0 votes
Oh, alors vous pourriez juste changer le
sed
regex0 votes
@Miguelos Ha, il semble que ce soit un doublon. Bien que la question soit beaucoup plus ancienne, la réponse à cette question, qui a remporté la prime, est plus récente que ma question et ma réponse ici.
0 votes
@KyleStrand J'ai devant moi un code qui modifie la première ligne d'un fichier de propriétés avec une date à chaque fois qu'un projet est enregistré. Pour ce scénario, ce serait génial. Si écrire une ligne de date est une bonne pratique, c'est une toute autre affaire :)
0 votes
@progonkpa Je dirais que chaque fois que vous trouvez cette fonctionnalité utile sur une récurrent base, c'est probablement une odeur de "configuration". Par exemple, à mon travail, nous avons actuellement une solution C# avec un projet qui a besoin d'être reconfiguré pour utiliser la version release d'une dépendance C++ particulière afin de fonctionner, même en mode débogage, mais le projet C++ fait partie de la même solution MSVS, donc il ne semble pas y avoir de moyen propre de le faire sans spécifier l'attribut chemin vers la DLL compilée y enlever la dépendance à l'égard du projet . Mais nous ne pouvons pas enregistrer ce changement car il n'est pas correct pour le déploiement.