version control - source - ¿Un DVCS es útil para un desarrollador?
version control git (6)
Creo que sí. Por un lado, escalará mucho mejor si usa múltiples computadoras porque la fusión es mucho más fácil. En segundo lugar, puede comprometerse fuera de línea, lo que es, bueno, genial en general.
¿O sería un VCS cliente-servidor convencional más apropiado? Actualmente estoy usando TortoiseSVN, pero estoy interesado en un DVCS, pero no estoy seguro si es una buena idea tratar de usar algo como ese solo.
Sí. Un DVCS es, en mi opinión, incluso más adecuado para el desarrollo en solitario que un sistema tradicional basado en servidor. Muchas de las características de los sistemas basados en servidor son solo complicaciones innecesarias cuando hay un único desarrollador.
Por otro lado, probablemente no notará ninguna diferencia importante de productividad entre un DVCS y SVN si está solo.
Como todavía puede presionar a otra máquina que también ejecute Git / Mercurial / Bzr / etc, todavía tiene la seguridad de copia de seguridad de múltiples computadoras, que con suerte tendrá de cualquier manera. Sin embargo, si alguna vez codificas mientras viajas, tener acceso completo al repositorio puede ser una gran ventaja, luego solo vuelve a sincronizar con tu servidor cuando tengas una conexión de red nuevamente / llega a casa / etc.
Para un solo desarrollador, cada VCS servirá. Yo elegiría uno, es fácil de configurar y exige poca o ninguna configuración. Personalmente me gusta Monotone . Fue uno de los primeros y todavía lo considero uno de los mejores.
En realidad, lo más divertido que he tenido fue cuando uso darcs , pero está escrito en un lenguaje bastante feo (Haskell) y en realidad ya era bastante doloroso construirlo en Mac OS X desde la fuente.
Se dice que Git es un buen sistema, pero no me gusta que conste de varios binarios y scripts, etc. Lo que realmente me gusta de los sistemas como Darcs y Monotone es que hay un binario ... y eso es todo. Sin desorden de binarios, sin guiones en este o aquel idioma, en binario y lo hace todo.
Recomiendo seriamente ir con uno distribuido. En Windows, elegí Mercurial y he estado muy contento con él.
Grandes pros:
- Las confirmaciones locales son rápidas, pueden comprometerse con frecuencia (Prueba, Código, Refactorio, Confirmar)
- La ramificación es simple
- Puedes comprometerte donde sea que estés.
- Fácil de mover archivos (No más lío como el que uso para entrar con SVN)
- Simplemente más simple. Un software lo hace todo (incluidas las tareas administrativas)
- El sistema de archivos es más limpio. No más .svn en todas partes, solo una carpeta
- La lista de archivos ignorados es solo otro archivo en el repositorio y se copia automáticamente a cada clon. Es más fácil mantenerse limpio que SVN nuevamente.
- Bitbucket.com es agradable y ofrece un repositorio privado gratuito
Contras:
- (Para algunos) las herramientas GUI no están ahí
- Es probable que aún necesite SVN para conectarse a varios repositorios de origen. Por ejemplo, necesito usar dos sistemas.
Sí. Hay dos razones principales por las que cambié a DVCS (Git y Mercurial) para mis propios proyectos de hobby. Primero está la cuestión de mantener copias de seguridad y la otra es que viajo mucho y uso varias computadoras geográficamente separadas .
Copia de seguridad rápida y fácil
Trabajo con al menos dos clones de repositorio. Una es la obvia local que está en mi espacio de trabajo, la otra es una que guardo en mi servidor de archivos (o en un repositorio en línea como github o bitbucket ) que voy a volcar cada vez que termino con cosas localmente. Hacer la copia de seguridad es tan simple como sincronizar los repositorios, en otras palabras, impulsar los cambios en sentido ascendente.
Trabaja en diferentes ubicaciones o computadoras
Esto es probablemente algo que es un escenario menos común para los desarrolladores con proyectos de hobby porque tiendo a viajar. Aparte de mi computadora en casa, a veces me quedo con mis padres, donde guardo mi computadora vieja (que es lo suficientemente rápida para la programación de pasatiempos). Cada vez que tengo ganas de hackear nuevas funciones, puedo hacerlo en esa computadora y luego sincronizar repositorios para recibir esos cambios cuando vuelva a casa.
Fácil ramificación / fusión
No es un secreto que DVCS maneja la bifurcación / fusión bastante automágicamente. Los conflictos de combinación suceden, pero incluso sin ellos en una versión centralizada, las herramientas de control, por ejemplo Subversion, realmente no ayudan mucho con la fusión incluso en escenarios simples. A pesar de que no uso esta característica tan a menudo para proyectos personales, hay algunos desarrolladores que lo hacen.
Conozco a un contratista de programación que usó git para realizar un seguimiento de su propio trabajo en un sistema propietario de la empresa que todavía usa SourceSafe para el control de versiones. Git le facilitó el seguimiento de las correcciones separadas ramificando cada arreglo a pesar de que tenía que fusionar los archivos manualmente al final. Cuando llegara el momento de que él registrara los archivos en SourceSafe, estaría mirando los diffs en las diferentes ramas para ver qué cambios se necesitaban y luego hacerlos. Digamos que la mayor parte de su tiempo lo pasó esperando que sus compañeros lo alcanzaran.