2011-09-09 8 views
13

He heredado un proyecto Java que incluye varias clases que no están nombradas de acuerdo con la convención de nomenclatura UpperCamelCase.Windows y Mercurial cambian casos de nombres de clase

Este es particularmente el caso de las abreviaturas (por ejemplo, HTMLButton en lugar de HtmlButton). Aunque sé que existen algunas diferencias de opinión sobre el uso de CamelCase con abreviaturas, nos gustaría cambiar a solo usar una letra mayúscula para la primera letra de la abreviatura. (Actualmente, parece haber varias convenciones de nomenclatura simultáneas.)

Me gustaría arreglar esto. Estamos utilizando Mercurial como nuestro repositorio de código fuente y trabajando en máquinas con Windows (incluyendo XP, Vista, 7). Sin embargo, si cambio un nombre de clase de HTMLButton a HtmlButton, Mercurial lo reconoce como un cambio de nombre de clase, pero no como un cambio de nombre de archivo. (Y posteriormente cualquier extracción de Mercurial no recoge el cambio de nombre de archivo.)

Sé que Windows funciona en un sistema de archivos insensible a mayúsculas y minúsculas, y entiendo que Mercurial retoma esta característica cuando acepta impulsos de un Windows box ...

Así que ...: - ¿Hay alguna configuración que pueda cambiar para que Mercurial utilice nombres de archivo con mayúsculas y minúsculas? - ¿Hay alguna configuración que pueda cambiar para que Windows use los nombres de archivo que distinguen entre mayúsculas y minúsculas? (Estas son preguntas por separado. Mi prioridad es conseguir que Mercurial acepte cambios en el nombre de archivo, si es necesario, podemos forzar manualmente el cambio de nombre en nuestro IDE. Sin embargo, se preferirá una solución directa)

(Si todo lo demás falla, podría intentar cambiar el nombre de HTMLButton a HtmlButtonA, commit y push, y renombrar HtmlButtonA a HtmlButton, y hacer otro commit y push ... Sin embargo, no estoy seguro del impacto que esto tendría en los nombres de archivo de Windows si alguien lo demás sólo hizo un tirón después de la segunda pulsación ...)

Respuesta

20

Si lo hace:

hg rename foo bar 
hg rename bar Foo 

No necesita comprometerse y presionar hasta el final. En otras palabras, su repositorio no tendrá conocimiento de esta solución específica de Windows.

Otra opción es cambiar el nombre del archivo en Windows, a continuación, invocar:

hg rename foo Foo --after 

para notificar el cambio de Mercurial.

Fuente: http://hgbook.red-bean.com/read/mercurial-in-daily-use.html#id364064

+0

gracias - creo que el doble cambio de nombre es la mejor que puedo hacer (al menos no tengo que hacer un montón de confirmaciones/empuja). Todavía es un poco tedioso, pero supongo que así es la vida ... – amaidment

+3

Ten cuidado al hacer esto. Hice esto (sin un compromiso entre) y ahora no puedo fusionar esa rama con otra rama que tiene el viejo caso ... :(Todavía estoy trabajando en eso, pero tal como está, no he encontrado una manera de corregirlo Este problema. He tratado de renombrarlo (en ese punto puedo fusionarlo) y luego volver al nuevo caso (reventar nuevamente). Así que solo asegúrate de que puedes fusionarte con otras ramas ANTES de empujar a cualquier parte;) – GazB

+0

Después de cambiar el nombre Visual Studio (actualiza csproj), en TortoiseHg (2.11.1), hice clic derecho y elegí renombrar. Eso pareció funcionar. Me comprometí, me fusioné con otra sucursal con éxito y presioné. –

Cuestiones relacionadas