git: avoir un fichier .gitignore différent pour chaque télécommande

J’ai un repo à distance dans lequel je veux engager certains fichiers (les fichiers compilés pour les déployer sur une plate-forme de cloud computing), mais je ne veux pas les déployer sur github

existe-t-il un moyen d’avoir différents fichiers .gitignore, un pour chaque télécommande?

Cela n’a pas vraiment de sens dans le modèle de git. Les commits contiennent des ensembles de fichiers; tous les fichiers .gitignore demandent à l’interface utilisateur de ne pas append automatiquement des fichiers correspondant à certains modèles. Ce que cela signifierait effectivement, c’est d’avoir des ensembles de commits parallèles presque identiques, mais ne contenant qu’un sous-ensemble des fichiers.

Il serait possible de le faire avec un schéma de twigment, où vous avez une twig “déploiement” qui se sépare de master et qui est la même mais contient les fichiers compilés supplémentaires. Cela pourrait même être automatisé avec des hooks git pour comstackr automatiquement les fichiers et les append au repository. J’envisage une structure comme celle-ci:

master: A ---> B ---> C ---> D \ \ \ \ \ \ \ \ deployment: -> A' -> B' -> C' -> D' 

C’est-à-dire qu’à chaque fois qu’un nouveau serveur reçoit un nouvel engagement sur le maître, il construit le projet, ajoute les fichiers générés à un nouveau commit de D et le valide dans la twig de déploiement.

Je trouve un moyen de le faire.

Dans mon cas, je devais synchroniser le projet avec heroku et github (en tant que repo public).

Mais certains fichiers avec des informations privées n’étaient pas intéressants à partager dans un référentiel public

Un projet simple aurait généralement la structure de dossier suivante

 Project folder (remote heroku) - .git - .gitignore - (folders and files) 

Ce que j’ai fait a été d’append un niveau supplémentaire, et d’y créer un autre repository git, avec un gitignore qui omettrait certains fichiers de mon projet.

 Project public (remote github) - .git - .gitignore - Project folder (remote heroku) - .git - .gitignore - (folders and files) 

Ce n’est donc pas un repository git avec deux référentiels distants avec des gitignores différents.

Il existe deux référentiels différents.

Au plus profond de moi, je n’exclus que les fichiers générés par l’EDI et certains fichiers générés lors de l’exécution.

Au niveau le plus externe, j’exclus tous les fichiers qui ne peuvent pas être rendus publics.

Une autre option est les sous-modules git .

Cela peut être utile si, par exemple, vous voulez que votre code et votre documentation se trouvent dans deux repos différents avec un contrôle d’access indépendant, etc. Vous aurez donc 3 repos totaux, un repo de sous-module pour docs, un autre pour le code et master “(pas un sous-module git) contenant les deux (pour le téléchargement de pypi, peut-être). C’est une façon décente d’organiser un projet de manuel scolaire. Les deux projets peuvent aller de l’avant indépendamment et se synchroniser lors des versions majeures, pilotées par le responsable des référentiels.

Une solution automatisée aux méthodes mentionnées ici:

  1. Configurez la racine .git pour ignorer le ou les sous-dossiers que vous souhaitez transmettre différemment
  2. Initier un nouveau git dans le ou les sous-dossiers et assigner la configuration distante
  3. Modifiez le fichier .git / hooks / pre-push du dossier racine pour exécuter git push sur ces sous-dossiers en fonction des arguments entrants.