2010-01-31 10 views
60

Quiero estar seguro de que si compro algo en Subversion desde una máquina y pago en otra, obtendré el mismo valor para datetime y timestamp.¿Cómo puedo conservar la marca de tiempo del archivo original [commit] en Subversion?

Actualmente, observé que la fecha de la modificación del archivo es desde el momento en que hice la sincronización en lugar del valor original.

Para mí, no tiene sentido saber cuándo se sincronizaron los archivos: solo quiero ver la última hora de confirmación.

Este problema no está relacionado con la zona horaria.

+0

En segundo lugar esto - si no es posible, tal vez debería ser una solicitud de función. –

+0

¿por qué es esto valioso? – thekbb

+6

Caso de uso: tiene un producto (fuente) modificado por su equipo y cada vez que se actualiza el producto, necesita resincronizar los cambios. Si se modifican las marcas de tiempo de los archivos, la comparación de archivos no funcionará, o será mucho más lenta. Se produce algún problema si desea sincronizar dos cajas diferentes que tienen modificaciones locales, modificaciones que nunca irán en sentido ascendente. – sorin

Respuesta

57

Se puede establecer en :

[miscellany] 
use-commit-times = yes 

pesar de que tendrá efectos secundarios extraños, si estamos hablando de archivos de origen.

Por ejemplo, construyes tu software y haces svn update. Ahora la marca de tiempo de los archivos actualizados es anterior a la marca de tiempo del archivo de resultados de compilación, y no se reconstruirá aunque algunos archivos de origen hayan cambiado. Ten mucho cuidado con esta configuración.

+10

Esto establece el tiempo de modificación de la copia extraída para que sea igual a la hora en que los cambios se comprometieron por última vez en el repositorio. Esto * no * es lo mismo que preservar la fecha de modificación del archivo cuando se importó originalmente en el repositorio. – bendin

+3

Creo que es lo que OP significa, tal como se afirma en la pregunta, "Solo quiero ver la última hora de compromiso". – silk

+0

Parece que la solución obvia no está implementada: lo que me gustaría es transferir el tiempo de modificación (no el tiempo de confirmación o de salida) y al fusionarme durante el proceso de pago se usa la hora más reciente. – Jochen

22

Si está utilizando TortoiseSVN, hay una opción. TortoiseSVN -> Configuración -> General -> "Establecer fechas de archivo para la 'última hora de confirmación'".

+6

Esta no es la marca de tiempo original. – oefe

+0

Esta opción parece una buena solución, pero ¿cómo puedo controlar esto cuando uso el cliente svn de línea de comando (como SlickSVN y no TortoiseSVN)? Una solución multiplataforma sería mejor. – sorin

+1

Los estados de OP: "Para mí, no tiene sentido saber cuándo se sincronizaron los archivos, solo quiero ver ** la última hora de confirmación **." –

10

Subversion no conserva la marca de tiempo original del archivo.

Si necesita conservar la marca de tiempo, tiene que hacerlo usted mismo. Por ejemplo, puede almacenar la marca de tiempo original como propiedad de Subversion.

+0

Eso no es cierto, puede aplicar esto con una configuración, no tiene que hacerlo usted mismo. – silk

+8

Againg, no-use-commit-times = yes es la hora en que se cometió el archivo, no la fecha y hora original. – oefe

+0

Ahh, vale, te malentendí, lo siento. – silk

0

Parecería que 'stat -c% y $ FILE' se utiliza como parte de un gancho de cambio de preprogramación que opera en svn: date. El único problema que podría ver es el formato de fecha.

Cuestiones relacionadas