Trabajando con librerias externas con Subversion y Git
Posted at 18:20:55En este post abordare el tema de las librerias externas y como trabajar con ellas. Como primera cosa deben estar familiarizados con el Control de versiones. Yo lo explicare con mis propias palabras, pero ya se habran dado cuenta de que no soy muy bueno redactando, por lo que sere muy breve y practico.
El Control de versiones se trata de gestionar los cambios que se llevan acabo en el codigo de fuente, imagenes, o simplemente documentos de nuestras aplicaciones. La idea es poder manejar distintas versiones de "algo" de una manera simple (no estar guardando la carpeta para tener una version vieja). Esto consiste basicamente en un repositorio donde estan todos los archivos de tu proyecto. Y tu accedes a el con ciertas herramientas. Si modificas algo debes sincronizar tus archivos con el repositorio, para que cualquier otro usuario del repositorio pueda ver los cambios. La gracia de esto es que es muy facil revertir los cambios en caso de cualquier error, ya que cada vez que sincronizas los archivos en el repositorio se guarda el historial para cada archivo. Ademas es la manera optima para trabajar en equipo (solo tambien). Ya que permite que muchos programadores trabajen sobre el mismo codigo sin pasar a llevar los cambios de los otros, esto ya lo explico mas adelante, por ahora dejemoslo hasta ahi. Los software de control de versiones ofrecen muchas otras opciones tales como crear tags (marcar un estado actual de la aplicacion, como una version para volver facilmente a ella), crear branches (una copia del repositorio donde puedes hacer pruebas, que si te gustan puedes volver a unir con el hilo principal), y bueno muchas otras cosas.
Como primera cosa vamos a ver algunos terminos que se usan tipicamente, para poder usarlos de aqui en adelante, los terminos siempre los use en ingles, asi que los pondre en ese idioma.
- Repositorio: El repositorio es el lugar en el que se almacenan los datos actualizados e históricos, a menudo en un servidor.
- Checkout / Clone: Bajar una nueva copia del repositorio. Este es el primer paso para obtener codigo de terceros o el suyo propio.
- Commit: Un commit es subir al repositorios nuevos cambios.
- Update: Se refiere q traer los ultimos cambios en el repositorio a tu ambiente de trabajo.
- Branch:Un módulo puede ser branched o bifurcado en un momento de tiempo de forma que, desde ese momento en adelante, dos copias de esos ficheros puedan ser desarrolladas a diferentes velocidades o de diferentes formas, de modo independiente.
- Trunk: Es la linea principal del proyecto, por asi decirlo el branch principal... ojo que no es branch

Bueno vistos estos terminos podemos empezar a ver algo mas especifico. En este articulo voy a revisar las 2 opciones mas comunes para trabajar con Control de versiones, estas son: Subversion y Github.
Subversion
Para trabajar con Subversion existen varias opciones de software, yo personalmente uso TortoiseSVN, que es el que mas me acomoda. Cabe mencionar que solo esta disponible para PC, lo pueden DESCARGAR DESDE AQUI, con respecto a Mac no tengo experiencia, pero e buscado algunas alternativas en google y me encontre con este sitio, al preguntar por ahi cual seria la mejor alternativa para Mac xleon me comenta lo siguiente:
Sin duda "Versions" (es de pago). Aunque hay una aplicación de Subversion que se integra en el Finder de Mac. Lo puedes descargar en la web de Tigris (la misma del tortoise). Pero Versions es mil veces mejor.
Si alguien conoce algun programa mejor para mac, porfavor comente y cuentenos a todos cual es
.
Bueno como primer paso, antes de seguir leyendo deberian poner a bajar e instalar un cliente de Subversion ya sea para PC o Mac. Desde ahora en adelante yo seguire mi articulo refiriendome a TortoiseSVN para PC.
Cuando terminen con la instalacion, hagan click derecho sobre una carpeta o el escritorio o cualquier parte, veran que en el menu hay nuevas opciones, justamente las del TortoiseSVN, veran algo como esto.

De este menu la opcion mas importante por ahora es la que dice SVN Checkout, la cual nos permitira bajar un repositorio. Por lo que sera la primera cosa que haremos.
Descargando una libreria externa
Esto es muy sencillo, creen una carpeta con cualquier nombre, por ejemplo "papervision", le dan click derecho a la carpeta y seleccionan SVN Checkout. Se abrira la siguiente ventana del Tortoise, introducen la direccion al repositorio que quieran bajar y luego apretan aceptar. Para este ejemplo nos bajaremos Papervision3D, un motor de 3D para flash.

