PDA

Ver la versión completa : [Programación] ¿Sistema de control de versiones?



efegea
22/06/2010, 18:46
¿Cuál es el mejor y más sencillo de aprender? Así para principiantes que nunca han usado un sistema de control de versiones...

Tengo pensado usar git, pero no sé si es el que más me conviene. Hay que tener en cuenta que me corre prisa usarlo lo más pronto posible (por eso quiero lo de la facilidad para aprender a usarlo) y que más o menos, entiendo el concepto de cómo funcionan y he bajado muchos ce-uve-eses, ese-uve-enes, y gits, pero que lo más que hecho ha sido clones y updates, y como mucho, cambiar de "branch" (en el código del emulador que estoy portando para el concur....ejem me callo... :D que no se puede decir nada y no quiero hacer hype, sólo anarchy sabe de qué va la cosa :p )

BeaR
22/06/2010, 19:02
Pues anda que para no kerer... nos has puesto los dientes largos a todos TT_TT

Salu2 XD

juanvvc
22/06/2010, 19:13
A mí el que más me gusta es git, porque no tienes que andar con servidores ni historias: tu proyecto está dentro de un directorio y no tienes que subirlo a ninguna parte, ni tener un servidor corriendo. No, ni siquiera para compartirlo en internet :) Eso sí, git solo funciona bien en Linux. Aunque está para Windows todavía se hace muchos líos con los nombres de archivo y codificaciones.

Reconozco que el más sencillo para usar es CVS/SVN. También es el más antiguo y el más problemático con algunas cosas, como los archivos binarios o los directorios y ya no digamos las ramas. Y ponerlo en marcha no es trivial porque necesitas un servidor corriendo en tu ordenador.

Lo dicho, el que más me gusta es git. Solo recuerda que en git lo que fijas no son los archivos en particular, como en CVS, sino el estado del directorio completo sobre el que trabajas. Por eso a veces no es tan evidente como en CVS recuperar un archivo y solo un archivo determinado (aunque se puede hacer, el comando no es demasiado intuitivo) Lo suyo es recupearar el estado completo de un directorio.

- "git init" dentro del directorio de tu código fuente y ya puedes usarlo.
- "git add ARCHIVO" y añades un archivo
- "git rm ARCHIVO" para borrar un archivo
- "git mv ANTIGUO NUEVO" para cambiar el nombre a un archivo
- "git commit -a" y fijas el estado actual de todos los archivos.
- "git tag NAME" para ponerle un nombre a la versión actual
- "git checkout NAME" para recuperar una versión determinada con un nombre

Y hay miles de comandos más más, pero con esas ya vale para empezar.

efegea
22/06/2010, 19:17
Ajá, perfecto, muchas gracias juanvvc, me pondré con git (ya estaba mirándome un tutorialcillo y se veía bastante fácil, aunque no sabía lo de los directorios completos)

juanvvc
22/06/2010, 19:21
Que git fija directorios y no archivos es la diferencia fundamental con cvs. Yo me pasé muchos años en cvs, y eso es lo que más me costó para adaptarme. Si tú empiezas de cero no te costará nada :)

Puck2099
22/06/2010, 19:38
juanvvc, lo que comentas de archivos y no directorios es cosa de CVS, SVN se creó para resolver todos los problemas que tenía CVS (binarios, etc.), así que todo eso está resuelto.

Yo es el que uso y tampoco hay que complicarse mucho, con tener un directorio con el repositorio y el servidor instalado automáticamente (que en Linux es un apt, no lleva configuración y en Windows con el propio Tortoise no hace ni falta) es suficiente.

Por otro lado, yo recomendaría tener la versión del repositorio en un sitio seguro fuera de casa, por si acaso.

Para mí la solución perfecta (que es la que uso) es SVN y el repositorio en un directorio sincronizado por Dropbox. Así tengo un repositorio centralizado con acceso allá donde vaya y a la vez una copia de seguridad actualizada instantáneamente en un servidor de Amazon (que a su vez lleva control de versiones para volver atrás) :)

^MiSaTo^
22/06/2010, 21:45
Yo después de muchos años usando SVN, hace relativamente poco (en Septiembre del año pasado aprox) descubrí git y me quedo con este de calle. Opino como juanvc :brindis:

Además los comandos son parecidos en todos [wei2]

notbad
23/06/2010, 09:56
Yo voto por SVN y sincronización externa también ya que para el Perforce no me llega xD.

Un saludo,
HexDump.

SplinterGU
23/06/2010, 13:04
para mi svn, cubre todas mis necesidades, y solo hago svn add, svn up, svn ci y svn del... con eso estoy feliz

hardyx
23/06/2010, 13:17
Yo uso SVN, porque tenía experiencia con CVS, además con el TortoiseSvn en Windows es muy sencillo de usar.

PharaOnyx
23/06/2010, 13:23
Yo uso y votaría por SVN en otro tipo de encuesta, pero GIT es bastante más sencillo para alguien que empieza

Saludos, Alex

