Control de versiones de aprendizaje para un estudiante de primer año de la universidad

Soy un estudiante de primer año de CS de la universidad que desea aprender bien un sistema de control de versiones. Actualmente estoy buscando Subversion, Perforce y Surround SCM.

Integraría el sistema con Eclipse, en una plataforma Linux. El código involucrado sería principalmente C ++, Java y LaTeX (que también usaré Eclipse).

Probablemente sea el único usuario, pero la ventaja de SVN es que es de código abierto, mientras que los otros dos son de propiedad exclusiva. He escuchado muchos testimonios buenos sobre TortiseSVN, pero dado que estoy usando Linux, me estaré perdiendo de eso.

EDITAR: Gracias por todas las respuestas. Por supuesto, estoy abierto a cualquier otro sistema de control de versiones también. Estaré revisando a Git y Mercurial.

Si está aprendiendo sistemas de control de versiones, definitivamente haría bien en considerar uno de los sistemas de control de versiones "distribuidos" más nuevos, como Git o Mercurial . Al limitar su scope a la generación anterior de herramientas como usted mencionó, se estará perdiendo lo que (algunas) personas realmente están usando hoy en día.

Para aprender un sistema, probablemente no recomendaría elegir una oferta comercial. Obtendrá mucho mejor soporte y documentation, de forma gratuita, con una solución de código abierto.

Si esas son tus únicas opciones, definitivamente SVN. Esa es la (de esa list) que la gente real usa en la naturaleza.

Honestamente, sin embargo, aprende un DVCS. Git, Mercurial, darcs, uno de ellos.

Si vas a ser el único en un proyecto, definitivamente deberías echar un vistazo a SVN. Obtenga Subclipse , un plugin de Eclipse para Subversion, y acostúmbrese a eso. Luego, pase a otros sistemas de control de versiones una vez que se sienta cómodo.

Me gustaría secundar (o en tercer lugar) a aquellos que sugirieron Git o Mercurial (o Bazar). Los sistemas de control de versiones distribuidas no solo son buenos para proyectos con múltiples contribuyentes; Uso Git para todos y cada uno de los proyectos que empiezo, incluso si solo son desechables. Básicamente, su carpeta de desarrollo es su repository: es portátil, y es fácil agregar más contribuyentes y pasar luego a un flujo de trabajo centralizado más tradicional.

Recomiendo especialmente a Git porque tiene una curva de aprendizaje bastante empinada, pero me ha enseñado mucho sobre administración de proyectos, control de revisiones, cómo fusionar y parchar files, cómo leer resultados 'diff', etc. Realmente te permite acceda a los detalles detallados del control de versiones.

Puede que le interese leer los libros blancos de Perforce, por ejemplo , las Mejores prácticas de alto nivel en Administración de configuration de software .

SVN es muy fácil de aprender. Para aquellas personas que sí usan Windows, la versión de GUI es excelente.

Incluso si está ejecutando Linux, aún así sugeriría aprenderlo, ya que es ampliamente utilizado en lugares como Google Code, Python, WordPress, etc.

Bazaar es absolutamente increíble para el desarrollo de una sola persona sin server. La configuration tarda unos cinco minutos completos y está funcionando de inmediato. Tiene el poder de los grandes VCS … pero es bastante fácil de usar por su count.

Escuché que Git y Mercurial están en la misma línea … pero solo he usado Bzr.

Recomendaría Subversion, simplemente por su omnipresencia en proyectos de código abierto. Definitivamente hay muchas oportunidades para utilizar su conocimiento de Subversion en proyectos de código abierto, y si lo hace, aprenderá mucho sobre la encoding, el trabajo en equipo y el uso adecuado de un VCS en un equipo (que es la mitad). de aprender a usar un VCS, y es la parte difícil porque no puedes aprenderlo muy bien por tu count). Menos proyectos de código abierto usan VCS propietarios, lo que significa que tendrá less oportunidad de usarlos en el mundo real a less que trabaje específicamente con amigos o como un trabajo. No he usado los otros dos que mencionaste, pero no tengo quejas sobre Subversion, es bastante fácil de usar.

También me gustaría recomendar un VCS distribuido, como git. Con un VCS distribuido, dado que cada participante en un proyecto tiene una copy completa del repository de origen y tiene control completo sobre su propia copy, significa que se le otorga una mayor flexibilidad para usar las capacidades de VCS. Descubrirá que tiene la libertad de comprometerse con la frecuencia que desee, y crear nuevas sucursales cuando lo desee, lo cual es excelente cuando se realizan cambios en el código y, si es necesario, se puede volver a una versión anterior. . Un VCS distribuido le permite usar el VCS como una herramienta para ayudar a su encoding, en lugar de simplemente como una manera de almacenar y compartir su código con otros. También es muy fácil configurar un nuevo repository en un VCS distribuido. Con git, acaba de ejecutar git init y configurará el control de versiones en el directory actual. ¿Qué tan fácil es eso?