Pregunta

Quiero que Subversion cometa un archivo incluso si no se modifica. ¿Hay alguna manera de hacer esto?

¿Fue útil?

Solución

Si desea que el contenido del archivo permanezca sin cambios (lo que significa que no puede simplemente cambiar los espacios en blanco como sugirió johnstok), siempre puede cambiar una de las propiedades del archivo.

por ejemplo.

svn propset dummyproperty 1 yourfile
svn commit yourfile

Eso realizará una confirmación sin tener que cambiar el archivo.

Solo asegúrese de no usar una de las propiedades especiales de svn: . Cualquier otra cosa debería estar bien.


Editar: Varios otros pósteres han preguntado por qué alguien querría hacer esto, probablemente las personas que han marcado esta respuesta también han tenido las mismas preocupaciones.

No puedo hablar por el póster original, pero un escenario en el que he visto esto utilizado es cuando se intenta sincronizar automáticamente las actividades en un repositorio de Visual Sourcesafe con un repositorio de subversión.

Otros consejos

Para responder por qué a uno le gustaría hacer confirmaciones forzadas. He visto casos en los que alguien usó un mensaje de confirmación incorrecto o poco claro. Es bueno si puede realizar un compromiso forzado, donde puede corregir este error. De esa manera, el mensaje de confirmación actualizado entra en el repositorio, para que no se pierda.

Arreglé esto eliminando y volviendo a agregar el archivo ofensivo. No es la mejor manera de hacerlo, y probablemente rompió el historial de revisiones, pero se adaptó a mis propósitos.

Motivo para querer hacerlo: el archivo fue uno de los dos ejecutables creados desde la misma fuente (con diferentes #defines establecidos). Un cambio menor en la fuente significaba que uno había cambiado, uno no. Quería registrar en el historial de revisiones que realmente lo había actualizado a la última versión (aunque no hubo cambios).

Tal vez Morten Holdflod M & # 248; ller apunta que " el archivo seguirá siendo parte de la nueva revisión " cubriría esta indicación, pero creo que un registro del archivo sin cambios no mostró comentarios para esa revisión.

Si se trata de un archivo de texto, solo agrega algunos espacios en blanco, como un avance de línea.

Responder a algunas personas cuestionando esto debería ser posible: por alguna razón, svn no reconoce las diferencias entre los archivos de documentos, ¡así que también me gustaría forzar la confirmación!

Ahora estoy moviendo la documentación de direcciones estáticas a svn. los archivos son como UG_v1.2, UG_v1.3 etc. Así que solo para mantener el historial, tomo 1.2, elimino la versión del nombre de archivo y la agrego y la confío en svn. Luego tomo la versión de la segunda, la copio sobre la primera y quiero confirmarla y una versión más nueva. El tamaño del archivo y la fecha de creación cambian (sin mencionar lo que está dentro del documento), pero svn afirma que es perfectamente el mismo archivo y no me permite cometer. Cuando cambio manualmente el documento, svn ve lo diferente. ¿Diablos? : >

No creo que sea posible, pero antes de nada, ¿por qué necesitas hacer eso? Si un archivo no se modifica, no se debe comprometer.

Si realmente desea que ese archivo se agrupe con otros archivos en una confirmación, podría cambiar algo menor dentro (por ejemplo, agregar un espacio).

La razón por la que alguien quiere cometer un archivo sin cambios es una mala interpretación de cómo revertir a una versión anterior de un archivo.

Por ejemplo, uno puede revertir el archivo index.html en la revisión 680 simplemente actualizándolo a una revisión en el pasado, por ejemplo. 650 :

svn update index.html -r 650

pero no resuelve el problema, porque:

svn status -u index.html
        *      650   index.html
Status against revision:    680

svn dice claramente que index.html se modifica de forma remota y no puedes cometerlo, es decir, " piensa " ese index.html es antiguo y debe actualizarse a una revisión más reciente. Por lo tanto, el siguiente svn update devolverá index.html a la revisión 680 .

Para revertir realmente un archivo, debe combinarlo en orden inverso:

svn merge -r 680: 650 index.html

y luego confírmelo svn ci -m " Revertido a r650 " index.html

En realidad, me he encontrado con una razón para hacer un compromiso de fuerza. Probablemente no sea la mejor práctica, pero colocamos Truecrypt ( http://www.truecrypt.org/ ) Volúmenes en SVN porque debemos mantener una seguridad estricta en algunas secuencias de comandos de shell, ya que contiene información confidencial. Cuando se crea un volumen de Truecrypt, sus datos binarios se mantienen igual sin importar lo que haga con él. En efecto, puedo cambiar el contenido del volumen, pero el volumen nunca aparece cambiado.

Cambiar la propiedad NO forzará el compromiso.

TortoiseSVN 1.4.5, compilación 10425 - 32 bits, 2007/08/26 11:14:13

Tengo el mismo problema con un volumen de trueCrypt.

Agregué una nueva propiedad (como se sugirió anteriormente) " forceCommit1 " Y a ellos pude cometer el archivo de volumen. pero solo se comprometió la propiedad, no el contenido del archivo.

Quité el archivo y lo agregué nuevamente a la svn

¿Pensé que podrías hacerlo desde la línea de comandos?

svn ci -force <filename>

No tengo un repositorio aquí para verificarlo, por lo que podría estar equivocado.

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