Tengo un .bat y dentro del .bat me gustaría ejecutar un código especial si hay alguna modificación dentro del repositorio svn (por ejemplo, compilar).detectar cambios svn en .bat
Respuesta
Para Windows 2000 y más tarde, que se asignaría la última fila de salida del commmand svn status a la variable svnOut y luego probar si la variable contiene nada:
@echo off
set svnOut=
set svnDir=C:Your\path\to\svn\dir\to\check
for /F "tokens=*" %%I in ('svn status %svnDir%') do set svnOut=%%I
if "%svnOut%"=="" (
echo No changes
) else (
echo Changed files!
)
¿Por qué no hay una línea como esta
set svnOut=
tiene que resolverlo usted mismo. ;-)
¿Quieres que esto sea reactivo? O, a pedido?
Para reactivo, consulte hooks. El script tendrá que ser nombrado de acuerdo a su propósito: pre-commit.bat, post-commit.bat. Los guiones son llamados como: [script] [repos-ruta] [revisión-número]
Para, a la carta:
- copia de trabajo
- svn log
- svn st
- svn diff
- SVN proplist
- Repositorio
- svnlook autor
- svnlook cambiado
- fecha svnlook
- svnlook diff
- historia svnlook
Ejemplo:
svn st "C:\path\to\working\directory\" >> C:\path\to\working\project.log
Cada vez que se ejecuta el BAT, que va a añadir el st salida a proyecto. registro. Ajustar según sea necesario.
Bajo demanda. Conozco el comando svn (es fácil encontrarlos en todos lados). La cuestión es saber cómo utilizar que en un script .bat – acemtp
no quiero poner el estado en un archivo de registro :) Quiero el código de la .bat que hacer algo como: si (svn_changed()) haga esto else haga eso – acemtp
Ok, la solución que encontré con la ayuda de Tooony:
set vHEAD = 0
set vBASE = 0
set svnDir=<path to local svn directory>
for /F "tokens=1,2" %%I in ('svn info -r HEAD %svnDir%') do if "%%I"=="Revision:" set vHEAD=%%J
for /F "tokens=1,2" %%I in ('svn info -r BASE %svnDir%') do if "%%I"=="Revision:" set vBASE=%%J
if "%vBASE%"=="%vHEAD%" (
echo No changes
) else (
echo Changed files!
)
que su.ejecute svnversion
(si está utilizando Subversion) o SvnWCRev.exe
(si está utilizando TortoiseSVN) en el nivel más alto de su copia de trabajo.
Ambos salen si su copia de trabajo ha sido modificada.
svnversion
añade una "M" a su salida. SvnWCRev.exe
imprimirá una línea de texto que el WC ha sido modificado.
Esta versión se basa en @ tooony pero comprueba las actualizaciones del servidor en lugar del cliente.
@echo off
set svnOut=
rem Check svn server status of current working directory repository and see if first or second token is an *
for /F "tokens=1" %%I in ('svn status --show-updates') do if "%%I"=="*" set svnOut=%%I
rem echo "%svnOut%"
if "%svnOut%"=="" (
echo No changes
) else (
echo Changed files!
)
- 1. ¿Cómo detectar cambios en UIPickerView?
- 2. SVN: confirme solo algunos cambios
- 3. Cambios de pista: svn + latex
- 4. Ver los últimos cambios en svn
- 5. ¿Cómo puedo detectar cambios en% ENV?
- 6. detectar cambios en EditarTexto (TextWatcher ineficaz)
- 7. detectar eficientemente inscripciones cambios en pitón
- 8. puedo detectar cambios vinculantes en Silverlight?
- 9. Seguimiento de svn upstream cambios con git-svn y github?
- 10. ¿Cómo confirmar los cambios a SVN External?
- 11. Cómo leer los cambios de SVN repo
- 12. Envío de cambios de Hg a SVN
- 13. Cómo detectar cambios de atributo del modelo?
- 14. Cómo detectar cambios de URL con jQuery
- 15. Comparando dos IEnumerable para detectar cambios
- 16. Generar el historial de cambios en un archivo en svn
- 17. Cómo detectar cambios en el encabezado en make list
- 18. Svn revertir todos los cambios en las propiedades
- 19. SVN: fusiona los cambios locales en otra copia de trabajo
- 20. no puedo confirmar los cambios después de fusionarse en SVN
- 21. Revertir los cambios incorrectos con svn en Eclipse
- 22. Crear rama SVN desde cambios en el tronco
- 23. IntelliJ y SVN: "no se detectaron cambios" en la confirmación
- 24. Fusionando cambios no comprometidos en alguna otra rama usando SVN
- 25. cómo detectar propiedades modificadas utilizando el registro SVN
- 26. Detectar cambios programáticos en un cuadro de selección html
- 27. ¿Cómo detectar los cambios bruscos en los contratos WSDL?
- 28. ¿Cómo detectar si se realizaron cambios en las preferencias?
- 29. ¿Cómo detectar cambios de archivos o carpetas en Android?
- 30. ¿Cómo detectar los cambios de torre en Android?
Muchas gracias. Es perfecto, lo probaré lo antes posible. – acemtp
De hecho, no funciona. Por ejemplo, svn status devuelve alguna línea con: ? archivos M archivos2 que son modificaciones locales o archivos que no están en el repositorio. Solo quiero ver "Cambios de archivos" cuando hay algunos cambios en el repositorio. – acemtp
Publiqué la respuesta con una versión modificada – acemtp