Aca veo varias cosas.
(23-05-2016 18:47)Fly escribió: Hoy tuvimos una discusión muy seria al respecto de introducción de errores en el código... como tema derivado surgió que uno de los chicos hizo notar que "si commiteamos todos sobre el trunk, al hacerme un update se me rompen cosas sobre las cuales estaba trabajando", y casos similares.
Aca hay que preguntarse: Para que usamos el repositorio? Es para tener una copia de mi trabajo al final del dia, o solo subo las cosas cuando tengo una funcionalidad cerrada/estable?
Si haces lo primero, si o si tenes que tener branches separados. Commitear todo al mismo branch desde donde todos hacen update es malo. Este problema lo vas a tener en todos lados, ya sea usando SVN, GIT, o el que venga despues. Es una mala practica, justamente porque vas a romper las cosas a los demas
.
Si haces lo segundo, va a estar todo bien siempre... hasta que quieras compartirle una funcionalidad semi-hecha a otro. O lo mandas por mail/chat/etc, o creas otro branch, o le rompes todo a los demas. Ademas de perder un respaldo por si le pasa algo a tu maquina, u otra persona tiene que seguir con tu trabajo.
Cita:* SVN es una herramienta con un pésimo manejo de branches... que al momento de mergear varias branches el SVN introduce problemas (que GIT no tendría en un ppio, según cuenta la leyenda).
http://stackoverflow.com/questions/24716...han-in-svn
SVN es una garcha no solo con los branches, si no con cualquier cosa que no sea el codigo que actualmente estas usando. Si queres una revision anterior, SVN va a buscarlo al repositorio remoto. Si queres comparar tu revision con otra, o con otro branch, va a buscarlo al repo remoto. Cuando los proyectos son grandes, e involucran archivos pesados, son muchos minutos que perdes hasta que svn haga su trabajo... Cuando son cortos, es tiempo perdido que te hincha las bolas.
Hacer esto en Git tiene un costo 0, ya que toda esa info la tenes local.
Cita:* Habría que capacitar a todo el personal que desconoce SVN al uso de GIT. Esto lleva tiempo.
Lo mejor es que alguien que sepa git DE VERDAD les explique. Y tambien ser metodicos con la forma de organizarse. La base de git para que trabajen podes explicarlas en unas horas, mas un par de horas mas de practica. No hace falta que sepan todo.
Explicar solo comandos y compararlo con SVN puede ser rapido, pero despues vienen los problemas, gente que intenta cambiar la historia del repo y termina rompiendo todo, reaprender conceptos mal explicados, etc. Creo que gran parte de los problemas de implementar git vienen por pensar que es svn.
Cita:* Habría que cambiar "todos los procedimientos" (¿cuáles son? No lo sé bien... Esto ya tiene olor a historieta de Dilbert).
* El "socio" encargado del uso de servidores "le gusta" que toda la información esté siempre centralizada (por ende está en contra del uso de repositorios locales).
La informacion puede estar siempre centralizada. El repositorio local es algo que le sirve al trabajador. Se pueden aplicar politicas de "suban los cambios al repo central al finalizar el dia" y listo, igual que svn. Este es un tema mas de organizarse que otra cosa.
Cita:- Una solución que "acepta" la alta cúpula de socios fundadores es... entregar una propuesta concreta con todos los pro y contras reales de la implementación de GIT (y por ende dejar de usar SVN) en un proyecto ya muy avanzado, con tiempos y esfuerzos estimados con un cierto grado de certeza.
Para mi Git tiene un pro a nivel organizacion: Manejo simple de branches locales y remotos.
- Manejar branches tiene un costo 0.
- Por ende, tambien manejar tags.
- Podes ver facilmente la historia del repositorio, quien mergeo con quien en que momento, que cosas. Con SVN, dependes del commit que haga el commiteador. Te la regalo si lo tenes que hacer a mano.
- Tener varios branches ayuda a implementar buenas practicas:
* Primero, te ordena tu laburo. Para una organizacion eso es un +1000.
* Peer review (via pull requests como ya dijeron).
* Evitas en gran parte tener branches basura, que a veces los necesitas en SVN.
* Manejo sencillo de multiples entornos (un branch para dev, otro para qa, otro para preprod, etc).
* Estar ordenado facilita la automatizacion de tests/build/deploy, y luego podes hacer continuous delivery!
* Si no tenes tests automaticos, podes hacer continuous delivery para la gente de QA
.
- Gitlab CE + CI. No conozco nada similar para SVN. Es una herramienta excelente para administrar repositorios. Si usan gitlab cloud ya tienen todo configurado y el costo de implementarlo es 0.
Si tenes un jefe que le gusta tener todo centralizado, con Gitlab se va a mear.
Cita:Tampoco sé con certeza si SVN realmente es tan malo para el manejo de branches como dicen.
Lo es.
Cita:Tampoco sé si está bien o mal que cada usuario tenga su branch sí o sí, hasta donde llega el apocalipsis si todos le pegan a master todo el tiempo (aclaro que sí armamos branches, pero sólo al momento de hacer una entrega).
Eso ya depende de como se manejen. Mira el link de git flow que te pasaron. Definir el esquema de trabajo es algo muy intimo de cada empresa. En mi laburo, usamos un branch por "funcionalidad". En otros laburo, por un tema de seguridad preferian que cada uno se haga un clon remoto del repo, trabaja ahi, y luego hace pull request. Hay muchisimas opciones distintas.
Lo importante de esto es que hagas lo que te sirva. Git te da mucha flexibilidad en como podes organizarte. Podes hacerlo de una forma, ver que no funciona, y despues cambiar tu flujo. Lo importante es que siempre vas a tener un seguimiento de que es lo que esta haciendo el repositorio, cosa que con svn lo perdes.
Cita:Sin embargo acá estoy bajo un mal manejo de "políticas" en la empresa.
Lo copado de git es que te facilita el orden. Si vas a hablar con los jefes, correlos por ese lado. Mostrales el caos que hay actualmente.
Cita:... y otras cosas como... "un buen desarrollador tiene que trabajar independiente de la tecnología".
Bueno, que programen en assembler entonces
.