¿Se registra en las carpetas bin o depuración (y dlls) en su TFS?

11

Pregunta rápida sobre TFS: ¿ustedes registran carpetas bin / debug en TFS? (si es así, ¿por qué?) Dado que el contenido de esas carpetas se genera dinámicamente, ¿es mejor dejarlas fuera para que el programador no tenga problemas de solo lectura?

aggietech
fuente
Quizás te interese esta propuesta de intercambio de pila . Está casi listo para comenzar la versión beta, solo necesita algunos más.
greatwolf

Respuestas:

27

Como regla general, el control de fuente se usa mejor solo para la fuente, y los archivos generados no son fuente.

Hay excepciones. A veces (con Visual Studio) es posible que desee conservar el archivo .pdb para leer minivolcados. A veces no puede duplicar una cadena de herramientas, por lo que no necesariamente puede recrear los archivos generados con precisión. En estos casos, le interesa principalmente hacer esto para el software lanzado, no para cada cambio de VCS, y en cualquier caso, estos pueden residir fácilmente en carpetas versionadas. (Estos son típicamente archivos binarios, de todos modos, y no tienen cambios comprensibles de una versión a otra, y no se benefician mucho de estar en un VCS).

David Thornley
fuente
66
Si está interesado en mantener los símbolos de depuración, es mejor que configure un servidor de símbolos . Si lo hace correctamente (con indexación de fuente), la depuración de un minivolcado primero extraerá los símbolos de su servidor de símbolos y luego la fuente relevante de su control de fuente ... Si solo ingresa y etiqueta cada compilación, tendrá que haz esto manualmente.
Shog9
8

Respuesta simple? No. ¡No lo hagas! No puedo pensar en muchas razones para no hacerlo, pero no hay ninguna razón por la que quieras hacerlo.

La única vez que puedo pensar que revisarías un archivo DLL es si es de una biblioteca de terceros que no esperas que cada desarrollador haya instalado para compilar. Pero aún así, eso no se encuentra en la carpeta bin.

Dicho esto, trabajé en una compañía que requería que cada paquete de implementación se pusiera en control de origen, pero eso fue para que pudiéramos rastrear las diversas compilaciones que le dimos a nuestro cliente y podríamos retroceder fácilmente si fuera necesario.

Tyanna
fuente
1
Razón principal para no hacerlo: ¿Cuántos terabytes de almacenamiento desea que consuma su control de fuente?
EKW
1
@EKW C #, por ejemplo, históricamente no produce archivos binarios idénticos de la misma fuente. Eso puede ser diferente ahora con .NET Core, pero esta fue una razón para mantener los archivos binarios generados para las versiones lanzadas, por ejemplo. Sin embargo, no los pondría en control de la fuente. No es la herramienta adecuada para ese trabajo.
Shiv
5

No registramos la carpeta bin en TFS. Como probablemente haya notado, si lo hace, cada vez que un desarrollador construya la solución, verificará la carpeta bin. No está bien. Sin embargo, hay bibliotecas que el proyecto necesita para compilar y ejecutar, y nuestra regla es que cualquier proyecto debe poder abrirse desde el control de origen, y debe compilarse y ejecutarse. Entonces, lo que hacemos es crear una carpeta "BinRef" para cualquier archivo DLL al que el proyecto debe tener referencia, y crear las referencias del proyecto a la copia en la carpeta BinRef. La carpeta BinRef está registrada en TFS.

La otra ventaja de este enfoque es que BinRef siempre está en el nivel raíz del proyecto web. Si mi proyecto vive C:\Projects\Marcie\SomeProjectCategory\ProjectAy creo una referencia a un archivo DLL que se encuentra C:\DLLsThatILike, la referencia terminará pareciéndose a

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

. Puede conservar sus archivos de proyecto, lo C:\ProjectAque significa que la referencia del proyecto a NiceThing explotará en su máquina. Espero que la gente no haga referencias de esta manera, pero lo he visto suceder.

Marcie
fuente
2

Registramos el contenido de los directorios bin como parte de nuestro proceso de Solicitud de cambio. Para evitar los problemas de solo lectura, copiamos el contenido a una carpeta separada y los registramos desde allí. Nuestra política corporativa requiere que todos los archivos binarios que van a producción se registren por separado de la fuente. No es la mejor solución, pero funciona y nos da los archivos exactos que están en producción.

Walter
fuente
2
Al principio iba a pasar por alto esta respuesta, luego lo pensé un poco más. En mi empresa, realmente no tenemos un plan de recuperación ante desastres (demasiado tiempo para entrar). Esto podría ser útil en el caso de tener que comenzar desde cero. Podría simplemente sacar los binarios del control de la fuente, arrojarlos al servidor y listo.
usuario7676
@ user7676: puede volver a compilar el código en el número de versión que está en producción. Pero admitidamente, si no tiene un plan de DR y está en una especie de desastre, sería más fácil y rápido. PD. ¡NECESITA UN PLAN DR!
Ali
1

Dudo en verificar cualquier archivo que no sea de texto en el control de origen. Especialmente los que deberían ser generados por el desarrollador. También me gusta mantener otros archivos binarios, como imágenes y PDF, comprimidos y almacenados en otro lugar para cada etiqueta / lanzamiento.

Jeremy Heiler
fuente
0

No, pero nuestra herramienta de control de proyectos interna lo hace automáticamente, lo que me molesta muchísimo.

Mi solución es marcar todos los archivos en versión y depuración como editables y cuando TFS se queja, le digo que ignore los archivos, por lo que nunca tengo un problema con una falla de compilación.

Dominique McDonnell
fuente
0

Evito ingresarlos en el control de la fuente. Son información redundante, los binarios pueden ser construidos por el código fuente en esa revisión. Además, el código fuente siempre está actualizado, las compilaciones pueden no estar en commit.

Malfist
fuente
0

Guardo algunos archivos binarios generados, como interops .NET de otro proyecto. Entonces, si tengo un proyecto A que crea un objeto COM, y luego usa ese objeto COM en un proyecto B muy poco relacionado que lo usa a través de interoperabilidad .NET, verifico esa interoperabilidad generada desde el proyecto A en el proyecto B. Es no es una buena idea, pero tiene que ir a algún lado porque AFAIK Visual Studio no creará la interoperabilidad automáticamente durante la compilación.

MK01
fuente
-2

En mi opinión, no almacenar binarios en el control de código fuente es uno de los errores más comunes. Deben almacenarse, versionarse, basarse / etiquetarse junto con las fuentes y también construir herramientas. Suite con software de construcción no rastreable ...

qba
fuente
55
Has expresado tu opinión pero no nos has dado ninguna razón de por qué es una buena práctica. Alguien interesado en este tema obtendrá poco valor de esta respuesta sin más respaldo.
Walter