La url que deben poner en la ventana del Tortoise es: http://papervision3d.googlecode.com/svn/trunk/ , al apretar aceptar comenzaran a descargarse todos los archivos del proyecto. Con esto ya tienen todos los archivos del repositorio, entre los cuales pueden encontrar el source, ejemplos, distintas versiones de la libreria, etc. Ahora notaran que la carpeta tiene un icono distinto al tipico de carpeta, tiene un ticket verde, eso lo agrega TortoiseSVN y representa que la libreria no tiene cambios realizados por ustedes, es decir, esta tal cual la bajaron. Si modifican cualquier archivo adentro veran que ese simbolo cambia a un simbolo de exclamacion rojo, que representa justamente que han cambiado algo. Otro cambio que veran es que si ahora hacen click derecho sobre su carpeta, el menu de TortoiseSVN es distinto. Ahora nos muestra muchas mas opciones, ya que, es esa carpeta esta linkeada a un repositorio. El menu se vera asi:
, por ahora solo destacar de este menu la opcion SVN Update, pueden probar apretarlo ya mismo, veran que se abrira una ventana y finalmente les dira: Completed At revision: 934, esto significa que han actualizado el repositorio, no vieron mayores cambios porque acaban de bajar el repositorio original, pero si la gente de Papervision hiciera cambios, basta con hacer update para obtener los nuevos archivos o directamente se modificaran los archivos actuales, de ser asi aparecera el detalle de todo lo nuevo. En el menu que se extiende tambien encontraran opciones como show log, que les mostrara todo el historial de los archivos desde los comienzos del repositorio, y muchas otras cosas q no me vale detallar ahora. La otra opcion importante es SVN Commit, aunque para los que recien estan aprendiendo esto no les sera muy util por ahora, ya que para usarla deben tener permiso de escribir en el repositorio, esa es la opcion que usa la gente de Papervision para subir los cambios que han realizado en el repositorio. La idea de este post es principalmente explicar como bajar librerias de terceros y como usarlas, por lo que no entrare en detalle en el tema de modificacion. Ahora pasare a explicar como realizar este mismo proceso con Github.
Git
Git es otro sistema de Control de Versiones, es mucho mas nuevo que Subversion, este sistema esta maravillando a muchos equipos de trabajo, por lo que muchas librerias estan migrando a este sistema, por lo que es importante aprender a usarlo y sacar provecho de el ya que esta muy bueno. Me gustaria aclarar que yo recien estoy comenzando con Git
, por lo que comentare los que yo se al respecto. Como primera cosa, Git
es basicamente lo mismo que Subversion, pero integra cosas muy poderosas, ademas de mejorar la performance del sistema bastante. Lo que mas me gusto de Git
es el concepto de Social Coding, si no me equivoco Subversion vendria hacer lo mismo, pero yo no conozco ningun sitio que brinde las posibilidades que nos da Github
(un sitio donde podran navegar por todos los repositorios publicos), ya estoy dando mucha vuelva y quizas nadie me entiende. La gran gracia de esto es que te permite crear un branch de tu libreria favorita y comenzar a trabajar sobre ella, ya sea para mejorarla, jugar o lo que sea. El resto de usuarios en el sitio pueden ver que tu has abierto un Branch de la libreria y pueden ver los cambios que haz hecho, es mas, la misma gente que desarrolla la libreria que has brancheado podria llegar a ver los cambios que haz hecho y si les parecen buenos tienen la posibilidad de unir tu branch con el hilo original (master), esto nos brinda la oportunidad de aportar con nuestros conocimientos sin necesariamente pertenecer al grupo original de desarrollo. Eso para mi es un gran cambio con respecto a Subversion, pero tambien hay otras cosas destacables, tales como que los commit en Github son locales, por lo cual pueden ir guardando los cambios que realizen en el repositorio de manera local y luego sincronizarlo todo con el servidor remoto, que ventajas tiene esto? hacer commit cuando no tengan internet, ya sea en un avion, o que se yo, al medio de la nada. Tambien otra de las cosas a destacar, es el manejo que hade Git de la informacion, la cual consigue una performance notable a diferencia de Subversion, otra diferencia es que Git solo crea una carpeta llamada .git en la raiz del repositorio, a diferencia de Subversion que crea su carpeta .svn en la carpeta raiz y en cada sub-carpeta del repositorio, lo cual es bastante molesto. La verda es que hay otras muchas razones por las cuales encuentro Git mucho mejor que Subversion, pero no van al caso ahora. Vamos a ver como usar esta vaina.
Lo primero es descargar el programa, esto lo hacen desde el sitio oficial http://git-scm.com/download, primera grata sorpresa es que existen versiones para todos los SO tipicos, descargan e instalan. Y ahora la no tan grata sorpresa, el programa simula una consola, por lo que el uso de este es mediante comandos, tambien existen versiones visuales que se paren mas a TortoiseSVN, pero yo la verdad nunca las probe, sobre todo porque el tema de los comandos es bastante sencillo y rapido de usar y a mi me acomoda mucho, es un placer poder usar ls en vez de dir
, los que gusten de linux entenderan. Abran el Git Bash que se acaban de instalar y veran algo como esto:

Ahi si escriben si escriben: ls es como un dir... y con cd "Nombre de la carpeta" entran a los directorios, cd .. vuelven atras, etc, etc es un simple Bash tipo linux. Pueden ir hasta el directorio que quieran usar para guardar sus librerias y luego para hacer checkout de un repositorio (en terminologia Git, hacer un clone) deben escribir:
git clone git://github.com/Papervision3D/Papervision3D.git
Con git no es necesario crear una carpeta primero para hacer el checkout, haciendo clone directamente se creara un directorio con el repositorio. Tambien notaran la gran diferencia en la velocidad de descarga.
Usando las librerias
Para poder utilizar las librerias deben configurar los source path en el Flash IDE, para esto van a edicion - preferencias - van a la solapa de actionscript y van abajo al boton de "actionscript 3.0 settings" luego se les abrira una ventana.

Ahi apretan el boton "+" para agregar una nueva entrada y luego apretan el boton de carpeta para seleccionar la carpeta "c:\DONDEPUSISTELACARPETA\Papervision\branches\fp10\src", le das a todo aceptar y estas listo para usar la libreria.










