De svk a git

Desde que trabajamos en conjunto, Yasser y yo, usamos svk como herramienta de control de versiones distribuida. Así tenemos en alguna PC de la escuela a la cual ambos tenemos fácil acceso el repositorio svn y modificamos nuestros repositorios locales con svk. Ya varias veces svk nos dio problemas para hacer mezclas de los cambios a la hora de ponerlos en el repositorio svn pero el último fue bastante catastrófico, tal es que elimino código que yo había tecleado y cambió otros ficheros porque le dio la gana. En fin, que nos puso en la cabeza la idea de sustituirlo.

Hace tiempo escuché hablar bastante bien de git, tan bien que era el que usan en el Kernel Linux y GNOME está migrando sus repositorios. Tras el chasco con svk decidimos salir a buscar información sobre este tan bien mencionado. Resulto ser mejor de lo que esperaba. El git puede usar como repositorio principal no solo otro repositorio git sino uno svn o cvs. Incluso su uso me parece mucho más sencillo que el de svk.

Ahora está totalmente en uso por lo menos de mi parte, pero ya Yasser y Ariel se piensan sumar a mí en cuanto tengan tiempo. Estas son las acciones básicas que se usan:

Para crear una copia local de un repositorio svn:
git-svn clone <dirección repositorio svn> [directorio destino]


Despues de modificados uno o varios archivos debemos subirlos a nuestra copia:

git add file1.py
git add file2.py
...(por cada archivo modificado)
git commit


Para actualizar nuestra copia local con los cambios que se hayan hecho al repositorio svn:
git-svn rebase


Y finalmente subimos los envíos que hicimos en nuestra copia local hacia el repositorio svn:
git-svn dcommit


En mi caso choque con un pequeño problema: normalmente mantengo una copia de git en mi USB Flash para trabajar en mi casa, pero la misma esta formateada con FAT32 y por consiguiente no soporta los mismos permisos de Ext3. Por eso git veía todos los archivos en la Flash con cambios, aún cuando no se habían tocado. La solución fue más sencilla de lo que esperaba:
git-config core.filemode false


Esto hará que en repositorio local donde se ejecute ignore los permisos de los archivos. Si quieres que esto sea global para todos los repositorios git que se creen solo hay que agregarlo el parámetro --global:
git-config --global core.filemode false


La documentación que use en mi incursión fue Git - SVN Crash Course, An introduction to git-svn for Subversion/SVK users and deserters y claro, git help siempre ayuda.

Comments

  1. Nit picking...

    Es "el Kernel Linux". Linux no *tiene* un kernel, Linux *es* un kernel. En inglés es "the Linux Kernel" y no "Linux's kernel".

    Y, ahora que hay alguien que tomó la delantera... creo que le echaré un vistazo a ese git. Svk me ha dado palos a mí también. Pregunta: ¿alguien habrá hecho un fork para windows? (pensando en la gente del lab...)

    ReplyDelete
  2. Bueno, yo también he notado que hay cierta tendencia de usar git. SVN fue el primer software para el control de versiones que usé (bueno realmente usé un poquito CVS, pero no cuenta) y debo admitir que nunca he tenido problemas muy graves con el.

    Tal vez a SVN le este pasando lo mismo que le sucedió a CVS en su tiempo y ya sea hora de que sus desarolladores le den una repasada.

    Por lo pronto debo encontrar un hueco, para echarle un vistazo a git. Cuando el río suena ...

    ReplyDelete
  3. Gracias Kyrie por el nit pick. Sobre git para Windows te remito a http://git.or.cz/gitwiki/WindowsInstall, de ahi te lo puedes bajar.
    Yoanis, por lo menos a Yasser y a mi ya nos convenció, aunque actualmente estamos usando con SVN de servidor y GIT como sistema distribuido, a lo SVK, pensamos en un futuro usar GIT totalmente.

    ReplyDelete

Post a Comment

Popular posts from this blog

Using wx.stc.StyledTextCtrl

¡Ya tengo Gmail 2.0!

All my old posts imported