Quelle partie de votre projet devrait être dans le contrôle de code source?


54

Un collègue développeur a commencé à travailler sur un nouveau projet Drupal, et l'administrateur système a suggéré de ne placer que le sous-répertoire sites / default dans le contrôle de code source, car cela "rendra les mises à jour faciles à écrire par script". Mis à part cette affirmation quelque peu douteuse, cela soulève une autre question: quels fichiers doivent être sous contrôle de source? Et existe-t-il une situation dans laquelle un grand nombre de fichiers devrait être exclu?

Mon opinion est que tout l'arborescence du projet devrait être sous contrôle, ce qui serait le cas d'un projet Drupal, de rails ou de toute autre chose. Cela semble être une évidence - vous avez clairement besoin de la gestion de version pour votre framework autant que pour tout code personnalisé que vous écrivez.

Cela dit, j'aimerais avoir d'autres opinions à ce sujet. Existe-t-il des arguments pour ne pas tout contrôler?


2
Tout ce qui génère la représentation finale (y compris la documentation) doit être sous contrôle de version, à condition que le stockage soit réalisable. On dirait que la génération de code est confondue de manière douteuse avec le contrôle de version ici, dans laquelle je vérifierais les revendications de script (lire: générer) des mises à jour faciles à partir de ce que vous avez versionné.
MrGomez

Réponses:


71

Je dirais que le contrôle source doit contenir au minimum tous les fichiers nécessaires pour recréer une version en cours d'exécution du projet. Cela inclut même les fichiers DDL pour configurer et modifier n’importe quel schéma de base de données, ainsi que dans le bon ordre. Bien entendu, moins les outils nécessaires à la construction et à l’exécution du projet, ainsi que tout ce qui peut être automatiquement dérivé / généré à partir d’autres fichiers du contrôle de source (tels que les fichiers JavaDoc générés à partir des fichiers Java du contrôle de source).


1
@ EdWoodcock: Vous avez raison, il peut être très pénible d'obtenir la commande correcte, mais vous souhaitez parfois recréer un état particulier de la base de données, ou éventuellement appliquer certaines modifications lors du test plutôt que de supprimer / recréer le tout. Je trouve que ça varie selon les projets.
FrustratedWithFormsDesigner

1
Point pris, il y a un niveau ou du pragmatisme requis pour celui-là.
Ed James

3
@ JayBazuzi: Les guides de configuration de station de travail (dans le contrôle de source) doivent décrire les outils et dépendances nécessaires, ainsi que la procédure de configuration et l'emplacement d'obtention des outils. Maintenir une boîte à outils utilisable est important, mais n’est pas l’objet du contrôle de source. Je suppose que si vous le souhaitiez VRAIMENT , vous pourriez ajouter le fichier d’installation / .msi et certains fichiers d’instruction, mais cela pourrait ne pas être réalisable sur certains lieux de travail. Voulez-vous vraiment vérifier dans VisualStudio Pro 2010 ou IBM RAD, XMLSpy, etc. dans votre système de contrôle de code source ? De nombreux lieux de travail ont des déploiements contrôlés pour ces outils.
FrustratedWithFormsDesigner

2
@artistoex: C'est couper les cheveux en quatre. Il est généralement admis que la boîte de construction contient les mêmes bibliothèques que les boîtes de développement. Si les deux diffèrent, il y a quelque chose qui ne va pas avec le responsable informatique. Dans l'idéal, tout ce dont vous auriez besoin serait simplement le code source. Certains projets ne sont pas applicables, mais pour la plupart, cela devrait être.
Mike S

1
@mike je le pensais Je pense que c'était Kent Beck dans un livre sur XP qui avait proposé cela. Pas une si mauvaise idée. Vous êtes presque sûr à 100% de pouvoir reconstituer tous les facteurs de construction. Et n'oubliez pas les environnements les plus susceptibles de changer au cours d'un projet.
artistoex

29

Il est préférable de mettre à peu près tout sous le soleil dans le contrôle de la source.

  • Code

  • Bibliothèques

  • Ressources

  • Construire / déployer des scripts

  • Création de base de données et scripts de mise à jour

  • Certaine documentation

  • Fichiers de configuration spécifiques à l'environnement

