Pregunta

Me acostumbré mucho a la forma en que git tiene que tocar cada archivo que desea confirmar y, mientras lo hace, verifique dos veces el diff. Ahora en el trabajo tengo que usar svn y sigo cometiendo cosas de manera accidental. ¿Hay alguna manera de hacer que la subversión se comporte como git en el sentido de que tengo que decirle explícitamente a todos los archivos que deben incluirse en la próxima confirmación?

¿Fue útil?

Solución

Un método alternativo sería utilizar el puente git-svn en el trabajo, a menos que existan razones por las cuales no puede hacerlo. Nadie más que tendrá que saber que en realidad está usando Git. De esta manera, obtienes todos los beneficios de Git mientras usas Subversion.

Otros consejos

Especifique los archivos en la línea de comando

svn commit -m " Mi mensaje de confirmación " carpeta / archivo1.c

Puede crear un conjunto de cambios que enumere solo los archivos que desea confirmar y luego confirmar el conjunto de cambios. Si es diligente en eliminar conjuntos de cambios cuando haya terminado con ellos y nunca se compromete sin un conjunto de cambios, creo que eso funcionaría para usted. La solución más fácil sería usar un cliente gráfico (como TortoiseSVN, pero hay otros para todas las plataformas con una funcionalidad similar) que le muestra una lista de los archivos que se van a confirmar en el momento en que solicita su mensaje de inicio de sesión. Luego, si hace clic en "Confirmar" sin revisarlos, no es porque no te diga lo que va a hacer :)

Para seguir la respuesta de Rory, si desea aplicar un comportamiento de confirmación de archivo explícito, puede escribir un script por lotes o shell que verifique para asegurarse de que tiene al menos un argumento que no sea el mensaje de confirmación y devuelva un error si no lo hizo 't. Eso al menos te recordaría que coloques explícitamente los nombres de los archivos.

Siempre hago una estadística svn y diff antes de comprometerme de todos modos, por lo que la estadística generalmente me recuerda que puede haber cosas que aún no quería verificar.

Normalmente me comprometo desde algún IDE, como Emacs, donde puedo elegir manualmente un conjunto de archivos para confirmar.

Subversion funciona de la manera deseada por defecto. Agregar elementos agregados , eliminados o modificados se organizan y no se confirman hasta que utiliza el comando de confirmación en el que especifica los archivos que quiero comprometerme Si está utilizando la línea de comando y solo está ejecutando " svn commit " sin ningún otro parámetro, entonces puedo ver cuál podría ser su problema y, en ese caso, usaría la función de conjunto de cambios que otros han sugerido y también usar el tiempo de confirmación como un tiempo de revisión de código para echar un vistazo a todos los cambios y decidir qué hacer en y que no.

También agregaría que es un mal hábito hacer solo commits parciales y solo debe hacerse cuando eres muy consciente de lo que estás haciendo si estás en una rama compartida, ya que es una de las formas más comunes de romper una compilación hacer a cambios inesperadamente interrelacionados que no se incluyen dentro de la misma confirmación.

Lo que hago y recomiendo a otros en el caso de que tenga cambios que quiero confirmar por separado es crear un parche o un conjunto de parches para los cambios que no estoy interesado en realizar en ese momento y luego revertirlos mismos archivos de mi copia de trabajo. Ahora que la copia de trabajo solo tiene los cambios que voy a confirmar, reconstruiré y verificaré la corrección, ya sea haciendo pruebas manuales o pruebas unitarias y luego solo cuando todos estos pasen una revisión y confirmación de código propio. Creo que esta es la forma más segura de interactuar con un grupo grande, especialmente cuando se realizan cambios complejos. Este proceso también podría facilitarse si svn era admitir una función de estantería del lado del cliente para colocar cambios en una tienda temporal con un nombre similar a un conjunto de cambios a través de un solo comando.

También por cierto, el uso de TortoiseSVN hace que sea mucho más fácil para administrar los conjuntos de cambios y los archivos de selección de cereza que irán a cualquier confirmación dada. Si está en Windows, le recomiendo que lo revise por ese motivo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top