bzr pull vs bzr merge

Estoy usando bzr para una tarea muy simple: get la versión de desarrollo de GNU Emacs. Después de la bzr branch inicial, me gustaría mantener mi versión local actualizada. Leí acerca de la documentation sobre bzr pull y bzr merge , pero no pude entenderlo. bzr merge durante unos días y descubrí que la bzr merge menudo daba lugar a conflictos irresolubles. Tenga en count que no hice ningún cambio local. ¿ bzr pull la manera recomendada?

EDITAR 1 (agregó un diagtwig robado de Chris Conway ):

 remote: A --> B --> C --> D \ \ (branch) (merge) \ \ local: \--> A (no change) \--> why conflicts? 

Entiendo git y darcs, pero no tengo conocimiento acerca de bzr. Las analogías con git o darcs ayudarán mucho.

EDIT 2 : ¿Se supone que la update solo funciona con el checkout y checkout ? Hacer una update en una branch no parece hacer nada.

Tenga en count que no hice ningún cambio local. ¿ bzr pull la manera recomendada?

Sí, parece que bzr pull es el command apropiado para su uso. pull toma una twig fuente remota y copy cualquier cambio de ella a una twig de destino local en una revisión anterior. (Yo uso "remoto" y "local" aquí para referirme a "fuente" y "destino". Dos twigs servirán, incluso dos sucursales locales).

 remote: A --> B --> C --> D \ \ (branch) (pull) \ \ local: \--> A (no change) \--> D 

Una pull solo funciona si las dos twigs no han divergido, es decir, si la revisión del destino es una revisión anterior de la fuente. push es simplemente la operación opuesta: copy los cambios en una sucursal local en una sucursal remota en una revisión anterior.

 remote: A (no change) --> C \ / (branch) (push) \ / local: \--> A --> B --> C 

Se utiliza una merge cuando desea copyr los cambios en una sucursal local que ha divergido de la sucursal remota.

 remote: A --> B --> C --> D \ \ (branch) (merge) \ \ local: \--> A --> X --> Y --> Z 

Aquí, Z incluye todos los cambios de D y los cambios de Y Una pull no es posible en este caso. Tenga en count que debe commit después de una merge para save la nueva revisión fusionada, mientras que una extracción lleva automáticamente la twig a un punto de revisión guardado.

Un checkout permite usar bzr en un modo que es similar a CVS / SVN: la twig local se "conectará" a una sucursal remota; commit s será automáticamente push ed; si la twig remota ha divergido, la confirmación fallará; una update es solo una merge de la twig remota "adjunta".

Merge es para fusionar dos twigs diferentes, no copys (local y remota). Use pull.

$ bzr help pull

Propósito: convertir esta twig en un espejo de otra twig.

–overwrite Ignora las diferencias entre twigs y sobrescribe incondicionalmente.

Si desea replace los cambios locales y solo desea que su twig coincida con la remota, use pull –overwrite. Esto funcionará incluso si las dos twigs han divergido.

para que puedas usar:

$ bzr pull --overwrite