La seule chose qui ne devrait pas être insérée dans le contrôle de source est la construction d'artefacts pour votre projet.


5
Assurez-vous que la "certaine documentation" ne dépend pas d'un outil en particulier. J'ai rencontré un certain nombre de projets qui utilisaient quelque chose comme la version SunOS de Frame pour la documentation, ils ont archivé tous les fichiers ".mif", mais pas les fichiers .ps ou .pdf obtenus. Maintenant que SunOS et Frame sont relégués à la poubelle de l’histoire, de nombreux documents de conception n’existent que sous forme de précieuses copies papier.
Bruce Ediger

2
@BruceEdiger Dans ce cas, je voudrais personnellement à la fois les informations spécifiques à la sortie et à l'outil. Si l'outil disparaît, vous avez toujours au moins une copie électronique statique :)
maple_shaft

L’un des avantages d’une grande entreprise de processus, c’est la source qui entre dans vcs, les données générées doivent aller dans le système de gestion de la configuration. Ainsi, même si votre outil est obsolète, vous avez toujours les résultats contrôlés
jk.

Que diriez-vous de la version spécifique du (des) compilateur (s) que vous utilisez? Heck, pourquoi pas tout l'OS?
wnoise

18

Je dirais que;

  • tout fichier nécessaire à la compilation entre dans le contrôle de version
  • aucun fichier (qui peut être) généré par la construction ne

J'aurais tendance à placer des fichiers binaires volumineux tels que des packages d'installation d'outils en dehors du tronc, mais ils devraient toujours être sous contrôle de version.


15

Et n'oubliez pas de mettre également tout le code de la base de données dans le contrôle de code source! Cela inclut les scripts originaux de création, les scripts pour modifier les tables (marqués par la version du logiciel qui les utilise, afin que vous puissiez recréer toute version de la base de données pour n’importe quelle version des applications), ainsi que des scripts pour renseigner les tables de recherche.


15

Une expérience difficile à gagner m'a appris que presque tout est dans le contrôle de source. (Mes commentaires ici sont marqués par une décennie et demie de développement pour les systèmes embarqués / de télécommunication sur du matériel propriétaire avec des outils propriétaires, et parfois difficiles à trouver.)

Certaines réponses disent "ne placez pas les fichiers binaires dans le contrôle de source". C'est faux. Lorsque vous travaillez sur un produit avec beaucoup de code tiers et beaucoup de bibliothèques binaires de fournisseurs, vous archivez les bibliothèques binaires . En effet, si vous ne le faites pas, vous devrez procéder à une mise à niveau et vous rencontrerez des problèmes: la version est interrompue car la machine de génération ne dispose pas de la dernière version; quelqu'un donne au nouveau gars les vieux CD à installer; le wiki du projet contient des instructions obsolètes concernant la version à installer; Pire encore, si vous devez travailler en étroite collaboration avec le fournisseur pour résoudre un problème particulier et qu’il vous envoie cinq ensembles de bibliothèques par semaine, vous devez:être capable de suivre quel ensemble de binaires a présenté quel comportement. Le système de contrôle de source est un outil qui résout exactement ce problème.

Certaines réponses disent "ne mettez pas la chaîne d’outils dans le contrôle de source". Je ne dirai pas que c'est faux, mais il est préférable de placer la chaîne d'outils dans le contrôle de source, à moins que vous ne disposiez d'un système de gestion de configuration (CM) extrêmement solide . Encore une fois, considérez le problème de mise à niveau mentionné ci-dessus. Pire encore, j’ai travaillé sur un projet dans lequel quatre types de chaînes d’outils distincts flottaient lorsque j’ai été embauché - tous étant utilisés activement ! L'une des premières choses que j'ai faites (après avoir réussi à faire en sorte que la compilation fonctionne) a été de mettre la chaîne d'outils sous contrôle de code source. (L'idée d'un système CM solide était au-delà de tout espoir.)

Et que se passe-t-il lorsque différents projets nécessitent différentes chaînes d'outils? Exemple: après quelques années, l'un des projets a été mis à niveau par un fournisseur et tous les fichiers Makefiles sont tombés en panne. Il s'avère qu'ils utilisaient une version plus récente de GNU make. Donc nous avons tous mis à jour. Oups, les Makefiles d'un autre projet sont tous tombés en panne. Leçon: validez les deux versions de GNU make et exécutez la version fournie avec votre extraction de projet.

