2009-04-13 14 views
25

, tengo una pregunta sobre la versión BASE en svn. Sé que es la versión prístina de un artículo de la última vez que se ejecutó la actualización y svn diff y el estado básicamente se ejecutan contra esta versión. ¿Cuándo se actualiza BASE? ¿Se actualiza a HEAD cuando se ejecuta la actualización? ¿Esto siempre es cierto incluso si hubo un conflicto durante la actualización? ¿Qué tiene BASE en caso de conflicto? ¿Todavía tiene la versión de mi última actualización (antes de la actualización más reciente que provocó un conflicto) o se actualizará a HEAD incluso si hay un conflicto?
También cuando se ejecuta svn commit, asumo que BASE se actualiza con mis cambios locales y en este punto BASE, HEAD y mi copia local son todos iguales? Siempre que el compromiso haya sido exitoso.Cuando svn BASE llega a ser igual a HEAD

Respuesta

38

cabeza es la última revisión en el repositorio. BASE es la última revisión que ha obtenido del repositorio. Son lo mismo después de una confirmación o actualización exitosa.

Cuando realiza cambios, sus archivos difieren de las copias BASE. Cuando reviertes, vuelven a coincidir con la revisión BASE. Cuando tienes un conflicto, no actualizas el repositorio. Por el contrario, se considera que sus archivos aún se "editan" como si estuviera haciendo cambios. Después de resolver los conflictos, en esencia ha decidido cómo se verán los archivos finales y luego los confirma como lo haría normalmente. Entonces, los conflictos son como un caso de edición especial.

+3

Son lo mismo, aunque brevemente, después de una actualización, aunque no necesariamente después de una confirmación. Considere directorios y "copias de trabajo de revisión mixtas". – bendin

+0

Al parecer, la creación de estas "copias de trabajo de revisión mixtas", lo que significa que puede crear una confirmación sin tener un conocimiento completo de lo que está sucediendo, es una consecuencia de una de las "reglas fundamentales de Subversion". –

7

BASE es la revisión de su copia de trabajo tal como existe en el repositorio. En otras palabras, su revisión sin los cambios que ha realizado. Entonces, si svn update es un archivo o una carpeta para HEAD, entonces BASE y HEAD son iguales.

Cuando hay un conflicto, BASE se convierte en la revisión antes de la confirmación que entraba en conflicto con su copia de trabajo.

Ejecute svn info en un elemento para ver su revisión de BASE.

Revision Specifiers

0

Teoría: Después de una actualización recursiva exitosa o cambiar la versión base de todos sus archivos se convierte en cabeza. Después de una confirmación o actualización parcial, algunos archivos pueden estar en la revisión HEAD, pero solo después de una actualización que no omitió archivos, puede estar seguro de que todos los archivos están en la misma versión. (Las razones para saltar son obstrucciones o conflictos no versionados).

Pero, ¿por qué necesita saber esto. Subversion debería saber esto internamente, pero este conocimiento no debería importarle al usuario en la mayoría de los casos. (Subversion le advierte automáticamente cuando los archivos están desactualizados).

Por lo que puedo decir, la única vez que realmente necesita asegurarse de que está en una versión estable, cuando está creando una rama de una copia de trabajo.

+1

Solo quería saber cómo funciona svn y sus detalles de implementación. Gracias por su respuesta. – HeretoLearn

3

Es importante cuando está viendo registros, porque svn log without url muestra su registro BASE, pero con url su HEAD log, es por eso que siempre uso "svn log -rHEAD: 1" para ver todos los cambios.

Cuestiones relacionadas