juanvvc
23/06/2010, 13:29
Una ventaja de svn/cvs es que está integrado en los entornos de desarrollo más comunes, por lo que ni siquiera necesitas conocer los comandos y puedes controlarlo con botones. Git aún no llega a tanto, creo :(

Por otro lado, git puede ser caótico si hay mucha gente trabajando en el mismo proyecto porque entonces tienes que crear una jerarquía de programadores de forma externa, por ejemplo con reuniones y cosas así. En svn/cvs es más fácil porque simplemente está todo en el servidor central y ya está :D

Aún así para unos pocos programadores, y sobre todo si eres tú el único, git me parece mucho más fácil de manejar. Incluso para backups: "git push SERVIDOR" y lo tienes todo en un servidor externo (en git es opcional mientras que en cvs/svn es obligatorio el servidor externo, recuerda :) ) "git push SERVIDOR2" y lo tienes todo en OTRO servidor externo. Y así. Por cierto, los servidores no tienen que estar configurados de forma especial. Simplemente tener un servidor SSH y git instalado y ya está.

Puck2099
23/06/2010, 15:46
Aún así para unos pocos programadores, y sobre todo si eres tú el único, git me parece mucho más fácil de manejar. Incluso para backups: "git push SERVIDOR" y lo tienes todo en un servidor externo (en git es opcional mientras que en cvs/svn es obligatorio el servidor externo, recuerda :) ) "git push SERVIDOR2" y lo tienes todo en OTRO servidor externo. Y así. Por cierto, los servidores no tienen que estar configurados de forma especial. Simplemente tener un servidor SSH y git instalado y ya está.

Pero en SVN es igual o más sencillo, no tienes más que copiar el directorio del repositorio y listo, no tiene nada especial.

Obviamente además necesitas tener instalado el cliente donde lo vayas a usar (como en git), pero nada más.

cyantum
23/06/2010, 16:36
En el trabajo usamos subversion, un plugin para Eclipse que va de maravillas y listo, muy fácil.

Saludos :brindis:

juanvvc
23/06/2010, 16:39
Pero en SVN es igual o más sencillo, no tienes más que copiar el directorio del repositorio y listo, no tiene nada especial.

Corrígeme si me equivoco, pero entonces no puedes mantener los dos servidores actualizados a la vez. O sigues trabajando en uno o en el otro. Eso sí, así puedes funcionar como backup del servidor porque recuperar no es más que copiar el directorio y ya.

Una de las caracterísiticas de git (no digo "ventajas", no estoy convencido de que sea una ventaja) es su modelo distribuido. No hay servidores, así que en realidad tu backup es otro programador que esté trabajando contigo, o el ordenador de casa, o el vecino del cuarto. Y todos ellos pueden actualizarse mutuamente así que no hay necesidad de que haya alguien constantemente conectado (el servidor de svn), basta con que esté conectado alguno de tus colegas, el que sea. Claro que eso también lleva a los problemas "quién tiene la copia principal" que es de lo que hablaba antes y svn lo soluciona fácil: el servidor central :)

Ya te digo que para proyectos pequeños y personales mi elección es git. Para proyectos más grandes no estaría tan seguro, aunque a los del kernel Linux les parece ir bien. Ya sabes que git lo programó Linus Torvalds especialmente como sistema de control de versiones del código del kernel de Linux. Una de sus frases lapidatorias que a él tanto le gustan hacer es que tomó cvs/svn como ejemplo de cómo no se hacían las cosas. En caso de duda en alguna decisión de diseño, hacía lo contrario de lo que hiciese cvs :D

subiroff
23/06/2010, 19:28
En mi trabajo trabajamos con SVN desde hace algun tiempo y la verdad es que va bastante bien, a mi me resulta bastante práctico. No lo puedo comparar con otros sistemas porque es el único que he probado, pero tengo un compañero que usa Git en la facultad y tiene muchas ganas de hacer el cambio. Supongo que tarde o temprano lo haremos...

En este enlace hay una comparativa de los 7 sistemas más usados:
http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/

Topochan
23/06/2010, 21:46
git de calle sobretodo si manejas ramas

LTK666
23/06/2010, 21:47
Yo he usado más svn y la verdad que me ha resultado muy sencillo de utilizar desde el primer momento, aunque me gustaría darle una oportunidad a git para ver que tal se adapta al uso que le doy.

Waninkoko
30/06/2010, 20:25
SVN es probablemente mas facil de usar, pero en mi opinion GIT simplemente el mejor sistema de control de versiones. Tampoco es que GIT sea complejo de usar, mas bien lo complejo es saberlo dominar al 100%.

efegea
30/06/2010, 20:27
Bueno, como dije, al final estoy usando git, y me va muy bien.

Waninkoko
30/06/2010, 22:52
No te arrepentiras de la decision :P

nintiendo1
30/06/2010, 23:00
No te arrepentiras de la decision :P

¿Al final que paso con tu reproductor para la GP2X?

Saludos.

Waninkoko
30/06/2010, 23:08
¿Al final que paso con tu reproductor para la GP2X?

Saludos.

Por ahi anda y llego a compilarlo para PS3 (en Linux claro) pero es una basura. Era la primera vez que me metia con hilos y tal y llego un momento que el codigo, aparte de infumable, no era nada optimo.

nintiendo1
30/06/2010, 23:48
Por ahi anda y llego a compilarlo para PS3 (en Linux claro) pero es una basura. Era la primera vez que me metia con hilos y tal y llego un momento que el codigo, aparte de infumable, no era nada optimo.

¿Entonces está abandonado? ¿Vas a sacar algo para otra portatil opensource?

Saludos.

Waninkoko
30/06/2010, 23:54
¿Entonces está abandonado? ¿Vas a sacar algo para otra portatil opensource?

Saludos.

Si y quizas.

J.Slann
01/07/2010, 00:22
Me alegra verte por aquí waninkoko!!