Ou, si vous travaillez dans un endroit où tout le reste est incontrôlable, vous avez des conversations du type "Hé, le nouveau commence aujourd'hui, où est le CD pour le compilateur?" "Dunno, je ne les ai pas vus depuis que Jack a démissionné, il était le gardien des CD." "Euh, n'est-ce pas avant que nous montions du 2e étage?" "Peut-être qu'ils sont dans une boîte ou quelque chose." Et comme les outils ont trois ans, il n’ya aucun espoir de récupérer le vieux CD du vendeur.

Tous vos scripts de construction appartiennent au contrôle de source. Tout! Jusqu'aux variables d'environnement. Votre machine de génération devrait pouvoir exécuter la construction de n’importe lequel de vos projets en exécutant un seul script à la racine du projet. ( ./buildest un standard raisonnable; ./configure; makepresque aussi bon.) Le script doit configurer l'environnement selon les besoins, puis lancer n'importe quel outil permettant de créer le produit (marque, ant, etc.).

Si vous pensez que c'est trop de travail, ce n'est pas. Cela économise en réalité une tonne de travail. Vous validez les fichiers une fois au début, puis à chaque mise à niveau. Aucun loup solitaire ne peut mettre à niveau sa propre machine et valider un paquet de code source qui dépend de la dernière version d'un outil, ce qui en brise la construction pour tout le monde. Lorsque vous engagez de nouveaux développeurs, vous pouvez leur demander de consulter le projet et de l'exécuter ./build. Lorsque la version 1.8 dispose de nombreux réglages de performances et que vous modifiez le code, les indicateurs de compilateur et les variables d'environnement, vous voulez vous assurer que les nouveaux indicateurs de compilateur ne sont pas appliqués accidentellement aux versions de correctifs de la version 1.7, car ils ont réellement besoin du code. changements qui vont avec ou que vous voyez des conditions de course poilues.

