versiones software sistema control version-control bazaar

version-control - software - mercurial sistema de control de versiones



bzr pull vs bzr merge (3)

Tenga en cuenta que no hice ningún cambio local. ¿Es bzr pull la forma recomendada?

Sí, parece que bzr pull es el comando apropiado para su uso. pull toma una rama de origen remota y copia los cambios realizados en una rama de destino local en una revisión anterior. (Uso "remoto" y "local" aquí para significar "origen" y "destino". Cualquiera de las dos ramas funcionará, incluso las dos sucursales locales).

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

Una pull solo funciona si las dos ramas no se han desviado, es decir, si la revisión del destino es una revisión antigua del origen. push es la operación opuesta: copia los cambios en una sucursal local a una sucursal remota en una revisión anterior.

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

Una merge se usa cuando desea copiar cambios a una rama local que se ha desviado de la rama remota.

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

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

Una checkout permite usar bzr en un modo similar al CVS / SVN: la sucursal local estará "conectada" a una sucursal remota; commit s será push automáticamente ed; si la rama remota se ha desviado, la confirmación fallará; una update es solo una merge de la rama remota "adjunta".

Estoy usando bzr para una tarea muy simple: obtener la versión de desarrollo de GNU Emacs. Después de la bzr branch inicial de bzr branch , me gustaría mantener mi versión local actualizada. Leí acerca de la documentación sobre bzr pull y bzr merge , pero no tuve sentido. Intenté bzr merge durante unos días y descubrí que bzr merge menudo daba como resultado conflictos irresolubles. Tenga en cuenta que no hice ningún cambio local. ¿Es bzr pull la forma recomendada?

EDITAR 1 (agregado un diagrama 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 de bzr. Las analogías con git o darcs ayudarán mucho.

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


$ bzr help pull

Propósito: Convertir esta rama en un espejo de otra rama.

- sobrescribir Ignora las diferencias entre las ramas y sobrescribe incondicionalmente.

Si desea reemplazar sus cambios locales y solo desea que su rama coincida con la remota, use pull --overwrite. Esto funcionará incluso si las dos ramas han divergido.

para que puedas usar:

$ bzr pull --overwrite


Fusionar es para fusionar dos ramas diferentes, no copias (locales y remotas). Utilice tirar