2011-03-25 19 views
8

Estaba a punto de iniciar una rama git fuera de la rama principal para agregar algunas funcionalidades a mi aplicación, que también implicaría algunas adiciones a la interfaz.Git, XIB, fusionando

Sin embargo, ya tengo una rama para otra funcionalidad que también implica algunas adiciones de interfaz.

¿Seré capaz de fusionar ambas ramas para dominar cuando termine con ellas? ¿Existe alguna buena práctica para, probablemente, estructurar archivos xib de una cierta manera que facilite la fusión posterior?

Respuesta

6

¿Qué sucede si, por ejemplo, tengo una vista de pestaña con tres pestañas en una rama y una pestaña con tres pestañas en la otra, y dos pestañas son iguales, y una no, lo hará i obtener una vista de la ficha de cuatro pestañas después de la fusión

lo más probable es que tenga a conflict, si los modificados líneas (implicados en las definiciones de la ficha) son los mismos.
Tendrás 4 pestañas solo si, durante la resolución de fusión manual, dejas erróneamente una definición de pestaña adicional.

Consulte Painless Merge Conflict Resolution in Git para obtener un excelente artículo sobre la resolución de fusión.

3-way merge


Dicho esto, con respecto xibs específicamente, su presentación parece buena:

A partir de Interface Builder versión 3, un nuevo formato de archivo (con extensión .xib) tiene ha sido agregado, que es funcionalmente idéntico a .nib, excepto que se almacena en un archivo plano, por lo que es más adecuado para el almacenamiento en sistemas de control de revisión y procesamiento cantar por herramientas como diff.

Pero this thread resume la sensación real:

Cómo se Git capaz de fusionar los cambios en XIBs?
La estructura de un XIB no es lineal; no hay garantía de que pueda cambiar porciones de un XIB y terminar con un XIB utilizable.
A menos que Git entienda XIBs cerca de Apple, no veo cómo la fusión podría ser garantizada para funcionar.

Eso le dejaría con el paso adicional, antes de añadir la resolución de fusión en caso de conflicto, para abrir el archivo modificado en el editor de .xib XCode4 y comprobar si todo todavía se ve bien.

XCode4 xib file Editor

Una vez que la inspección visual se realiza, record the merge resolution through rerere, y usted have potentially automatic resolution en el futuro.

+0

Gracias. Sí, sé sobre resolución de conflictos en git, y esta pregunta no es tanto sobre git como tal, sino sobre * xibs * en git (xibs son interfaces para aplicaciones Mac OS X, creadas en un editor visual Interface Builder, son casi imposible de leer). – Ibolit

+0

@Ibolit: lo entiendo. Eso parece dejarte solo con el paso adicional de control visual, antes de grabar el resultado de la resolución de fusión con 'git rerere'. Más en mi respuesta actualizada. – VonC

+0

Muchas gracias. Voy a intentarlo :) – Ibolit

0

Por supuesto, usted podrá fusionar ambos en el maestro. No importa cómo estes estructurando tus archivos, a git no le importa eso.

+3

Esto es una simplificación excesiva: el OP está preguntando sobre dos ramas que hacen modificaciones a la misma cosa, la interfaz. Podrían causar conflictos de fusión. Resolvable, sí, pero algo a tener en cuenta. – Cascabel

+4

El problema es que cuando resuelvo conflictos en otros archivos, entiendo lo que estoy haciendo, sé lo que significan líneas particulares. En este caso, veré solo un xml que no significará nada para mí. Si me equivoco al fusionarme, hay pocas posibilidades de que pueda encontrar un error correcto. De nuevo, ¿qué sucede si, por ejemplo, tengo una vista de pestaña con tres pestañas en una rama y una pestaña con tres pestañas en la otra, y dos de las pestañas son iguales y una no lo es, obtendré un cuatro vista de pestañas después de la fusión? – Ibolit