tortoise - SVN y binarios
svn vs git (9)
Como dijo Ben. No pongo binarios que van a cambiar a menudo en control de fuente. Pero 3ra parte dll, ya terminaron en una carpeta lib en mi svn también.
Después de hacer esta pregunta, se me aconsejó no verificar los binarios en subversión. Mi pregunta es, entonces, ¿qué debo hacer con los dll de terceros que deben estar en la carpeta bin? Necesito poder pagar una copia de trabajo y hacer que funcione como un sitio web con todos los dlls, etc. intactos.
De hecho, SVN hace que los binarios de las tiendas sean mucho más eficientes que CVS, para más información, vea el SVN-FAQ
El hecho de que un archivo sea binario no significa que no debería verificarlo. La advertencia debe ser contra el ingreso de objetos derivados en el repositorio. Siempre debería poder construir todos sus objetos derivados nuevamente desde las fuentes. Esto puede significar que necesita tener un binario de terceros en el repositorio.
Idealmente, un repositorio SVN debería requerir cada archivo necesario para construir el objetivo. De modo que si compraste una computadora nueva, instalaste tu compilador y SVN y luego revisaste el repositorio, podrías construir sin tener que encontrar otras dependencias. Así que las bibliotecas de terceros se colocarán en el repositorio, pero los objetivos no.
La excepción a esto sería si está SVNing las imágenes de instalación. Hacemos esto aquí, pero en un conjunto diferente de repositorios que usan nuestros tipos de producción (los programadores no).
Incluyo las DLL necesarias en un directorio DLL en el proyecto y las hago referencia desde allí (con copia en local). Luego, pueden incluirse en el mismo repositorio / carpeta, o ingresarse usando un svn-external desde una ubicación remota (si se comparten en varios proyectos).
Las pautas son simples:
- Todo lo que se requiere para reconstruir la solución debe registrarse *
- Todo lo que se genera en el proceso de compilación debe permanecer fuera
-
* Programas, herramientas, service packs son una excepción obvia a esta regla. Pero tienen que aparecer en una lista en un archivo que está versionado.
Las respuestas a su otra pregunta sugieren que no envíe ningún archivo generado a subversión. Las DLL en la carpeta bin a menudo se crean como parte de la aplicación, por lo tanto, deben regenerarse en lugar de almacenarse en subversión.
Si los archivos DLL son DLL de terceros para los que no tiene el código fuente, los almacenaría en subversión. Debería poner todo en subversión necesario para recrear la aplicación. Eso significa su código fuente y bibliotecas o programas de terceros.
Si por binarios quiere decir archivos ejecutables, la mejor práctica es regenerarlos desde la fuente, si la fuente está disponible. Si por binarios quiere decir archivos que no son de texto, puedo decirle que utilizo SVN todo el tiempo para almacenar archivos que no son de texto (imágenes jpg, archivos de Visio, archivos bmp, documentos de MS Word 2003 con imágenes y diagramas, archivos de MS Project y archivos similares. Nunca he tenido ningún problema con la corrupción ni nada de eso. Y ES MUY conveniente almacenar y administrar todo en SVN.
Siempre controlo los archivos DLL de terceros (en una carpeta ''lib'') para que la aplicación pueda compilarse y ejecutarse desde un nuevo proceso de pago. Creo que la regla de "no verificar en binarios" se aplica a los binarios generados por el código fuente que ha marcado.