Mieux encore , cela vous épargnera un jour: imaginez que vous expédiez la version 3.0.2 de votre produit un lundi. Hourra, célébrer. Mardi matin, un client VIP appelle la ligne d'assistance, se plaignant de ce bogue urgent et supercritique de la version 2.2.6 que vous avez envoyé il y a 18 mois . Et vous devez toujours le prendre en charge contractuellement, et ils refusent toute mise à niveau jusqu'à ce que vous puissiez confirmer avec certitude que le bogue est corrigé dans le nouveau code et qu'ils sont suffisamment volumineux pour vous faire danser. Il y a deux univers parallèles:

  • Dans l'univers où vous ne disposez ni de bibliothèques, ni d'outils, ni de scripts de génération dans le contrôle de code source, ni de système CM solide comme le roc ... Vous pouvez vérifier la bonne version du code, mais cela donne vous toutes sortes d'erreurs lorsque vous essayez de construire. Voyons, avons-nous mis à jour les outils en mai? Non, c'étaient les bibliothèques. Ok, retournez dans les anciennes bibliothèques - attendez, y a-t-il eu deux mises à jour? Ah oui, ça a l'air un peu mieux. Mais maintenant, cet étrange crash de l'éditeur de liens semble familier. Oh, c'est parce que les anciennes bibliothèques ne fonctionnaient pas avec la nouvelle chaîne d'outils, c'est pourquoi nous avons dû mettre à niveau, n'est-ce pas? (Je vous épargne l'agonie du reste de l'effort. Cela prend deux semaines et personne n'est heureux à la fin, pas vous, ni la direction, ni le client.)

  • Dans l'univers où tout est dans le contrôle de code source, vérifiez la balise 2.2.6, préparez une version de débogage dans une heure environ, passez un jour ou deux à recréer le "bogue VIP", recherchez la cause, corrigez le problème. la version actuelle et convaincre le client de procéder à la mise à niveau. Stressant, mais pas aussi mauvais que cet autre univers où la racine des cheveux est 3 cm plus haute.

Cela dit, vous pouvez aller trop loin:

  • Vous devez avoir un système d’exploitation standard dont vous avez une "copie d’or". Documentez, probablement dans un README qui est en contrôle de code source, afin que les générations futures sachent que la version 2.2.6 et les versions antérieures ne construit sur RHEL 5.3 et 2.3.0 et plus tard seulement construit sur Ubuntu 11.04. S'il est plus facile pour vous de gérer les outils de cette façon, allez-y, assurez-vous simplement qu'il s'agit d'un système fiable.
  • La documentation du projet est difficile à maintenir dans un système de contrôle de source. Les documents de projet ont toujours une longueur d'avance sur le code lui-même et il n'est pas rare de travailler sur la documentation de la prochaine version tout en travaillant sur le code de la version actuelle. Surtout si tous vos documents de projet sont des documents binaires que vous ne pouvez pas différencier ou fusionner.
  • Si vous avez un système qui contrôle les versions de tout ce qui est utilisé dans la construction, utilisez-le ! Assurez-vous simplement qu'il est facile de synchroniser l'ensemble de l'équipe, de sorte que tout le monde (y compris la machine de compilation) tire du même ensemble d'outils. (Je pense à des systèmes tels que pbuilder de Debian et à une utilisation responsable de virtualenv de python.)

N'oubliez pas de vérifier tout matériel difficile à remplacer. Une entreprise a perdu une version car elle ne disposait plus d'un processeur (HPPA? 68040?) Sur lequel les outils de génération étaient exécutés.
hotpaw2

1
Que veut dire «système CM»?
Bodo

1
Dans la plupart des cas, je préférerais documenter les fichiers binaires et leurs versions plutôt que de les valider eux-mêmes. Oui, dans votre cas, les fichiers binaires étaient difficiles à obtenir et vous ne disposiez pas d'une autre méthode efficace pour les stocker. Cependant, je pense que documenter toutes les dépendances et savoir comment configurer les éléments (comme la machine virtuelle dev) fonctionne comme un équivalent plus léger. L'écriture de script améliore la reproduction, mais à la fin, nous devons tous expédier.
Iiridayn

Voter à la baisse en raison du conseil de mettre la chaîne d'outils et de créer des artefacts dans le contrôle de source. Oui, si vous avez des solutions de gestion médiocres pour ces solutions, cela peut parfois être nécessaire, mais ce n’est jamais souhaitable. Et les outils OSS populaires tels que PHP seront toujours disponibles (car aucun éditeur ne doit disparaître), ce n'est donc absolument pas nécessaire dans le cas de la présente question.
Marnen Laibow-Koser

13

Les seules choses que je ne mets pas sous contrôle de code source sont des fichiers que vous pouvez facilement régénérer ou qui sont spécifiques au développeur. Cela signifie que les exécutables et les fichiers binaires sont composés de votre code source, de la documentation générée à partir de la lecture / analyse de fichiers sous contrôle de code source et de fichiers spécifiques à l'EDI. Tout le reste entre dans le contrôle de version et est géré de manière appropriée.


7

Le cas d'utilisation du contrôle de source est le suivant: Et si toutes les machines de nos développeurs et toutes nos machines de déploiement étaient touchées par un météore? Vous voulez que la récupération soit aussi proche que possible de la caisse et de la construction. (Si c'est trop bête, vous pouvez choisir "engager un nouveau développeur".)

En d'autres termes, tous les éléments, à l'exception des systèmes d'exploitation, des applications et des outils, doivent figurer dans VCS et dans les systèmes intégrés, où il peut exister une dépendance à une version binaire d'un outil spécifique. J'ai également vu les outils conservés dans VCS!

Le contrôle de la source incomplet est l’un des risques les plus courants que je vois lors de la consultation: il ya toutes sortes de frictions associées à l’embauche d’un nouveau développeur ou à la configuration d’une nouvelle machine. En plus des concepts d'intégration continue et de livraison continue, vous devez avoir une idée du "développement continu" - un informaticien peut-il configurer une nouvelle machine de développement ou de déploiement de manière essentiellement automatique, de sorte que le développeur puisse consulter le code avant la fin leur première tasse de café?


