Tl;dr
-
Techniquement, votre exigence est contradictoire.
-
D'un point de vue plus philosophique, il semble qu'il s'agisse d'un conflit entre la philosophie de l'open source et celle de l'entreprise.
-
Quoi qu'il en soit, je vais vous proposer quelques idées qui me viennent à l'esprit
Techniquement
git
suit ou ignore un fichier.
- Le suivi est facile. Il suffit de ne rien faire à part utiliser git ! Et n'importe quel fichier est suivi.
- L'ignorer est presque aussi facile - il suffit de s'assurer qu'il correspond à quelque chose dans votre fichier gitignore.
- Mais vous ne pouvez pas faire les deux !
- Principale mise en garde : faire passer un fichier de suivi à ignoré n'est pas chose aisée - il suffit d'ajouter le motif approprié à gitignore pour y parvenir une fois le fichier suivi. Le modèle
Meilleures pratiques
Ne démarrez pas un projet git sans avoir créé un fichier
- gitignore
Également en rapport
- gitattributes
Ainsi, la première (et quelque peu irréaliste)
Suggestion 1
- Démarrer un nouveau projet git
- Créer les fichiers gitignore et gitattribute appropriés
- Déboguer si nécessaire avec git-check-ignore
- Copier, ajouter, commit vos fichiers normaux
- Copie, ajout, statut des fichiers qui ne doivent pas être suivis. Le statut doit être propre
Mais comme je l'ai dit, ce n'est pas tout à fait ce que vous souhaitez, car vous voulez une sorte de fichiers partagés mais non suivis. Vous devez donc
Supprimer les fichiers suivis
Vous voulez en fait un git
Crochet post-Clone
Il s'agit d'une tentative aquí
Mais est-ce qu'un mauvaise idée comme expliqué aquí
Ce qui m'amène à la
Différence philosophique
- Une entreprise-employeur souhaite à juste titre contrôler le fonctionnement de ses employés-programmeurs. Ce qui implique différents types de contrôle des machines
- Un logiciel open source aléatoire sur github qui prend le contrôle de la machine d'une autre personne aléatoire est contraire à l'éthique et illégal.
Par conséquent, si vous étiez un gros joueur de fortune-500, l'option naturelle serait de forker git lui-même et d'ajouter une fonctionnalité de crochet post-clone dans votre fork.
Une solution plus raisonnable et à peine plus gênante
Solution 2
- Écrire votre propre script post-clone mais appelable manuellement.
- qui répond à l'exigence de copier en cas d'absence et de laisser en l'état en cas de présence
- Et ajoutez une étape (manuelle) à votre équipe : (1) clone (2) call script
- Et n'oubliez pas le gitignore !!!
Si cette solution vous semble logique, vous préférerez peut-être
Solution 3
Inverser le script-inside-git a git-inside-script
Par exemple, demandez à votre équipe de ne télécharger/copier et exécuter qu'un script qui
- Courses
git clone
- Vérifie l'existence et la pertinence de ces autres fichiers
- Les crée/télécharge si nécessaire (peut-être à partir d'une source indépendante de votre repo principal)