2008-09-25 18 views
7

Antecedentes: En mi trabajo, utilizamos SVN, C# y VisualStudio. Parte de mi tarea regularmente implica cambios de nombre globales. A menudo termino con una compilación rota después de renombrar algo y luego fusionarme en cambios.Herramienta de fusión semántica

La pregunta: ¿hay alguna solución que pueda ver mis cambios, tenga en cuenta el cambio de nombre global y luego aplicar eso a la edición que otros han hecho al fusionarlos?

Otra forma de obtener el mismo efecto sería algún tipo de registro de refactorización y luego aplicarlo a las ediciones entrantes.

La herramienta no tiene que ser perfecta, incluso si solo notara cualquier referencia en sus ediciones que hiciera referencia a algo que he editado sería valioso.

Editar Conozco las herramientas de refactorización de VS. Lo que estoy buscando es algo que me permitirá, después de haber refabricado mi copia de trabajo, aplicar las mismas refactorizaciones a las ediciones de otras personas que ahora necesito fusionar.

La solución ideal sería asegurarse no hay ediciones sobresalientes cuando realizo la refactorización, pero eso evitaría que alguien más hiciera algo para la próxima semana o más. (Debido a que tendrían que sincronizar cada media hora más o menos para la próxima semana)

+1

Actualmente, una buena opción (comercial) parece ser [Comparar código] (http://www.devart.com/codecompare/), disponible en el Administrador de extensiones de Visual Studio. – rsenna

+1

¿Has marcado este? http://plasticscm.com/sm/indexhtml Deberías, es exactamente la herramienta C# que estabas buscando – pablo

+0

Entonces, lo que realmente quieres es una herramienta de parche semántica. – mbx

Respuesta

0

Suponiendo al menos VS 2005 y el cambio de nombre global es una variable/propiedad/función, hay una opción de menú Refactor - Cambiar el nombre del botón derecho podría utilizar. Por diseño, propaga el cambio de nombre en toda su solución.

+0

Eso es lo que estoy usando en el primer bit. No hace mucho bien más tarde ya que no generará un código inválido en el reactor (y eso es lo que obtengo después de una combinación) – BCS

0

¿No sería posible reducir el tiempo necesario para que realice los cambios? Una o más semanas parecen bastante largas entre confirmaciones ...

0

Entendí su problema. Desafortunadamente, creo que no hay una secuencia de comandos SVN lo suficientemente inteligente como para hacer este trabajo mientras se sincroniza.

Tal vez su equipo trabaje de forma más adecuada con SVN podría hacer que esta situación sea ingrata. Cuando realice un svn: actualice en su copia de trabajo y realice operaciones de fusión, es una buena práctica volver a generar la solución actualizada antes de comprometer los cambios.

Tener una secuencia de comandos svn con la capacidad de hacerlo automágicamente cuando la fusión sería genial, de hecho.

1

Mantenga el cambio de nombre separado de otras refactorizaciones. Generalmente se pueden automatizar y, por lo tanto, hacer los cambios es fácil. Incluso puede distribuir scripts para permitir que otros ingenieros con fusión infierno realicen las transformaciones en sus archivos.

No hay una manera fácil de automatizar refactorizaciones, así que no lo dude. Un cambio de nombre solo debería tomar unos minutos y usted debería poder verificar y comprometerse con pruebas mínimas.

+0

Re that lat bit: En general estoy de acuerdo, sin embargo, una herramienta que puede reconocer algunas clases especiales de refactorizaciones (eso son automatizables) y aplicarlos a otro código debe ser práctico. – BCS

Cuestiones relacionadas