En
nuestro caso hemos intentado varios servicios incluyendo activecollab, conceptshare, y otros basados en web (ya que trabajamos de forma remota).
Todas en la gran mayoria no funcionan por simples motivos, no puedes llevar un historial + log de versiones, ver las diferencias entre versiones y el peor de todos, no puedes subir un archivo pesado (normalmente no más de 3MB).
Personalmente ya usaba SVN en proyectos libres como
Jaws,
jQuery, y
UI asi que le di una oportunidad.
Después de ya algunos meses debo decir que la productividad ha mejorado, estamos mejor organizados, llevamos un record de lo que se trabaja, cuando y en exactamente qué proyecto, además de tener un backup centralizado. Es genial.
Pero no todo es felicidad. Siempre existen los conflictos, y SVN no es exactamente el mejor sistema de versiones que existe, debido a una limitación de fábrica SVN no funciona "bien" con archivos binarios. Y en cada "commit" no agrega un "parche" con los cambios hechos al archivo (como en todos los archivos de texto), sino "sube y sobreescribe" todo el archivo una y otra vez en cada commit.
Es decir, si tienes un archivo .html de 10KB y el nuevo pesa 11KB, tu base de datos del SVN posiblemente solo aumentará 1KB. Mientras que si subes un archivo binario de 10MB, y una actualización de 11MB, el SVN será de 21MB aprox.
Lastimosamente esto es de fábrica y nunca estuvo pensado para editar binarios asi que no es exactamente un "error". Mientras que otros sistemas de versionamiento más poderosos si lo soportan, uno de ellos es
Git y su port a Python,
Mercurial.
Normalmente Aqt maneja SVN de este modo:
Código :
/proyecto/ (root del proyecto)
/proyecto/design (los psd, ai, png y jpg de exportación)
/proyecto/dev (todo el código del site, html, js, php, etc.)
/proyecto/resources (imagenes y fotos de alta resolucion, videos, fonts, etc, normalmente no se "versionan" pero se guardan en el repositorio)
Asi los diseñadores solo necesitan bajar la carpeta design de cada proyecto al que se suman, el desarrollador solo dev o alguna subcarpeta, y resources es opcional.
Cabe recalcar un punto muy importante para que el versionamiento realmente te "funcione". Nunca hagas un commit por gusto, siempre haz un commit cuando haz hecho un cambio sustancial e importante, y/o basicamente terminaste una tarea. Crear un módulo, un nuevo feature, un bugfix, etc.
Si tu haces un commit cada 5 segundos, tendrás 9000 revisiones en un repositorio con 2 proyectos, en menos de 1 mes. Esto no es óptimo, y además cuando quieras hacer un rollback, no sabras a donde hacerlo.
Otro punto clave es siempre escribir un mensaje descriptivo en el log, ya que este funciona como el título de los posts en cristalab, si no es descriptivo no sabras que es y no podrás ver facilmente qué version es la que buscas.
Un dato extra, si sabes SSH, y tienes un servidor remoto no hay nada mejor que entrar al servidor de hosting via shell, y escribir lo siguiente.
Código :
svn export svn://tuhostingdesvn.com/proyecto/dev public_html
Normalmente, tomará menos de 1 min y ya tendrás todo el site completamente funcional. Para mas datos de mejorar la productividad con SVN busca sobre hooks, trac, y optimización de repositorios.
Suerte.