Diferència entre revisions de la pàgina «Treballant amb Bazaar»
(Es crea la pàgina amb « Antes de nada, registraros en http://launchpad.net y http://launchpad.net/~hdlorean después; si no hay cosas que no os dejará hacer… También necesitáis insta...».) |
(→Utilitzar un repositori LOCAL) |
||
(Hi ha 17 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | + | Prerequisit estar registrat en http://launchpad.net i http://launchpad.net/~edutictac | |
− | + | També és necessari instal·lar bazaar. Amb ubuntu: | |
+ | <pre>apt-get install bzr</pre> | ||
+ | Una lectura previa recomanable és [http://doc.bazaar.canonical.com/bzr.dev/es/mini-tutorial/index.html Bazaar en cinco minutos] | ||
− | + | == Configuració inicial == | |
+ | <pre>bzr whoami "Pedro Páramo <email@example.com>"</pre> | ||
+ | Així el commit té nom | ||
− | + | == Utilitzar un repositori LOCAL == | |
− | + | Per fer el teu propi branch. | |
− | |||
− | + | 1. Arrancar el repositori (internament crea una carpeta oculta .bzr). | |
+ | <pre>bzr init</pre> | ||
+ | 2. Per afegir tot el que n'hi ha al directori | ||
+ | <pre>bzr add</pre> | ||
+ | Podem afegir no més el arxius que ens interesse amb (*.cpp *.h etc).<br> | ||
+ | <br>3. Per a vorer els canvis realitzats | ||
+ | <pre>bzr status</pre> | ||
+ | 4. ¡APLICAR CAMBIS!: Afegir aquesta versió al repositori | ||
+ | <pre>bzr commit -m "mensaje"</pre> | ||
+ | <br>El codi ja està baix versions. | ||
− | + | == Pujar el codi a launchpad<br> == | |
− | + | Primer tenim que identificarnos | |
+ | <pre>bzr launchpad-login EL-TEU-NOM-D'USUARI-EN-LAUNCHPAD</pre> | ||
+ | Ens col·loquem en la carpeta a on tenim el codi i escribim | ||
+ | <pre>bzr push lp:~edutictac/+junk/ratolijclic</pre> | ||
+ | Depenent de la branch "ratolijclic" canvia. En la pàgina del Launchpad indica el codi necessari per a cada branca si la branca ja existix n'hi ha que afegir '''--use-existing''' | ||
+ | <pre>bzr push --use-existing lp:~edutictac/+junk/ratolijclic </pre> | ||
+ | [[Image:Selecció 025.png]] | ||
− | + | <br> | |
− | bzr | + | Com podeu observar també podeu descarregar-la amb |
+ | <pre>bzr branch lp:~edutictac/+junk/ratolijclic | ||
+ | </pre> | ||
+ | <br> | ||
− | + | == Sincronitzar el nostre treball == | |
− | |||
− | |||
− | bzr | + | N'hi ha varies opcions, pots pujar les modificacions a una nova branca de launchpad amb '''bzr push''' i després convinar els canvis amb '''bzr merge,''' també tens la opció de baixar directament els canvis amb '''bzr pull''' |
− | + | <br> | |
− | + | === Treballar amb un repositori compartit === | |
− | + | N'hi ha dos possibilitats, "branch" o "checkout". Amb el primer pots fer commits locals sense internet; amb el segon no. | |
− | + | Anem de fàcil a més difícil | |
− | + | ==== Amb checkout (como svn) ==== | |
− | + | ===== Baixar ===== | |
+ | <pre>bzr checkout http://launchpad.net/~nombre-equipo/hdlorean/nombre-branch carpeta-desti</pre> | ||
+ | ===== <br>Modificar ===== | ||
− | + | A partir de aquí, todo es igual que para un local repositorio local (bzr add, bzr commit, etc). Pero para hacer commit necesitas estar conectado a internet y te pedirá user / password. | |
− | + | Si al hacer commit alguien ha tocado en el repositorio ya, te obligará a bajarte los últimos cambios con update (y si hay conflictos te obliga a resolverlos) antes de subirlos. | |
− | + | CUIDADO! Si el checkout es del http, no debería dejarte subir nada salvo con bzr+ssh que va autenticado!!! Y no hemos especificado a dónde subirlo… | |
− | + | <br> | |
− | + | ==== Amb branch ==== | |
− | + | Lo que aquí cuento es aplicable a mezclar tu branch con el del equipo, y gestionar conflictos.<br>Hay dos formas de hacerlo: una, mezclar directamente sobre tu trabajo (parecido a svn update). La otra es bajarte el código del equipo en un branch y hacer un branch "de trabajo" de ese branch, para luego mezclarlos. | |
− | + | ===== Baixar ===== | |
− | + | bzr branch http://launchpad.net/nombre-equipo/hdlorean/branch-concreto | |
− | + | Lo de carpeta destino funciona por defecto. Alternativamente con bzr+ssh (más eficiente).<br>Desde este momento tienes un branch local que va asociado a dónde te lo has bajado. | |
− | + | ===== <br>Modificar ===== | |
− | + | Igual que en local. Importante terminar con el commit, si no no has hecho nada!! | |
− | |||
− | |||
− | + | ===== Baixar cambis ===== | |
− | + | bzr pull | |
− | + | Solo funciona si no hay cambios locales (cuidado, esto no es svn update, el merge no es automático). Por ejemplo, si al acabar de currar has subido con push, el siguiente paso puede ser un pull. | |
− | + | ==== <br>Convinar branches (es fa en LOCAL sempre) ==== | |
− | + | Pasar cambios de un branch a otro que tienes en el disco duro. Si un branch va en internet creo que se baja los últimos cambios, intenta mezclar con los tuyos y solo te avisa en los conflictos él solito. | |
− | + | bzr merge ruta-al-destino <br>bzr commit -m "mezclados branch sobre el que trabajaba en local y branch destino"<br>Atención al merge: ruta-al-destino es de dónde quieres coger los cambios. Por ejemplo: | |
− | + | Si tú tienes un origen (digamos un checkout de lo del equipo) y haces un branch para trabajar tú, el merge tendrías que hacerlo en el origen y contra el branch (cd origen; bzr merge ../branch-del-origen); al menos a mí me está funcionando así.<br>Si, sin embargo, estás trabajando contra el branch del equipo, los cambios los cogerías de ahí y por tanto tu ruta al destino sería bzr+ssh://<me>@bazaar.launchpad.net/~nombre-equipo/hdlorean/branch-concreto<br>Es el comando delicado así que hay que tener un poco de ojo hasta que nos aclaremos; recomiendo tener una copia de con lo que se trastee antes por si acaso… | |
− | + | Ejemplo práctico | |
− | + | Yo estoy trabajando con un compañero en una asignatura, y tengo un servidor en bzr+ssh://direccion/repo/asignatura . Desafortunadamente mi compañero usa eclipse 3.2 y yo tengo instalado ya el 3.3, así que si ponemos todo el workspace bajo control de versiones nos pisaríamos (ya que los proyectos de CDT 4 no son compatibles con los de 3.2; al abrir un proyecto antiguo lo actualiza). Sin embargo nos interesa tener el workspace con control de versiones porque así los pull se bajan todas las carpetas de las prácticas y no hay que ir una a una. | |
− | + | ¿Solución? Una sería excluir cuando yo trabaje la configuración de los proyectos… O dejarme de eclipses nuevos y leches :). Pero hay otras. | |
− | + | Por ejemplo: hago el proyecto inicial en 3.2; creo el workspace, lo pongo bajo control de versiones, y lo subo con bzr push. Pero luego me creo un branch de ese workspace: bzr branch old-ws nuevo-ws. Ahora tengo una versión que "comparto" con mi compañero, old-ws, y una mía donde trabajo, nuevo-ws. | |
− | + | Mis commits van a mi versión local, y cuando quiero pasarle los cambios me voy a old-ws y hago bzr merge ../nuevo-ws. El resultado: | |
− | + | M pr1/.project<br> M pr1/.settings/org.eclipse.cdt.core.prefs<br> M pr1/Debug/makefile<br> M pr1/Debug/objects.mk<br> M pr1/Debug/sources.mk<br> M pr1/src/escena.cpp<br> M pr1/src/escena.h<br> M pr1/src/skel.cpp<br>All changes applied successfully.<br>Los cambios están en el workspace antiguo y podría subirlos con bzr push directamente. Pero ojo! está machacando el .proyect y las preferencias de cdt porque detecta que son más nuevos; volvemos al problema original! | |
− | + | No obstante puedo hacer: bzr revert pr1/.project y bzr revert pr1/.settings/org.eclipse.cdt.core.prefs, y ya solo subiría mis cambios en el código y no en los archivos de configuración del proyecto… | |
− | + | Siempre puedo ver qué está pasando con bzr status en cada repo. | |
− | + | En el antiguo: | |
− | + | bzr status<br>modified:<br> pr1/Debug/makefile<br> pr1/Debug/objects.mk<br> pr1/Debug/sources.mk<br> pr1/src/escena.cpp<br> pr1/src/escena.h<br> pr1/src/skel.cpp<br>pending merges:<br> Jisakiel 2007-11-04 funcionando anidar rectángulos<br> Jisakiel 2007-11-04 tocando lo de los rectángulos, por alguna razón no m...<br>Y en el nuevo, después de commitear en el antiguo y mergearme los cambios: | |
− | + | bzr status<br>unknown:<br> pr1/.cdtbuild_initial<br> pr1/.cproject<br> pr1/.project_initial<br>pending merges:<br> Jisakiel 2007-11-04 problema del bzignore apañado<br> Jisakiel 2007-11-04 problema del bzignore apañado<br>Los .project de ambos son diferentes no obstante!. | |
− | + | estoy trabajando sobre este ejemplo de uso, ya contaré novedades y aclararé mis ideas según avance | |
− | + | Subir cambios | |
− | + | bzr push bzr+ssh://<me>@bazaar.launchpad.net/~nombre-equipo/hdlorean/branch-concreto | |
− | |||
− | |||
− | |||
− | bzr push bzr+ssh://<me>@bazaar.launchpad.net/~nombre-equipo/hdlorean/branch-concreto | ||
Con el comando estás subiendo como usuario <me> al espacio del equipo. Si hay conflictos, al igual que pull, te avisa diciéndote que las versiones han divergido, que uses merge. | Con el comando estás subiendo como usuario <me> al espacio del equipo. Si hay conflictos, al igual que pull, te avisa diciéndote que las versiones han divergido, que uses merge. | ||
− | + | == Comandaments útils == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | bzr | + | Vorer que ha canviat en un arxiu |
+ | <pre>bzr diff</pre> | ||
+ | <br>Vorer història de revisions | ||
+ | <pre>bzr log</pre> | ||
+ | <br>Des fer un canvi | ||
+ | <pre>bzr revert</pre> | ||
+ | <br>Borrar un arxiu (queda versionat) | ||
+ | <pre>bzr remove</pre> | ||
+ | <br>Per a borrar un arxiu i que no quede versionat: | ||
+ | <pre>bzr uncommit</pre> | ||
+ | <br> | ||
− | + | Vorer conflictes | |
+ | <pre>bzr conflicts</pre> | ||
+ | <br> | ||
− | bzr resolve | + | Marcar conflictes com a resolts |
+ | <pre>bzr resolve</pre> | ||
− | |||
− | + | Ignorar archius: | |
− | .bzignore<br>Útil para que no haya que excluirlos a mano cuando eliges qué versionas. Así no ocupamos espacio ni ancho de banda de más (y creedme, si empiezas a dejar los .exe y .obj se come un montonazo porque se generan muchos). | + | Llista arxius a ignorar |
+ | <pre>.bzignore</pre> | ||
+ | <br>Útil para que no haya que excluirlos a mano cuando eliges qué versionas. Así no ocupamos espacio ni ancho de banda de más (y creedme, si empiezas a dejar los .exe y .obj se come un montonazo porque se generan muchos). | ||
− | Por ejemplo: | + | Por ejemplo: |
*.o<br>*~<br>*.tmp<br>*.py[co] | *.o<br>*~<br>*.tmp<br>*.py[co] | ||
− | TODO: Escribir este archivo para nuestros chicos ;) Para que no haya que meter nada más de lo necesario (cuidado con las autotools que casi todo salvo configure.ac y Makefile.am se genera *solito* )<br> | + | TODO: Escribir este archivo para nuestros chicos ;) Para que no haya que meter nada más de lo necesario (cuidado con las autotools que casi todo salvo configure.ac y Makefile.am se genera *solito* )<br> |
− | |||
− | |||
− | + | Ver qué has ignorado: | |
− | + | bzr ignored<br>Y otra cosa útil: | |
− | + | bzr add .bzrignore<br>bzr commit -m "Add ignore patterns" | |
− | |||
− | |||
− | + | Para que el archivo de ignore también esté versionado ;). | |
− | + | Interfaces gráficas (GUI) | |
− | + | El que lo tenga en sus repos: bzr-config con sus ventanitas para configurarlo (no hace mucha falta, con hacer la inicialización…). | |
− | + | También está bzr-gtk. Creo que es todo lo que he contado, pero más automático (pinta iconitos para ver qué ha cambiado, puede hacer los merge con una herramienta de diff…). | |
− | + | <br> | |
− | + | Adaptació de: http://hdlorean.wikidot.com/tutoriales:bazaar | |
− | + | [[Category:Bazaar]] |
Revisió de 21:07, 10 abr 2013
Prerequisit estar registrat en http://launchpad.net i http://launchpad.net/~edutictac
També és necessari instal·lar bazaar. Amb ubuntu:
apt-get install bzr
Una lectura previa recomanable és Bazaar en cinco minutos
Contingut
Configuració inicial
bzr whoami "Pedro Páramo <email@example.com>"
Així el commit té nom
Utilitzar un repositori LOCAL
Per fer el teu propi branch.
1. Arrancar el repositori (internament crea una carpeta oculta .bzr).
bzr init
2. Per afegir tot el que n'hi ha al directori
bzr add
Podem afegir no més el arxius que ens interesse amb (*.cpp *.h etc).
3. Per a vorer els canvis realitzats
bzr status
4. ¡APLICAR CAMBIS!: Afegir aquesta versió al repositori
bzr commit -m "mensaje"
El codi ja està baix versions.
Pujar el codi a launchpad
Primer tenim que identificarnos
bzr launchpad-login EL-TEU-NOM-D'USUARI-EN-LAUNCHPAD
Ens col·loquem en la carpeta a on tenim el codi i escribim
bzr push lp:~edutictac/+junk/ratolijclic
Depenent de la branch "ratolijclic" canvia. En la pàgina del Launchpad indica el codi necessari per a cada branca si la branca ja existix n'hi ha que afegir --use-existing
bzr push --use-existing lp:~edutictac/+junk/ratolijclic
Com podeu observar també podeu descarregar-la amb
bzr branch lp:~edutictac/+junk/ratolijclic
Sincronitzar el nostre treball
N'hi ha varies opcions, pots pujar les modificacions a una nova branca de launchpad amb bzr push i després convinar els canvis amb bzr merge, també tens la opció de baixar directament els canvis amb bzr pull
Treballar amb un repositori compartit
N'hi ha dos possibilitats, "branch" o "checkout". Amb el primer pots fer commits locals sense internet; amb el segon no.
Anem de fàcil a més difícil
Amb checkout (como svn)
Baixar
bzr checkout http://launchpad.net/~nombre-equipo/hdlorean/nombre-branch carpeta-desti
Modificar
A partir de aquí, todo es igual que para un local repositorio local (bzr add, bzr commit, etc). Pero para hacer commit necesitas estar conectado a internet y te pedirá user / password.
Si al hacer commit alguien ha tocado en el repositorio ya, te obligará a bajarte los últimos cambios con update (y si hay conflictos te obliga a resolverlos) antes de subirlos.
CUIDADO! Si el checkout es del http, no debería dejarte subir nada salvo con bzr+ssh que va autenticado!!! Y no hemos especificado a dónde subirlo…
Amb branch
Lo que aquí cuento es aplicable a mezclar tu branch con el del equipo, y gestionar conflictos.
Hay dos formas de hacerlo: una, mezclar directamente sobre tu trabajo (parecido a svn update). La otra es bajarte el código del equipo en un branch y hacer un branch "de trabajo" de ese branch, para luego mezclarlos.
Baixar
bzr branch http://launchpad.net/nombre-equipo/hdlorean/branch-concreto
Lo de carpeta destino funciona por defecto. Alternativamente con bzr+ssh (más eficiente).
Desde este momento tienes un branch local que va asociado a dónde te lo has bajado.
Modificar
Igual que en local. Importante terminar con el commit, si no no has hecho nada!!
Baixar cambis
bzr pull
Solo funciona si no hay cambios locales (cuidado, esto no es svn update, el merge no es automático). Por ejemplo, si al acabar de currar has subido con push, el siguiente paso puede ser un pull.
Convinar branches (es fa en LOCAL sempre)
Pasar cambios de un branch a otro que tienes en el disco duro. Si un branch va en internet creo que se baja los últimos cambios, intenta mezclar con los tuyos y solo te avisa en los conflictos él solito.
bzr merge ruta-al-destino
bzr commit -m "mezclados branch sobre el que trabajaba en local y branch destino"
Atención al merge: ruta-al-destino es de dónde quieres coger los cambios. Por ejemplo:
Si tú tienes un origen (digamos un checkout de lo del equipo) y haces un branch para trabajar tú, el merge tendrías que hacerlo en el origen y contra el branch (cd origen; bzr merge ../branch-del-origen); al menos a mí me está funcionando así.
Si, sin embargo, estás trabajando contra el branch del equipo, los cambios los cogerías de ahí y por tanto tu ruta al destino sería bzr+ssh://<me>@bazaar.launchpad.net/~nombre-equipo/hdlorean/branch-concreto
Es el comando delicado así que hay que tener un poco de ojo hasta que nos aclaremos; recomiendo tener una copia de con lo que se trastee antes por si acaso…
Ejemplo práctico
Yo estoy trabajando con un compañero en una asignatura, y tengo un servidor en bzr+ssh://direccion/repo/asignatura . Desafortunadamente mi compañero usa eclipse 3.2 y yo tengo instalado ya el 3.3, así que si ponemos todo el workspace bajo control de versiones nos pisaríamos (ya que los proyectos de CDT 4 no son compatibles con los de 3.2; al abrir un proyecto antiguo lo actualiza). Sin embargo nos interesa tener el workspace con control de versiones porque así los pull se bajan todas las carpetas de las prácticas y no hay que ir una a una.
¿Solución? Una sería excluir cuando yo trabaje la configuración de los proyectos… O dejarme de eclipses nuevos y leches :). Pero hay otras.
Por ejemplo: hago el proyecto inicial en 3.2; creo el workspace, lo pongo bajo control de versiones, y lo subo con bzr push. Pero luego me creo un branch de ese workspace: bzr branch old-ws nuevo-ws. Ahora tengo una versión que "comparto" con mi compañero, old-ws, y una mía donde trabajo, nuevo-ws.
Mis commits van a mi versión local, y cuando quiero pasarle los cambios me voy a old-ws y hago bzr merge ../nuevo-ws. El resultado:
M pr1/.project
M pr1/.settings/org.eclipse.cdt.core.prefs
M pr1/Debug/makefile
M pr1/Debug/objects.mk
M pr1/Debug/sources.mk
M pr1/src/escena.cpp
M pr1/src/escena.h
M pr1/src/skel.cpp
All changes applied successfully.
Los cambios están en el workspace antiguo y podría subirlos con bzr push directamente. Pero ojo! está machacando el .proyect y las preferencias de cdt porque detecta que son más nuevos; volvemos al problema original!
No obstante puedo hacer: bzr revert pr1/.project y bzr revert pr1/.settings/org.eclipse.cdt.core.prefs, y ya solo subiría mis cambios en el código y no en los archivos de configuración del proyecto…
Siempre puedo ver qué está pasando con bzr status en cada repo.
En el antiguo:
bzr status
modified:
pr1/Debug/makefile
pr1/Debug/objects.mk
pr1/Debug/sources.mk
pr1/src/escena.cpp
pr1/src/escena.h
pr1/src/skel.cpp
pending merges:
Jisakiel 2007-11-04 funcionando anidar rectángulos
Jisakiel 2007-11-04 tocando lo de los rectángulos, por alguna razón no m...
Y en el nuevo, después de commitear en el antiguo y mergearme los cambios:
bzr status
unknown:
pr1/.cdtbuild_initial
pr1/.cproject
pr1/.project_initial
pending merges:
Jisakiel 2007-11-04 problema del bzignore apañado
Jisakiel 2007-11-04 problema del bzignore apañado
Los .project de ambos son diferentes no obstante!.
estoy trabajando sobre este ejemplo de uso, ya contaré novedades y aclararé mis ideas según avance
Subir cambios
bzr push bzr+ssh://<me>@bazaar.launchpad.net/~nombre-equipo/hdlorean/branch-concreto
Con el comando estás subiendo como usuario <me> al espacio del equipo. Si hay conflictos, al igual que pull, te avisa diciéndote que las versiones han divergido, que uses merge.
Comandaments útils
Vorer que ha canviat en un arxiu
bzr diff
Vorer història de revisions
bzr log
Des fer un canvi
bzr revert
Borrar un arxiu (queda versionat)
bzr remove
Per a borrar un arxiu i que no quede versionat:
bzr uncommit
Vorer conflictes
bzr conflicts
Marcar conflictes com a resolts
bzr resolve
Ignorar archius:
Llista arxius a ignorar
.bzignore
Útil para que no haya que excluirlos a mano cuando eliges qué versionas. Así no ocupamos espacio ni ancho de banda de más (y creedme, si empiezas a dejar los .exe y .obj se come un montonazo porque se generan muchos).
Por ejemplo:
- .o
*~
*.tmp
*.py[co]
TODO: Escribir este archivo para nuestros chicos ;) Para que no haya que meter nada más de lo necesario (cuidado con las autotools que casi todo salvo configure.ac y Makefile.am se genera *solito* )
Ver qué has ignorado:
bzr ignored
Y otra cosa útil:
bzr add .bzrignore
bzr commit -m "Add ignore patterns"
Para que el archivo de ignore también esté versionado ;).
Interfaces gráficas (GUI)
El que lo tenga en sus repos: bzr-config con sus ventanitas para configurarlo (no hace mucha falta, con hacer la inicialización…).
También está bzr-gtk. Creo que es todo lo que he contado, pero más automático (pinta iconitos para ver qué ha cambiado, puede hacer los merge con una herramienta de diff…).
Adaptació de: http://hdlorean.wikidot.com/tutoriales:bazaar