{"id":639,"date":"2010-07-02T14:21:24","date_gmt":"2010-07-02T13:21:24","guid":{"rendered":"http:\/\/www.sortea2.com\/blog\/?p=639"},"modified":"2010-07-02T14:37:58","modified_gmt":"2010-07-02T13:37:58","slug":"montar-svn-en-tu-proyecto-web","status":"publish","type":"post","link":"https:\/\/www.sortea2.com\/blog\/2010\/07\/montar-svn-en-tu-proyecto-web\/","title":{"rendered":"Montar SVN en tu proyecto web"},"content":{"rendered":"<p><a href='http:\/\/subversion.tigris.org\/'>Subversion (SVN)<\/a> es, junto a <a href='http:\/\/git-scm.com\/'>GIT<\/a> el l\u00edder en <strong>control de versiones de software libre<\/strong>. Subversion es una mejora del antiguo sistema llamado CVS que ten\u00eda sus limitaciones; aunque a\u00fan se sigue utilizando en multitud de proyectos creo que es mucha mejor opci\u00f3n Subversion.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Subversion logo\" src=\"http:\/\/subversion.tigris.org\/images\/subversion_logo_hor-468x64.png\" title=\"Subversion\" class=\"alignnone\" width=\"468\" height=\"64\" \/><\/p>\n<p>En esta entrada no voy a hablaros de montar un servidor SVN, principalmente porque es una tarea compleja que est\u00e1 destinada m\u00e1s bien a administradores de sistemas. Os voy a hablar de <strong>como configurar vuestro proyecto <\/strong>para beneficiarse del funcionamiento de un servidor existente. Si lo que necesitas es crear t\u00fa mismo un servidor para estos fines, te recomendar\u00eda mejor <a href=\"http:\/\/www.amazon.co.uk\/Version-Control-Subversion-Ben-Collins-Sussman\/dp\/0596004486\">el libro de O&#8217;Reilly de SVN<\/a>.<\/p>\n<p>Para proyectos en los que trabaje m\u00e1s de una persona creo que es una herramienta que una vez se conoce es poco menos que imprescindible. Incluso si trabajamos solos puede servirnos de gran ayuda para no perder ninguno de los cambios que hagamos y poder tener un hist\u00f3rico permanente del proceso de desarrollo.<\/p>\n<p>Antes de adentrarme a explicar la configuraci\u00f3n, dir\u00e9 b\u00e1sicamente en qu\u00e9 puede ayudarnos este sistema:<\/p>\n<ul>\n<li>Cada cambio que se env\u00ede al servidor ser\u00e1 guardado sin sobreescritura. Si nos <em>cargamos<\/em> sin querer un archivo podremos echar mano del SVN para recuperarlo.<\/li>\n<li>Posibilidad de mezclar dos archivos para ver las diferencias respecto a versiones. Podemos ver, por ejemplo, los cambios que hizo alg\u00fan compa\u00f1ero en cada l\u00ednea para comprender como han cambiado las cosas.<\/li>\n<li>Se a\u00f1ade un comentario a cada subida de archivos al servidor que hagamos. Esto ayuda a saber para qu\u00e9 se toc\u00f3 ese fichero.<\/li>\n<li>Todos los cambios de los dem\u00e1s se podr\u00e1n descargar de una vez, solamente aquellos archivos que tengan cambios. A veces, sobre todo en proyectos de programaci\u00f3n web, se tocan archivos diversos de carpetas diferentes y en vez de tener que explorar y mirar las fechas de modificaci\u00f3n, con SVN hacer un par de clics har\u00e1 que ya lo tengamos todo m\u00e1s reciente.<\/li>\n<li>Control del trabajo de cada uno. Para empresas puede ser muy \u00fatil para saber quienes hacen tal cosa. Conocer los porcentajes de c\u00f3digo que escribe cada empleado, etc.<\/li>\n<li>En caso de tratarse de un proyecto de software libre tener un control de versiones <strong>es imprescindible<\/strong>, puesto que necesitamos un lugar en el que la gente que quiera aportar cosas al proyecto pueda conectarse. De cualquier otra manera ser\u00eda un caos.<\/li>\n<\/ul>\n<p>Hasta aqu\u00ed la enumeraci\u00f3n de algunas de las ventajas, estoy seguro que me he saltado decenas de ellas.<\/p>\n<p><strong>Conseguir servidor:<\/strong><\/p>\n<p>Bueno, pues lo primero que necesitamos para empezar es un hosting de Subversion. Hostings hay muchos, aunque la mayor\u00eda son de pago y hay que saber encontrar el \u00f3ptimo. Si tu proyecto es <strong>de software libre<\/strong> no debes preocuparte lo m\u00e1s m\u00ednimo de tener que pagar ni nada, puesto que para apoyar el Software Libre hay hostings gratuitos con capacidades ilimitadas para sus usuarios.<\/p>\n<p>Una comparativa genial de los distintos hostings de Subversion que hay se puede encontrar en <a href=\"http:\/\/www.svnhostingcomparison.com\/\">http:\/\/www.svnhostingcomparison.com\/<\/a><\/p>\n<p>Para software libre est\u00e1 claro que las dos opciones id\u00f3neas deben ser <a href='http:\/\/code.google.com\/hosting\/'>Google Code<\/a> y <a href='http:\/\/sourceforge.net\/'>SourceForge.net<\/a>. Hay m\u00e1s que ofrecen capacidades ilimitadas, pero creo que esos est\u00e1n por delante.<\/p>\n<p>Si nuestro proyecto es de <strong>software propietario<\/strong> entonces tendremos que ajustarnos un poco m\u00e1s, tendremos que escoger entre <strong>pagar para tener algo holgado<\/strong> o encontrar un hosting que permita privacidad en los proyectos y una cantidad de almacenamiento y usuarios aceptable.<\/p>\n<p>Sin duda alguna, la mejor opci\u00f3n gratuita para software propietario es <a href='http:\/\/www.assembla.com\/'><strong>Assembla<\/strong><\/a>. Brinda de manera gratuita 2GB de almacenamiento, un <strong>n\u00famero ilimitado de programadores<\/strong> e incluso <a href=\"http:\/\/es.wikipedia.org\/wiki\/Transport_Layer_Security\">SSL<\/a>; sin contar que la velocidad de subida y bajada es super apropiada.<\/p>\n<p>Hay m\u00e1s opciones, aunque la siguiente mejor ofrece 1\/4 del almacenamiento que da Assembla, por lo que no merecen la pena. Si queremos pagar ya solo depende de lo que necesitemos y lo que podamos pagar, hay un punto en el que compensa tener un servidor dedicado tanto propio como alquilado para que se encargue \u00fanicamente del control de versiones.<\/p>\n<p><strong>Montar servidor:<\/strong><\/p>\n<p>Para <strong>montar el servidor<\/strong> habr\u00e1 que seguir los pasos por los que nos gu\u00ede el sitio web del servicio web escogido hasta que finalmente obtendremos una direcci\u00f3n URL tal que as\u00ed:<\/p>\n<pre>https:\/\/subversion.assembla.com\/svn\/sortea2<\/pre>\n<p>Hay que tenerla muy en cuenta puesto que a esta URL es a la que nos conectaremos. El <strong>usuario y la contrase\u00f1a<\/strong> para conectarse ser\u00e1 exactamente el mismo que el que tuvimos que usar para loguearnos en la p\u00e1gina web.<\/p>\n<p><strong>Programa cliente:<\/strong><\/p>\n<p>A continuaci\u00f3n tendremos que usar <strong>nuestro programa de lado del cliente para conectarnos<\/strong>; esto es, un programa en nuestro ordenador al que le daremos URL, password y usuario y estaremos conectados.<\/p>\n<p>Para Windows el que se utiliza casi siempre es el <a href='http:\/\/tortoisesvn.net\/'><strong>Tortoise SVN<\/strong><\/a>, que es un cliente de escritorio de software libre tambi\u00e9n con una interfaz inmejorable. Una vez lo tengamos instalado este programa lo que hace es a\u00f1adir unas opciones a los men\u00fas contextuales del explorador de Windows relativas a repositorios SVN.<\/p>\n<p><strong>Una nota importante<\/strong> a tener en cuenta para pasos posteriores es que si utilizamos Dreamweaver nos interesar\u00e1 <strong>descargar la versi\u00f3n de 32 bits de Tortoise<\/strong> si luego queremos conectar ambos sistemas. Se puede tener instalada la versi\u00f3n de 32 y de 64 bits al mismo tiempo de cualquier manera, pero conviene tenerlo en cuenta.<\/p>\n<p><strong>Conectarse al repositorio<\/strong>:<\/p>\n<p>La primera vez que queramos establecer conexi\u00f3n tendremos que dar click derecho sobre la carpeta y seleccionar <strong>SVN Checkout&#8230;<\/strong>, en el cuadro que nos saldr\u00e1 pegaremos la URL del repositorio que nos proporcion\u00f3 el sistema de hosting y a continuaci\u00f3n se nos pedir\u00e1 un par de usuario\/contrase\u00f1a. Si le damos a \u00abrecordar\u00bb no volver\u00e1 a preguntar ni pedir autorizaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.sortea2.com\/blog\/wp-content\/images\/subversion_tortoise_checkout.jpg\" alt=\"Ejemplo de Checkout con Tortoise\" title=\"subversion_tortoise_checkout\" width=\"468\" height=\"363\" class=\"alignnone size-full wp-image-649\" srcset=\"https:\/\/www.sortea2.com\/blog\/wp-content\/images\/subversion_tortoise_checkout.jpg 468w, https:\/\/www.sortea2.com\/blog\/wp-content\/images\/subversion_tortoise_checkout-300x232.jpg 300w\" sizes=\"auto, (max-width: 468px) 100vw, 468px\" \/><\/p>\n<p>Una vez aqu\u00ed, si todo ha ido correctamente lo que tendremos que hacer es <strong>subir los archivos al repositorio<\/strong>. Para ello haremos click derecho sobre la carpeta y le daremos a \u00abSVN Commit\u00bb. De ah\u00ed seleccionaremos archivos que no est\u00e9n versionados (\u00abshow unversioned files\u00bb), seleccionaremos los que queramos y se subir\u00e1n uno a uno al hosting de SVN.<\/p>\n<p>Si por el contrario nuestro hosting ya estaba montado anteriormente y lo que queremos es descargar las cosas para tener las copias en local, en vez de \u00abCommit\u00bb seleccionaremos \u00abSVN Update\u00bb y nos descargaremos todo lo que no tengamos descargado.<\/p>\n<p><strong>Integrar con Dreamweaver:<\/strong><\/p>\n<p>Si utilizas Adobe Dreamweaver como entorno de desarrollo quiz\u00e1s lo que m\u00e1s te interese es tener las posibilidades de env\u00edo y recepci\u00f3n de archivos en la misma ventana del programa en vez de estar intercambiando con el explorador de windows para hacer las operaciones.<\/p>\n<p>Dreamweaver desde la versi\u00f3n CS4 <strong>inclu\u00eda un cliente de SVN integrado<\/strong>, el problema viene de que si tenemos un repositorio creado con Tortoise y luego los usamos con el cliente ese de DW no nos servir\u00e1, porque tiene una incompatibilidad documentada que Adobe contempla en su sitio web ofreciendonos un parche. Dicho parche est\u00e1 escrito en Python, por lo que si no tenemos instalado Python (90% de los mortales) no funcionar\u00e1, adem\u00e1s hay que tener en cuenta que la versi\u00f3n de Python <strong>deber\u00e1 ser la de 32 bits<\/strong>, porque si no tampoco se iba a poder instalar el parche, debido a que DW dir\u00e1 que no encuentra una instalaci\u00f3n de Python v\u00e1lida.<\/p>\n<p>En definitiva, es mejor olvidarse de todos estos escollos y simplemente usar una extensi\u00f3n para Dreamweaver llamada <a href='http:\/\/sourceforge.net\/projects\/subweaver\/'><strong>SubWeaver<\/strong><\/a> que act\u00faa como <strong>intermediario entre Dreameaver y Tortoise<\/strong>. Ya es cuesti\u00f3n de usar los men\u00fas contextuales que nos brinda la extensi\u00f3n y estaremos 100% integrados con Tortoise desde Dreamweaver.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Subversion (SVN) es, junto a GIT el l\u00edder en control de versiones de software libre. Subversion es una mejora del antiguo sistema llamado CVS que ten\u00eda sus limitaciones; aunque a\u00fan se sigue utilizando en multitud de proyectos creo que es mucha mejor opci\u00f3n Subversion. En esta entrada no voy a hablaros de montar un servidor [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-639","post","type-post","status-publish","format-standard","hentry","category-tutoriales"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/posts\/639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/comments?post=639"}],"version-history":[{"count":18,"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/posts\/639\/revisions"}],"predecessor-version":[{"id":658,"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/posts\/639\/revisions\/658"}],"wp:attachment":[{"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/media?parent=639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/categories?post=639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sortea2.com\/blog\/wp-json\/wp\/v2\/tags?post=639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}