Subversion y Squid
Wednesday, August 13th, 2008Trabajando en un proyecto, que lo tengo administrado bajo un repositorio en Subversion, me encontré con problemas al momento de realizar commit, vía web, de los cambios.
Obtenía el siguiente mensaje de error.
$ svn ci -m "cambios"
svn: Falló el commit (detalles a continuación):
svn: MKACTIVITY de '/svn/repos/projectNew/!svn/act/0a63fbb4-16d4-40b1-bc87-2f0dbd0eb709': 400 Bad Request (http://192.168.6.3)
Después de muchos idas y vueltas, pude hacerme con la solución. El problema surge de que el servidor de Subversión se encuentra detrás de un proxy web, específicamente un Squid, por lo tanto, cuando el cliente de Subversion se comunica con el servidor Subversion (vía HTTP), utiliza una serie de métodos que no eran interpretados por el proxy. Los métodos en cuestión pertenecen a un subconjunto del los métodos añadidos al HTTP por WebDAV.
Entonces, para poder solucionar esto, tendríamos que lograr que Squid interprete estos métodos. Por defecto, Squid no los interpreta pero los soporta, de modo que, tendremos que editar la configuración para indicárselo.
# TAG: extension_methods
# Squid only knows about standardized HTTP request methods.
# You can add up to 20 additional "extension" methods here.
#
#Default:
# none
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
Nota: Lo que está encerrado en rectángulo rojo es la configuración que debe ser agregada al archivo.
Una vez guardado los cambios, se debe reiniciar el servicio (/etc/init.d/squid force-reload) para que Squid tomé los cambios en la configuración.
Ahora si volvemos al cliente y probamos el commit no debería dar problemas
$ svn ci -m "cambios"
Enviando informe/001.tex
Enviando informe/002.tex
Enviando informe/003.tex
Transmitiendo contenido de archivos .......
Commit de la revisión 87.
Referencias
- Métodos HTTP utilizados por Subversion[subversion.trigis.org]
- FAQ de Subversion[subversion.trigis.org]