Trabajar a la vez con subversion y el git para el branching¶
nos apoyamos sobre este articulo
condiciones¶
- en trunk de subversion ignora el .git y .gitignore
- el git ignora todo lo que es de subversior (los '.svn')
- la branch master tiene que siempre integrar los updates del trunk
- trabajamos en un branch separado que será ignorada por svn
secuencia de trabajo ejemplo¶
estamos en trunk y master.
creamos un branch 'pascal_branch':
git checkout -b pascal_branch
Trabajamos en esta branch.
Hay un update del trunk que trae "Ticket #2836 . Errores en fechas de periodos".
Nos aseguramos que estamos en la branch master de git:
git checkout master
git status nos dice que los ficheros app/controllers/info_controller.rb, app/models/periodo.rb2 app/views/datos_proyecto/_formulario_periodo.html.erb, app/views/info/_periodos.html.erb y db/seeds.rb han sido modificados.
Hacemos un commit en master de esos ficheros:
git commit app/controllers/info_controller.rb, app/models/periodo.rb2 app/views/datos_proyecto/_formulario_periodo.html.erb, app/views/info/_periodos.html.erb db/seeds.rb -m "Ticket #2836 . Errores en fechas de periodos"
(el hecho que demos el mismo nombre al los commit es solamente para orientarnos)
Traemos este update a la branch de trabajo 'pascal_branch:
git checkout pascal_branch git merge master
Con eso nos aseguramos que los cambios en nuestra branch de trabajo (aquí 'pascal_branch' serán siempre compatible con la evolución del trunk de snv.
Una vez que hemos terminado nuestro trabajo en nuestra branch, nos aseguramos que el master este 'up to date' con el trunk de subversion :
git checkout master svn update
Traemos todo eventual cambio a nuestra branch de trabajo:
git checkout pascal_branch git merge master
Traemos nuestros cambios en master:
git checkout master git merge pascal_branch
Ahora svn 've' los cambios que hemos hecho en 'pascal_branch'.
Hacemos el commit en subversion:
svn ci . -m 'ticket #<numero de ticket> <intitulado del cambio>'