1
Cela signifie également que travailler à partir de plusieurs machines est indolore. Tirez simplement sur le dépôt et vous êtes prêt à partir.
Spencer Rathbun

+1 pour la référence aux météores, cela résume bien les choses.
Muffinista

Quelqu'un peut-il citer un exemple de (par exemple) un projet Java avec la chaîne d'outils complète sous contrôle de rév, de sorte qu'il puisse être extrait et utilisé de manière simple?
Andersoj

@andersoj Découvrez boxen.github.com
Larry OBrien

6

Tout ce qui contribue au projet et pour lequel vous souhaitez suivre les modifications.

Les exceptions peuvent inclure de grands blobs binaires tels que des images, si vous utilisez une scm qui ne gère pas très bien les données binaires.


2

Drupal utilise git, je vais donc utiliser la terminologie de git. J'utiliserais subrepos pour chaque module afin de pouvoir extraire les mises à jour de modules du dépôt officiel de Drupal, tout en préservant la structure des déploiements individuels. De cette façon, vous bénéficiez des avantages de la scriptabilité sans perdre les avantages de tout avoir sous le contrôle de la source.


1

Tout doit être sous contrôle de source, sauf:

  • Les fichiers de configuration, s'ils incluent des options de configuration différentes pour chaque développeur et / ou chaque environnement (développement, test, production)
  • Mettre les fichiers en cache, si vous utilisez la mise en cache du système de fichiers
  • Fichiers journaux, si vous vous connectez à des fichiers texte
  • Tout ce qui ressemble aux fichiers de cache et aux fichiers journaux est généré du contenu
  • (Très) gros fichiers binaires peu susceptibles de changer (certains systèmes de contrôle de versions ne les aiment pas, mais si vous utilisez hg ou git, cela ne les dérange pas beaucoup)

Pensez-y comme ceci: chaque nouveau membre de l’équipe devrait pouvoir extraire une copie de travail du projet (moins les éléments de configuration).

Et n'oubliez pas de placer également les modifications de schéma de base de données (simples copies SQL de chaque modification de schéma) sous contrôle de version. Vous pouvez inclure la documentation utilisateur et API, si cela a du sens pour le projet.


