mac - tortoisesvn linux
¿Hay alguna manera de enviar un archivo "parcialmente" en TortoiseSVN? (8)
Me gustaría comprometer solo una parte de un archivo usando TortoiseSVN, ¿hay alguna forma de hacerlo?
Daré un ejemplo para aclarar por qué quiero hacer eso.
Tengo un archivo con algunas definiciones que se reemplazan en el proceso de compilación, algo como esto:
#define SOME_PATH "[SOME_PATH]"
Esta etiqueta [SOME_PATH] se reemplaza en el proceso de compilación, pero cuando estoy codificando tengo que cambiarla para que sea la ruta real en mi máquina.
Así que cada vez que me comprometo necesito hacer una copia de seguridad de algunas líneas, revertirlas, confirmar y luego restaurar la copia de seguridad, y esto es un poco molesto.
¿Hay alguna manera de decirle a TortoiseSVN que "ignore" algunos cambios en, por ejemplo, las líneas X, Y y Z?
En general, sí! La funcionalidad se ha agregado a la última versión de torroise svn (1.8) Ver notas de la versión Desafortunadamente es un proceso manual que puede no ser tan adecuado para su caso de uso específico, más útil para "Estoy en medio de una nueva función y han notado un error y quieren confirmar solo la situación de la solución de errores.
Para su situación, utilizo un archivo de plantilla que se utiliza en el proceso de compilación para crear el archivo real utilizado (este archivo solo se crea a partir del archivo de plantilla, no hay nada más presente). Tengo el archivo tempalte en svn pero el archivo acutal ignorado. Esto significa que solo necesito compilar una vez después de un nuevo pago y luego mi copia de trabajo está bien, pero los valores para las etiquetas no están comprometidos. Si necesito agregar nuevas etiquetas, lo hago en el archivo tempalte y reconstruyo mi copia de trabajo.
La respuesta más votado está desactualizada.
Desde el sitio web http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-commit.html : http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-commit.html
Commitir solo partes de archivos
En ocasiones, solo desea confirmar partes de los cambios que realizó en un archivo. Tal situación generalmente ocurre cuando estás trabajando en algo, pero luego se debe comprometer una solución urgente, y esa solución está en el mismo archivo en el que estás trabajando.
Haga clic derecho en el archivo y use el Menú contextual → Restaurar después de confirmar. Esto creará una copia del archivo tal como está. Luego puede editar el archivo, por ejemplo, en TortoiseMerge y deshacer todos los cambios que no desee confirmar. Después de guardar esos cambios, puede confirmar el archivo.
Después de que se complete la confirmación, la copia del archivo se restaura automáticamente y usted tiene el archivo con todas sus modificaciones que no fueron confirmadas.
La solución a su problema no es hacer que subversion haga esto por usted, sino configurar su aplicación para que los detalles específicos del entorno (como el valor [SOME_PATH]) se almacenen ''externamente'' al código que está registrado.
Si lo hace a través de un archivo separado marcado para ser ignorado por SVN, o si almacena esta información en una variable de entorno, depende de su lenguaje de desarrollo / sistema operativo y algunos otros factores.
Cualquiera que sea la solución que use, puede ser conveniente organizar algún tipo de incumplimiento para permitir el caso en que no se especifique ningún valor.
También puede valer la pena considerar si los detalles deben aplicarse en tiempo de compilación o tiempo de ejecución; si puede organizar lo último, hace que el despliegue de nuevas versiones de la aplicación sea mucho más fácil.
Un ejemplo típico se encuentra en aplicaciones web, donde se requiere una conexión de base de datos, pero la instancia de base de datos real que se utilizará es diferente entre entornos de desarrollo y producción. En tales casos, la configuración de la base de datos se define en el servidor web (no en la aplicación, que simplemente solicita al servidor web una conexión de base de datos con un nombre dado) con servidores de desarrollo y producción con diferentes configuraciones. Entonces es posible implementar la misma aplicación web en ambos servidores y hacer que cada instancia de la aplicación acceda a la base de datos adecuada.
Lo que está buscando es una función de varios sistemas distribuidos de control de versiones, como darcs .
No.
La mejor manera de hacerlo es revisar un archivo como "build_paths.h.default", luego en cada plataforma de compilación, copiarlo a build_paths.h, modificarlo para que se adapte, y luego decirle a SVN que IGNORE build_paths.h. Y finalmente #include "buiild_paths.h" dentro de su programa.
No. Subversion funciona en el nivel de archivo.
También puedes definir:
- un gancho precompromiso que se encargará de la reversión por usted,
- y un gancho post-commit para restaurar su archivo.
Ouch ... en realidad esta no es una buena idea, de acuerdo con el Manual de SVN .
- Todos los desencadenantes se ejecutan en el lado del servidor (no en el lado del cliente, como es el caso de ClearCase)
- Subversion mantiene cachés del lado del cliente de ciertos bits de datos del repositorio, y si usted cambia una transacción de confirmación de esta manera, esos cachés se vuelven indetectablemente obsoletos. Esta incoherencia puede llevar a un comportamiento sorprendente e inesperado. En lugar de modificar la transacción, simplemente debe validar la transacción en el enlace precompromiso y rechazar la confirmación si no cumple con los requisitos deseados.
Una posible forma sería modificar su archivo en una secuencia de comandos post-commit, y luego confirmar ese archivo como un cambio independiente, antes de restaurarlo en otra secuencia de comandos post-commit ...
Versión corta: NO. Subversion es un sistema de todo o nada (como lo son todos los sistemas de control de fuente que conozco)
Versión más larga: No, sin embargo, si utilizas algo como NANT para construir, podrías usar xmlpoke o similar para reescribir partes del archivo en compilación. Funciona para nosotros :) Reescribimos aproximadamente 6 archivos web.config y varios otros archivos de configuración de la aplicación en la compilación (bueno, al crear un paquete de implementación) ....