SVN Hook dejó de funcionar: la actualización de SVN no se está ejecutando

Tengo un repository SVN que configuré hace aproximadamente un mes y después de algunas dificultades obtuve un gancho post-commit trabajando para actualizar una copy de trabajo de mi website en el server de desarrollo. Funcionó bien durante varios días y luego, ayer, de repente, se detuvo.

Estoy ejecutando el Servidor VisualSVN desde un server en mi networking. Hasta donde yo sé, nada ha cambiado en el server web o el server que aloja el server VisualSVN. El server de VisualSVN no muestra ningún evento en el visor de events durante los últimos días, por lo que no puedo ver si hay un error y no puedo encontrar ningún file de logging específico para SVN. Cuando ejecuto 'svn log', no muestra nada más que los commits. No estoy seguro si mostraría un error si hubiera uno.

Aquí hay una copy pulida del script que se está ejecutando:

@ECHO OFF setlocal enableDelayedExpansion svnlook dirs-changed %1 -r %2 | findstr /b /i "trunk" IF %ERRORLEVEL% EQU 0 ( FOR /F "tokens=2" %%a IN ('svnlook changed %1 -r %2') DO ( SET NEWA=%%a SET "NEWB=!NEWA:trunk/=!" svn update \\<server-name>\<share>\dev\<working-copy-directory>\!NEWB! --username <svnuser> --password <svnpass>) ) endlocal 

También he comprobado si hay lockings en el server y no encontré ninguno y también ejecuté una limpieza de la copy de trabajo en mi server DEV, todo fue en vano. También intenté una actualización desde otra estación de trabajo, solo para ver si podía ser mi máquina local y todavía no funcionaba correctamente. Por último, también he intentado ejecutar el script desde la command-line y se ejecuta y actualiza la copy de trabajo como debería. En realidad parece como si el server simplemente no lo está ejecutando.

Cualquier ayuda para depurar este problema es muy apreciada.

ACTUALIZACIÓN: Después de encontrar algunas estrategias de debugging, pude confirmar que el gancho se está ejecutando al include un command de la siguiente manera:

 echo hook ran at %date% %time% >> debug.txt 

Esto registró la confirmación, como sería de esperar. También incluí código de debugging similar para asegurarme de que el enganche captaba la troncal / bifurcación correcta, que era y también hice que registrara el directory antes de la actualización, así que era nuevo que ejecutaría ese command. Todo lo cual hizo. Luego, en un bash de registrar la respuesta del server, cambié el código de actualización a lo siguiente:

 svn update \\<server-name>\<share>\dev\<working-copy-directory>\!NEWB! --username <svnuser> --password <svnpass> >> debug.txt) 

Esto no devuelve nada en absoluto. Estoy completamente perdido en esto.

ACTUALIZACIÓN 2: No lo entendí antes cuando estaba probando este problema, pero ahora cuando ejecuto el command solo …

 svn update \\<server>\<share>\dev\<working-copy>\ScriptContent\test.cfm --username <svnuser> --password 

Devuelve "svn: E020024: Error resolviendo caso de" y escupe la ruta que acabo de darle.

Intenté search en Google algunas fonts de este problema, pero lo único que encontré sugiere cambiar las barras diagonales inversas con barras diagonales, pero devuelve exactamente el mismo error, pero con las barras diagonales vuelven a las barras diagonales inversas.

ACTUALIZACIÓN 3: en un esfuerzo por verificar si el error estaba relacionado con el server que se ejecuta como el service de networking y tratando de acceder a la copy de trabajo a través de la ruta UNC, intenté cambiar el service para ejecutarlo en mi nombre y mapear la unidad de networking y usar esta unidad mapeada en el script. Esta testing no me dio ningún error, pero no ejecuté la actualización.

Además, cuanto más pienso en ello, el error que estaba obteniendo de la línea de command en UPDATE 2 anterior probablemente no sea lo que está sucediendo cuando se ejecuta el script, ya que la pantalla de confirmación en el lado del cliente (ejecutada por TortoiseSVN) se mostraría yo el error No muestra ningún error.

Entonces, esto es lo que sé.

  1. La secuencia de commands funcionó bien durante varios días
  2. El guión de repente dejó de funcionar un poco durante el fin de semana
  3. No se realizaron cambios en el server que aloja la copy de trabajo o el server que ejecuta el repository
  4. El gancho no está generando ningún error (ya que estos se mostrarían en la pantalla de confirmación de TortoiseSVN).
  5. El command svn update no se está ejecutando.

Estoy en una pérdida completa.

Después de varios días de luchar con esto, finalmente encontré una solución. VisualSVN Server, de forma pnetworkingeterminada, se ejecuta en la count de usuario del service de networking. Para solucionar el problema, seguí estos pasos.

  1. Configurar la count de usuario en el server del repository como miembro del grupo Administradores del server VisualSVN
  2. Asignado el service Servidor VisualSVN para ejecutarse bajo esta count
  3. Configure la count de usuario en el server web como miembro del grupo Administradores, con el mismo nombre y contraseña que la count en el server de repository
  4. Reinició el service Servidor VisualSVN

Después de eso funcionó. El gancho ejecuta una actualización SVN en los files, exactamente como se esperaba y actualiza la copy de trabajo del server web con los cambios confirmados. Espero que esto sea una ayuda para alguien más también, ya que se necesitó mucho trabajo para resolver esto.

¡Lo que hiciste fue bastante inseguro! NO agregue counts de service a grupos de administradores.

Por lo que veo ahora, la causa raíz fue el acceso insuficiente a la copy de trabajo en un recurso compartido .

Debe proporcionar la count de service del server de VisualSVN con acceso al recurso compartido. (Permisos NTFS y Share). De forma pnetworkingeterminada, el service del server de VisualSVN se ejecuta en la count "Servicio de networking". Esta count se identifica como count COMPUTER en la networking. Por lo tanto, debe proporcionar la count de COMPUTADORA con acceso al recurso compartido donde se encuentra su copy de trabajo. Si aún tiene la intención de ejecutar el server en una count dedicada, ¡el artículo http://www.visualsvn.com/support/topic/00024/ es DEBE LEER!