# [programación] control de versiones [cerrado]

## Theasker

Me estoy empezando a meter en php, y me estoy cansando de hacer copias de seguridad cada rato. 

Me preguntaba qué sistemas de control de versiones usáis y cual sería mejor y más práctico para un novato como yo y cómo funcionan.

He visto por ahí trac, svn, subversion, ... no tengo ni idea de cual es mejor para mis modestas necesidades.

Gracias anticipadas y un saludo para todos

----------

## gringo

con svn y de git poco te podré ayudar, dicen que git es el mejor de todos pero nunca me he parado a mirarlo a fondo.

Yo simplemente uso rsync porque soy animal de costumbres fijas, para lo que hago me llega y sobra.

Una rápida búsqueda en google me ha sacao esto : http://www.vicente-navarro.com/blog/2008/01/13/backups-con-rsync/

saluetes

----------

## Theasker

Gracias por la respuesta, pero me refería a algo más enfocado a la programación. Que me controle los diferentes cambios que haga en el código para poder volver a versiones anteriores pero que sea sencillo de usar, ya que he leído un poco últimamente sobre el tema pero ... me lio un montón.

Por ahora uso Netbeans 7.0.1 y estoy intentando hacerlo funcionar, por ahora sin conseguirlo, con Google Code, Bitbucket y Github (probando por ahora con Git y Mercurial) para no tener que preocuparme de tener que mantener un servidor de control de versiones en mi ordenador, pero como he dicho anteriormente aun no he conseguido configurar y entender bien como funcionan y hacerlo funcionar. Programo con Linux en casa y con XP en el trabajo, pero ... con problemas por el firewall por el que paso que me restringe demasiado las conexiones.

gracias de nuevo por tu preocupación.

----------

## Stolz

Yo uso Subversion y Git, ambos probados a fondo tanto cliente como servidor prácticamente a diario. También existe Mercurial pero a penas lo he usado por lo que no lo comentaré.

Subversión es mucho más sencillo de de usar como cliente. Los comandos son menos, mas cortos y algo más intuitivos. Tendrás que leer menos documentación para llegar a tener un flujo de trabajo cómodo. El servidor es centralizado y se configura de forma tradicional, como cualquier otro servidor (apache, mysql, bind,....). Resulta un concepto más sencillo de entender. Lo malo de subversión es que, con el tiempo, en proyectos grandes, siempre falla algo (de momento en mi caso siempre ha sido recuperable) y cuando necesitas algo más complejo (ramas divergentes, mezcla de ramas, releases, tags,....) se queda corto o se vuelve sumamente incómodo de usar.

Git es mucho más potente, más flexible, MUCHO más rápido, mucho más fiable y mucho más complicado como cliente. Los comandos son más numerosos, aceptan más parámetros, y los conceptos son muy complicados para un novato. Además no es centralizado, cada cliente es a la vez servidor, todo está distribuido y cuesta más de entender el concepto. La parte "servidor" (entre comillas porque cada cliente es servidor)en cambio, es mucho más sencilla de configurar que en Subversion.

Mi consejo es:

- si lo vas a usar con más desarrolladores, necesitas crear múltiples ramas o mucho flujo social -> Git

- si solo lo vas a usar tu y solo pretendes tener un backup por versiones -> Subversion

Por lo que cometas me imagino que te encuentras en el segundo caso.  No quiero decir que cada uno sirva solo para eso. Ambos son muy buenos pero dependiendo de qué necesites le sacarás mas jugo a uno que a otro.

Mi equipo de trabajo usa más SVN por lo que es el que más uso últimamente, pero cada vez que hago un "svn rm" me pongo a temblar porque suele darme problemas. Git me tiene enamorado, a penas me habré leído el 50%  de su documentación y ya intuyo lo versátil que es. Lo uso mucho para mantenerme al día de proyectos open source que utilizo en mis proyectos. Para el tema social Git no tiene rival. Además Git no requiere de red. Puedes tirarte varios días programando en elp ortatil sin conexión, haciendo commits a tu "servidor" local, y luego enviarlos (pull) a un repositorio central.

Trac no es un control de versiones en sí, más bien un interfaz web que se integra perfectamente con subversión (y creo que otros también). Lo uso bastante y en general va muy bien aunque peca de lento en proyectos grandes (¿será por funcionar con Python?). Si lo que vas a programar es código abierto, los equivalentes más populares para Git y Mercurial son GitHub y Bitbucket, respectivamente.

Saludozzzzzz

----------

## Theasker

Muchísimas gracias por tu opinión y experiencia personal.

Como bien dices, soy un novato y estoy empezando a programar para mi sólo y para aprender, nada de proyectos grandes (ojalá). 

Hablando de Git: Entonces me "recomiendas" que instale mi propio servidor/cliente en casa con Linux pero el problema sería en el trabajo ya que no tengo permisos de administrador por lo que no puedo instalar nada, por lo que no podría instalar mi cliente/servidor.

Con Subversion pasaría más de lo mismo, ¿no?.

Aunque usando NetBeans que tiene unos complementos para usar Git y Subversion se supone que no hay que instalar nada más aparte de lo que ya incluye ¿no?.

Mejor entonces ¿uso los repositorios en mi servidor de casa en vez de usar google code, bitbucket, Github, ... etc ?

Muchas gracias de nuevo por tu ayuda y preocupación.

......

supongo que la documentación que me tengo que leer será la de la página de cada proyecto Git o Subversion

----------

## Stolz

De NetBeans no te puedo decir nada. Sobre si usar Google code, Bitbucket o Github depende como dije de si lo que vas a hacer es código abierto o no. Esos sitios no permiten alojar gratuitamente proyectos que no sean de código abierto. Si no te importa pagar o si no te importa que tu código sea accesible me parece la mejor opción.

Si tu servidor está en casa no te afecta para nada si en el trabajo te limitan los permisos de administración. Para montar un "servidor" Git, con que tengas acceso SSH es suficiente, si ya tienes cuenta en el trabajo te basta. De todas formas, si la programación está relacionada con tu trabajo yo negociaría que te dejen montar el servidor, y si no te dejan y aun así quieres tenerlo en el trabajo, pues lo instalas en tu ordenador, no creo que tengas los permisos de administración de tu propio ordenador limitados, ¿no?Last edited by Stolz on Tue Nov 22, 2011 6:38 pm; edited 1 time in total

----------

## Theasker

En el trabajo uso XP, ese es el problema.

----------

## Stolz

Si usas XP en el trabajo la solución más fácil es despedir al que decidió qué sistema operativo usar  :Very Happy: .

Ahora en serio, si no te importa que el código sea accesible lo más cómodo va a ser GitHub o similares.

----------

## Theasker

Ni te imaginas los quebraderos de cabeza que me trae el xp.

No sabrás algún manual facilón para hacerme con Subversion y Git ¿no?  :Smile: . dont't worry que para eso está google.

Gracias por todo e iré probando hasta conseguirlo.

Un saludo

----------

