2012-03-16 13 views
12

Recientemente cambiamos de TFS a Mercurial para nuestro pequeño equipo. El proyecto principal en el que trabajan 3 personas es una aplicación de Windows Forms en C#. Cada vez que utiliza el diseñador, incluso para realizar cambios simples, realiza una gran cantidad de reorganizaciones y cambios al archivo .Designer. Si dos personas trabajan en este archivo, incluso haciendo cambios simples, la fusión es una pesadilla absoluta. ¿Hay alguna manera fácil de resolver este problema? En TFS, desactivamos las modificaciones concurrentes, por lo que no tuvimos este problema.¿Existe alguna manera más fácil de combinar archivos Windows Forms .Designer?

+2

La fusión de la '* .Designer.cs' es un dolor - y punto. – IAbstract

+0

Iba a hacer la misma pregunta sobre los archivos del diseñador de formularios web. Supongo que es posible que el bloqueo sea la mejor solución, pero no una solución muy satisfactoria cuando lo que realmente quieres hacer es dejar que todos trabajen y luego fusionarte más tarde. – regularmike

Respuesta

1

Las fusiones de este tipo de archivos son siempre dolorosas ... Esta es la razón por la que existen algunas extensiones de "bloqueo" para Mercurial, por lo que puede tener el mismo flujo de trabajo que con TFS si es necesario.

Por ejemplo, puede usar el Lock extension escrito por Martin Geisler para bloquear archivos .Designer hasta el próximo push, evitando así cualquier modificación concurrente, evitando así también la fusión.

+1

Todavía no creo que esto resuelva el problema de la fusión entre sucursales, aunque eso no es lo que pide el OP. –

+0

"Bloquear" archivos no es una solución adecuada (ni práctica en un entorno distribuido). El problema es que el generador de código de Microsoft no se preocupa por hacer que el archivo sea legible por los humanos (es decir, clasificando miembros, por ejemplo). Si emitiera el código de una manera ordenada, entonces no tendría que ordenar cientos de partes para un pequeño cambio de propiedad de una sola línea porque solo esa línea cambiaría. Honestamente, no puedo entender cómo lo implementaron para que sea tan impredecible. Deben estar usando un RNG por diversión o algo ... – bambams

1

El problema es cada vez que el código del motor de generación puede generar código en un orden diferente !!! lo que hace que fusionar un dolor.

WinForm (NET) diseñador, Swing (Java) diseñador se basan en el motor de generación de código.

designer.cs de ASP.NET solamente contiene campo respaldo, que menos probabilidades de sufrir.

campo respaldo de WPF se genera en obj/*. G.cs, que no está obligado a mantener el control de origen, por lo que no hay problema fusión.

Cuestiones relacionadas