Conservez-vous des dossiers bin ou de débogage (et des dll) dans votre TFS?


11

Question rapide à propos de TFS - Les gars, archivez-vous les dossiers bin / debug dans TFS? (si oui, pourquoi?) Étant donné que le contenu de ces dossiers est généré dynamiquement, est-il préférable de les laisser de côté afin que le programmeur ne rencontre pas de problèmes de lecture seule?


Vous pourriez être intéressé par cette proposition d'échange de pile . Il est presque prêt à commencer la version bêta, en a juste besoin de quelques autres.
greatwolf

Réponses:


27

En règle générale, le contrôle de source est mieux utilisé pour la source uniquement et les fichiers générés ne sont pas source.

Il y a des exceptions. Parfois (en utilisant Visual Studio), vous souhaiterez peut-être conserver le fichier .pdb pour lire les mini-vidages. Parfois, vous ne pouvez pas dupliquer une chaîne d'outils, de sorte que vous ne pouvez pas nécessairement recréer avec précision les fichiers générés. Dans ces cas, vous êtes principalement intéressé à le faire pour les logiciels publiés, pas pour chaque changement VCS, et dans tous les cas, ceux-ci peuvent facilement résider dans des dossiers versionnés. (Ce sont généralement des fichiers binaires, de toute façon, et n'ont pas de changements compréhensibles d'une version à l'autre, et ne bénéficient pas beaucoup de la présence dans un VCS.)


6
Si vous souhaitez conserver les symboles de débogage, il vaut mieux configurer un serveur de symboles . Si vous le faites correctement (avec l'indexation des sources), le débogage d'un mini-vidage va d'abord extraire les symboles de votre serveur de symboles puis la source pertinente de votre contrôle de source ... faites-le manuellement.
Shog9

8

Réponse simple? Non, ne fais pas ça! Je ne peux pas penser à beaucoup de raisons de ne pas le faire, mais aucune raison pour laquelle vous voudriez.

La seule fois où je peux penser que vous archiveriez une dll, c'est si c'est à partir d'une bibliothèque tierce que vous ne vous attendez pas à ce que tous les développeurs aient installé pour construire. Mais même encore, cela ne se trouve pas dans le dossier bin.

Cela étant dit, je travaillais dans une entreprise qui exigeait que chaque package de déploiement soit placé sous contrôle de source, mais c'était pour que nous puissions suivre les différentes versions que nous avions données à notre client et que nous pouvions facilement annuler si nous le devions.


1
Principale raison de ne pas le faire: combien de téraoctets de stockage souhaitez-vous que votre contrôle de code source consomme?
EKW

1
@EKW C # par exemple, historiquement, ne produit pas de binaires identiques à partir de la même source. Cela peut être différent maintenant avec .NET Core mais c'était une des raisons de conserver les binaires générés pour les versions publiées par exemple. Je ne les mettrais cependant pas en contrôle de source. Ce n'est pas le bon outil pour ce travail.
Shiv

5

Nous n'archivons pas le dossier bin dans TFS. Comme vous l'avez probablement remarqué, si vous faites cela, chaque fois qu'un développeur crée la solution, il extrait le dossier bin. Pas bon. Cependant, il existe des bibliothèques dont le projet a besoin pour compiler et exécuter, et notre règle est que tout projet doit pouvoir être ouvert à partir du contrôle de code source, et il doit être compilé et exécuté. Donc, ce que nous faisons est de créer un dossier "BinRef" pour toutes les DLL auxquelles le projet doit avoir une référence et de créer les références du projet à la copie dans le dossier BinRef. Le dossier BinRef est archivé dans TFS.

L'autre avantage de cette approche est que BinRef est toujours au niveau racine du projet Web. Si mon projet existe C:\Projects\Marcie\SomeProjectCategory\ProjectAet que je crée une référence à une DLL qui s'y trouve C:\DLLsThatILike, la référence finira par ressembler à quelque chose comme

\..\..\..\NiceThing.dll

. Vous pouvez conserver vos fichiers de projet dans C:\ProjectAce qui signifie que la référence du projet à NiceThing va exploser sur votre machine. J'espère que les gens ne font pas de références de cette façon, mais je l'ai vu se produire.


2

Nous archivons le contenu des répertoires bin dans le cadre de notre processus de demande de changement. Pour éviter les problèmes de lecture seule, nous copions le contenu dans un dossier séparé et les archivons à partir de là. Notre politique d'entreprise exige que tous les fichiers binaires qui entrent en production soient enregistrés séparément de la source. Ce n'est pas la meilleure solution mais cela fonctionne et cela nous donne les fichiers exacts qui sont en production.


2
Au début j'allais passer par cette réponse, puis j'y ai réfléchi un peu plus. Dans mon entreprise, nous n'avons pas vraiment de plan de reprise après sinistre (trop long pour y entrer). Cela peut être utile dans le cas où vous devez recommencer à zéro. Je pourrais simplement retirer les fichiers binaires du contrôle des sources, les jeter sur le serveur et terminer.
user7676

@ user7676 - vous pouvez simplement recompiler le code avec le numéro de version en cours de production. Mais il faut admettre que si vous n'avez pas de plan de récupération d'urgence et que vous êtes dans une sorte de diaster, ce serait plus facile et plus rapide. PS. VOUS AVEZ BESOIN D'UN PLAN DR!
Ali

1

J'hésite à vérifier tout fichier non textuel dans le contrôle de code source. Surtout ceux qui devraient être générés par le développeur. J'aime aussi garder d'autres fichiers binaires, tels que des images et des PDF, zippés et stockés ailleurs pour chaque balise / version.


0

Non, mais notre outil de contrôle de projet interne le fait automatiquement, ce qui me dérange énormément.

Ma solution est de marquer tous les fichiers dans la version et le débogage comme accessibles en écriture et lorsque TFS se plaint, je lui dis d'ignorer les fichiers, donc je n'ai jamais de problème avec un build échoué.


0

J'évite de les entrer en contrôle de source. Ce sont des informations redondantes, les binaires peuvent être créés par le code source de cette révision. De plus, le code source est toujours à jour, les builds peuvent ne pas être en commit.


0

J'enregistre certains fichiers binaires générés, comme les inter-interruptions .NET d'un autre projet. Donc, si j'ai un projet A qui crée un objet COM, puis que vous utilisez cet objet COM dans un projet B très vaguement lié qui l'utilise via .NET interop, je vérifie que l'interop généré à partir du projet A dans le projet B. Il est ce n'est pas une bonne idée, mais cela doit aller quelque part car AFAIK Visual Studio ne créera pas automatiquement l'interopérabilité pendant la construction.


-2

À mon avis, ne pas stocker de fichiers binaires dans le contrôle de code source est l'une des erreurs les plus courantes. Ils doivent être stockés, versionnés, référencés / étiquetés avec les sources et également créer des outils. Associez-vous à la construction de logiciels non traçables ...


5
Vous avez exprimé votre opinion mais ne nous avez donné aucune raison pour laquelle il s'agit d'une bonne pratique. Une personne intéressée par ce sujet obtiendra peu de valeur de cette réponse sans plus la sauvegarder.
Walter
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.