@maple_shaft soulève un problème important avec ma première déclaration concernant les fichiers de configuration de l'environnement dans les commentaires. J'aimerais préciser que ma réponse concerne les détails de la question, qui concerne les projets Drupal ou CMS génériques. Dans de tels scénarios, vous avez généralement une base de données locale et de production, et une option de configuration d'environnement est les informations d'identification de ces bases de données (et des informations d'identification similaires). Il est conseillé de ne PAS les placer sous contrôle de source, car cela créerait plusieurs problèmes de sécurité.

Dans un flux de travail de développement plus typique, je conviens toutefois avec maple_shaft que les options de configuration d'environnement doivent être sous contrôle de source pour permettre la création et le déploiement en une étape de n'importe quel environnement.


3
-1 extrêmement en désaccord avec votre déclaration sur les fichiers de configuration n'appartenant pas au contrôle de source. Peut-être des fichiers de configuration spécifiques au développeur, mais des fichiers de configuration spécifiques à l’environnement sont nécessaires si vous souhaitez créer et déployer un environnement en une étape.
maple_shaft

2
@maple_shaft Dans le contexte de la question (projet Drupal ou projet Web CMS générique), "la création et le déploiement en une étape d'un environnement" est un scénario très improbable (mettra-t-on les informations d'identification de la base de données de production avec tout?). Je réponds à la question, ne fournissant pas de directives générales sur ce qui devrait être mis sous contrôle de version. - Mais votre
vote par voix

Je peux voir dans des situations où le référentiel de code source est public, comme en open source ou dans lequel la sécurité est une préoccupation extrême, comme dans les institutions financières, les informations d'identification de base de données n'appartiennent pas au contrôle de source. Au-delà de ce contrôle de source doit être protégé par un mot de passe et limité à un certain groupe d'utilisateurs. Par conséquent, les informations d'identification de la base de données dans le contrôle de source ne doivent pas être une préoccupation majeure dans ce scénario. Le fait que vous ayez souligné le vote négatif semble dur, mais si vous modifiez votre réponse, je peux la supprimer.
maple_shaft

@maple_shaft Ne vous inquiétez pas du vote négatif (j'ai modifié la question, mais n'hésitez pas à la laisser si vous le souhaitez). En ce qui concerne le contrôle de version protégé par mot de passe: nous avons récemment dû faire face à un cas de vol d'un ordinateur portable à un membre de notre équipe de direction contenant le mot de passe de notre système de contrôle de version (qui à l'époque contenait nos informations d'identification S3). C'était un gros snafu de sa part (l'ordinateur portable n'était pas protégé par un mot de passe, et quelques autres détails que je ne peux pas vraiment révéler) mais c'est quand même quelque chose qui peut arriver à tout le monde. En tirant parti de cette expérience, nous avons tout sorti des vcs.
Yannis

@maple_shaft et bien qu'il puisse sembler que je préconise la paranoïa, nous allons maintenant à l'extrême pour protéger tout ce qui a trait aux informations d'identification des snafus similaires.
Yannis

1

Tout ce que votre génération automatisée génère ne va pas dans le contrôle de source. Tout ce qui ne nécessite aucune modification lors de la génération est utilisé dans le contrôle de source. C'est si simple.

Par exemple, les éléments suivants ne vont pas dans le contrôle de source:

  • code généré
  • binaires générés
  • tout ce qui est créé par votre build
  • tout ce qui a été créé au moment de l'exécution par votre service, processus ou application Web

Que fait-on dans le contrôle de code source?

  • tout ce qu'un humain crée
  • tout élément créé par une autre personne ou un autre groupe (par exemple, une bibliothèque interne tierce où le contrôle de code source est distribué ou les fichiers binaires d'un projet open source).
  • Scripts et autres sources qui créent des éléments comme une base de données (comment recréer la base de données si tous les administrateurs de base de données deviennent AWOL).

Ces règles empiriques reposent sur la notion selon laquelle tout ce qui se trouve sous le contrôle de source peut être modifié par un humain et peut prendre du temps précieux à quelqu'un pour comprendre pourquoi il est là.


1

Tout ce dont vous avez besoin pour travailler et pouvoir changer doit faire l’objet de versions différentes. Mais il est rarement nécessaire que deux systèmes indépendants en assurent le suivi.

Tout ce qui est généré de manière fiable peut généralement être attaché à une version source. Par conséquent, il n’est pas nécessaire de le suivre indépendamment: source générée, fichiers binaires qui ne sont pas transmis d’un système à un autre, etc.

Construisez des bûches et d’autres choses dont probablement personne ne se soucie (mais vous ne le savez jamais avec certitude) sont généralement mieux suivies par celui qui les génère: Jenkins, etc.

Les produits conçus pour passer d'un système à un autre doivent être suivis, mais un dépôt Maven est un bon moyen de le faire. Vous n'avez pas besoin du niveau de contrôle fourni par un contrôle de source. Les livrables sont souvent dans la même catégorie.

Tout ce qui reste (et à ce stade, il ne devrait y avoir qu'un peu plus que les fichiers source et la configuration du serveur), passe dans le contrôle de source.


0

Ma réponse est assez simple: pas de binaires. Par implication, presque tout le reste.

(Ce ne sont certainement pas des sauvegardes de base de données, des migrations de schéma ou des données utilisateur.)


Les migrations de schéma vont absolument dans le contrôle de source. De cette façon, vous savez quel schéma de base de données le code attend.
Marnen Laibow-Koser

0

Le contrôle de source est un mécanisme de suivi des modifications. Utilisez-le quand vous voulez savoir qui a changé quoi et quand.

Le contrôle de source n'est pas libre. Cela ajoute à la complexité de votre flux de travail et nécessite une formation pour les nouveaux collègues. Peser les avantages contre le coût.

Par exemple, il peut être difficile de contrôler les bases de données. Auparavant, nous avions un système dans lequel vous deviez enregistrer manuellement les définitions dans un fichier texte, puis les ajouter au contrôle de source. Cela prenait beaucoup de temps et n'était pas fiable. En raison de son manque de fiabilité, vous ne pouviez pas l'utiliser pour configurer une nouvelle base de données ou pour vérifier à quelle heure une modification avait été effectuée. Mais nous l’avons gardé pendant des années, en perdant un nombre incalculable d’heures, car notre responsable pensait que "tout devrait être sous contrôle de la source".

Le contrôle de la source n'est pas magique. Essayez-le, mais abandonnez-le s'il n'apporte pas assez de valeur pour compenser les coûts.


2
Es-tu sérieux? Le contrôle de la source est mauvais parce qu'il nécessite une formation pour les nouveaux collègues? Voulez-vous dire que vous préférez travailler à long terme avec des personnes qui ne savent pas utiliser le contrôle de source et ne souhaitent pas apprendre? Personnellement, je préférerais retourner des hamburgers.
Zach

Hehe, je ne discute pas contre le contrôle de source, mais contre l'utilisation aveugle du contrôle de source pour tout. Si le contrôle de code source a un flux de travail très complexe et que cela n’ajoute aucune valeur, je préférerais ne pas l’utiliser.
Andomar

2
Mon point est que même si vous ne l'utilisez que pour certaines choses ( toux du code source de la toux ), vos collègues doivent déjà savoir comment l'utiliser. Par conséquent, leur formation ne doit pas être augmentée au-dessus de sa capacité.
Zach

0

Choses que je ne mettrais pas dans le contrôle de source:

  • Clés secrètes et mots de passe
  • Le SDK même s’il s’agit du même répertoire et si je crée un correctif pour le SDK, il devrait en faire un autre projet, car ce serait par framework plutôt que par application.
  • Bibliothèques tierces telles que. Restes de migration, sauvegardes, code compilé, code sous une autre licence (éventuellement)

Je ne fais donc pas, hg addremovepar exemple, de créer un nouveau clone de temps en temps lorsque le SDK est mis à jour. Cela me permet également de faire une sauvegarde complète à chaque fois que le SDK est mis à jour et de vérifier qu'une nouvelle version clonée à partir du référentiel fonctionne correctement.


0

Je vous recommande fortement le livre suivant qui répond à vos préoccupations:

Livraison continue: versions logicielles fiables via l'automatisation de la construction, des tests et du déploiement . Plus précisément, le chapitre 2 traite des éléments à placer dans le contrôle de source, ce qui, comme beaucoup de gens l’ont dit, représente pratiquement tout sauf la plupart du contenu généré à la suite d’une construction.

Je ne suis pas d'accord avec un élément de la réponse acceptée fournie par @FrustratedWithFormsDesigner moins parce qu'il préconise de ne pas placer dans le contrôle de version les outils nécessaires à la construction du projet. Quelque part dans le contrôle de code source (adjacent au code en cours de construction), se trouvent les scripts de construction permettant de générer le projet et les scripts de génération exécutés à partir d'une ligne de commande uniquement. Si, par outils, il entend les IDE et les éditeurs, ils ne devraient pas être obligés de construire le projet, que ce soit. Celles-ci sont utiles pour le développement actif / rapide des développeurs et la configuration de ce type d’environnement peut également être scriptée ou téléchargée à partir d’une autre section de SCM ou d’un type de serveur de gestion binaire. La configuration de tels environnements de développement (IDE) doit être aussi automatisée que possible.

Je ne suis pas non plus d'accord avec ce que @ Yannis Rizos a déclaré sur le placement de configurations pour les environnements dans le contrôle de source. La raison en est que vous devriez être capable de reconstruire n’importe quel environnement à votre guise en n’utilisant que des scripts et que cela n’est pas gérable sans paramètres de configuration dans le contrôle de source. Il n’existe pas non plus d’historique de l’évolution des configurations pour divers environnements sans placer ces informations dans le contrôle de source. À présent, les paramètres de l'environnement de production peuvent être confidentiels ou les entreprises peuvent ne pas vouloir les placer dans le contrôle de version. Une deuxième option consiste donc à les placer dans le contrôle de version afin qu'elles aient un historique et de donner à ce référentiel un accès limité.


-1

Conservez tout le code dans le contrôle de version et toutes les configurations et les données utilisateur. Pour être spécifique à drupal, vous devez tout mettre dans le contrôle de version sauf les fichiers et settings.php

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.