conoceis algun sistema de revisiones de codigo sobre subversion?

El otro dia estaba comentando con unos compañeros lo utilisimo que resulta tener un sistema de “code review” (revisiones de codigo, para los que no hablan aragones) en cualquier grupo de desarrollo de n personas (para n>1). Es una cosa de sentido comun que se basa en la maxima de que “cuatro ojos ven mas que dos”.

lolcats

Un sistema de revision de codigo, para que nos entendamos, viene a funcionar basicamente asi: tenemos un repositorio de codigo para mantener nuestro proyecto, el desarrollador A tiene una copia de trabajo en su maquina sobre la que edita, añade, corta, pega y colorea lo que sea necesario. Cuando el conjunto de cambios esta listo para sentencia, lo envia a un desarrollador B, que debe revisar los cambios (normalmente mostrados como un diff sobre la copia del repositorio) y aprobarlos para dar permiso al desarrollador A para enviarlos al repositorio con un bonito submit e irse a casa a ver el futbol de una vez. Un sistema de revision de codigo basicamente “ayuda” a este proceso facilitando que el desarrollador A envie el cambio, que el desarrollador B sepa que tiene que revisarlo, manejar los permisos que B da a A y, en el peor de los casos, asegurarse que A no envia ese codigo sin permiso para irse a ver el futbol antes (*)

El sistema tiene la ventaja enorme de que todas esas cosas que a veces “se nos escapan”, son mas faciles de detectar por un compañero (ya sabeis que el problema de mirar tu propio codigo es que es como tu niño… y claro, a nadie su niño le parece feo) Pero tiene varias ventajas mas, especialmente en equipos: asegura que las convenciones de codigo y la estructura se respetan a traves del proyecto (revisar el cumplimiento de las convenciones es parte de la revision), permite al revisor familiarizarse con una parte del sistema con la que puede no haber tenido contacto antes (y por extension, al equipo tener una mejor concepcion del proyecto en conjunto) y permiten en general una mejor comunicacion de cambios (especialmente si recibimos algun cambio que se integre/afecte/colisione con otro cambio en el que estamos trabajando nosotros!)

Todas las compañias “grandecitas” de desarrollo usan algo como esto: Microsoft antes tenia un sistema sobre perforce (que ahora debe haberse cambiado por Team System), Google tiene g4 y Mondrian… y a estos parece que les va bien asi que, habra que probarlo, no?

Vistas todas estas ventajas, seria inevitable ir recomendando a todos los equipos de amigos, familiares y allegados el usar un sistema de revision, asi que he estado buscando si hay algun proyecto que implemente revisiones de codigo sobre un repositorio de subversion, para probar, pero ninguno de los que he encontrado me convence del todo. De momento los que he visto son:

Los open source:

  • Codestriker: Un poco feillo, pero da el pego. Permite revisiones sobre el repositorio o de diffs. Problemas: la gestion de cambios es solo web (yo preferiria que se pudiera desde linea de comandos), no tiene resaltado de sintaxis y no muestra los comentarios sobre el codigo (es un poco mas dificil de leer)
  • Peer review plugin para Trac: construido sobre el sistema de plugins de Trac. Lo de los comentarios flotantes queda mono pero: solo tiene interfaz web, examina cambios en el repositorio y no hace “diffs” de codigo, sino que muestra el contenido ya cambiado (bastante menos util, y requiere mas esfuerzo para revisar)

Los propietarios:

  • Crucible: otro producto de los de Atlassian (responsables del Confluence wiki), y que al igual que el resto, es un poco caro! Una pinta estupenda, interfaz web y seguimiento de revisiones en hilos. Las cosas que no me convencen: la creacion de listas de revision se hace desde el interfaz web y su sistema de gestion de cambios es un poco distinto al proceso que he descrito antes (incluye, por ejemplo la figura del moderador). Ademas, solo funciona sobre cambios YA enviados al repositorio.
  • Code Collaborator: El mas completito que he visto: interfaz web muy mona, se integra con subversion y perforce, clientes de linea de comandos, web, plugin de eclipse… y gestion de cambios antes de ser enviados al repositorio. No me acaba de convencer lo de separar los comentarios normales y los “defectos”. Y como unica nota negativa: el precio! }:/

Asi que acudiendo a vuestra sabiduria colectiva: alguno conoce algun sistema de revisiones que se pueda montar sobre subversion y preferentemente open source? Y de estos que he encontrado, alguien los ha probado y puede comentar sus impresiones?

(*) NOTA: en el ejemplo, si A quiere irse a ver el futbol ya, que se le hace tarde, siempre puede enviar el cambio a B y esperar a la mañana siguiente antes de enviarlo al repositorio. De hecho, recomendaria no hacer ningun submit pasada cierta hora de la tarde, especialmente si es tarde de Viernes… os lo digo por experiencia! }:P

8 Responses to “conoceis algun sistema de revisiones de codigo sobre subversion?”


  1. 1 Pep Lluis

    Yo solo he usao el ’sourcesafe’ ese! en la version 4.0 creo que no sirve pa mucho y ¿no se si servira? pa eso que quieres tu… a demas los que solo tenemos POgramador A y no tenemos POgramador B podemos ir al furbol revisando o sin revirsar, y total pa lo kay que revisar! mejon dejarlo como quedo escrito por primera vez.

    :–))) ¡Es broma!

  2. 2 phobeo

    hey Pep! Sourcesafe solo hace control de versiones de codigo (como CVS o Subversion) pero necesita “algo por encima” para hacer revisiones (que es lo que yo quiero aqui)

    Eso si, para “equipos unipersonales” y para los crases como tu, que solo haceis codigo bueno y a la primera, esto no es necesario! };D

  3. 3 penyaskito

    ¿Y perder la magia de leer diffs? No me hace gracia.

  4. 4 phobeo

    penyaskito: los sistemas estos aun muestran diffs… solo que en forma mas mona y permitiendo comentar sobre ellos

    estoy probando uno muy majo ahora mismo, si funciona pongo otro articulo para que le eches un ojo! y si no te gusta, siempre se puede seguir con las diffs! }:D

  5. 5 penyaskito

    @phobeo:
    Soy todo orejas ;-)

  6. 6 penyaskito

    Por aportar algo:
    Soy feliz con leer los diffs que me llegan al correo, vía un hook de subversion (o el VCS que corresponda).
    Si tengo algo que comentar, reply al mail a la lista de desarrolladores.
    Suele funcionar bien.
    Bezos!

  7. 7 carakan

    Bueno yo soy desarrollador de c#, pero recientemente me meti en el mundo de Ruby on Rails, viendo IDE’s de desarrollo me tope con NetBeans 6 (por ahora van el RC2), tiene un excelente acople con subversion, que permite ver que lineas se han adicionado, modificado y eliminado sin tener que hacer diff (comparacion con el Head y la copia local), bueno espero que les sirva (Netbeans es un IDE para Java, c++ y Ruby).
    Saludos

  8. 8 Jordi

    Yo también estuve mirando y encontré uno que, según dicen, es mejor que el codestriker:

    http://code.google.com/p/reviewboard/

    Saludos

Leave a Reply