2009-03-26 11 views
9

Cuando publica un repositorio de Subversion a través de Apache Httpd, obtiene una característica extra: puede navegar por la revisión HEAD de sus fuentes con cualquier cliente HTTP.¿Cómo se implementa el/svn-history/path como lo hace Google Code Hosting?

Por ejemplo, tenemos este repositorio:

http://trash-cli.googlecode.com/svn/trunk/ 

con cualquier cliente HTTP (por ejemplo Firefox) se puede navegar por los archivos en la revisión HEAD. El svnbook explica muy bien cómo hacerlo.

Pero Google Code Hosting ofrece una función adicional: puede buscar también las revisiones anteriores. Por ejemplo, puede navegar por la revisión r10:

http://trash-cli.googlecode.com/svn-history/r10/trunk/ 

¿Sabes cómo Google hace eso? ¡Quiero esta característica en el repositorio de mi compañía también! :)

Gracias

Actualizar 1

El siguiente comportamiento nos puede ayudar a resolver el problema. Si vuelvo a visitar un camino que no existe en el repositorio, por ejemplo

http://trash-cli.googlecode.com/svn-history/r10/non-existent 

me dieron el 404 de error siguiente:

Not Found

The requested URL /svn/!svn/bc/10/non-existent was not found on this server.

Sospecho que hay una regla de reescritura de URL abajo del escenario.

Actualización 2

Tenga en cuenta que esto no es el mismo de this question. Quiero exponer este servicio en el repositorio de mi compañía de una manera que sea cómoda para el usuario de una manera que lo haga Google Code. No estoy interesado en cómo obtener una revisión antigua en un repositorio externo que no tenga esta característica. Estoy usando la perspectiva del proveedor del servicio, no la perspectiva del usuario. Quiero hacerles la vida más fácil a mis colegas.

+0

http://stackoverflow.com/questions/651305/how-do-i-browse-an-old-revision-of-a-subversion-repository-through- the-web-view – SilentGhost

Respuesta

0

Creo que la instalación básica (del equipo SubVersion) no viene con esta característica lista para usar. Creo que las personas han creado extensiones o programas sobre o en conjunto con un cliente de Subversion para obtener esa característica.

Si ejecuta el repositorio, probablemente pueda instalar WebSVN (http://websvn.tigris.org/) para obtener lo que necesita. Hay otras opciones, estoy seguro.

0

Anexar algo similar a la URL de su repositorio:

!svn/bc/<revision_number>/ 

P. ej

http://www.example.com/svnrepository/!svn/bc/3/ 

duplicado:How do I browse an old revision of a Subversion repository through the web view?

+0

Tienes razón, pero no es mi problema. Debería ser más claro en lo que estoy preguntando. Actualicé el título y la descripción de la pregunta para aclarar mi problema. –

+0

En cualquier caso, ¡gracias! –

+0

Gracias por esta respuesta, puede que no se relacione con la pregunta de OP pero me ayudó. –

0

que estudió the Apache docs y creo que podría resolverse mediante esta regla en httpd.conf.

RewriteRule ^/svn-history/r([0-9]+)/(.*) /svn/!svn/bc/$1/$2 

yo aún no probarlo. Lo probaré más tarde.

+0

Mire mi respuesta ... También respondí esto en una pregunta anterior. No necesita ninguna reescritura en absoluto. – Seb

+0

Sí, veo tu punto pero leo la Actualización 2 en la pregunta. –

13

Desde el subversion 1.6 release notes:

New public 'historical' HTTP URI syntax for mod_dav_svn (server)

mod_dav_svn now supports a new public URI syntax for examining older versions of files or directories. The intent here is to allow users to examine history without the use of an svn client, and to make it easier for 3rd-party tools (e.g. code-review services) to work directly against repositories without using svn libraries.

http://host/repos/path?[p=PEG][&r=REV]

+0

¡Guau! ¡Esta parece ser la solución más limpia que puedo encontrar! El único problema es que en este momento no tengo subversión 1.6 en mi Fedora y no sé si hay un RPM precompuesto para eso. Gracias de cualquier manera. +1 –

+0

CollabNet proporciona svn rpm (http://www.collab.net/downloads/subversion/redhat.html) pero aún no han empaquetado subversion 1.6. –

+0

Actualización: parece que lo han empaquetado ahora. –

Cuestiones relacionadas