2011-09-09 2 views
13

Ho ereditato un progetto Java che include un numero di classi che non sono denominate in base alla convenzione di denominazione UpperCamelCase.Casi di modifica di Windows e Mercurial dei nomi di classe

Ciò è particolarmente il caso con le abbreviazioni (ad esempio HTMLButton anziché HtmlButton). Mentre so che ci sono alcune differenze di opinione sull'uso di CamelCase con le abbreviazioni, vorremmo passare a usare solo una lettera maiuscola per la prima lettera dell'abbreviazione. (Attualmente, sembrano esserci diverse convenzioni di denominazione simultanee.)

Mi piacerebbe riordinare questo. Stiamo usando Mercurial come nostro repository di codice sorgente e lavorando su macchine Windows (incluso XP, Vista, 7). Tuttavia, se cambio il nome di una classe da HTMLButton a HtmlButton, Mercurial lo riconosce come una modifica del nome della classe, ma non come una modifica del nome del file. (E in seguito qualsiasi pull da Mercurial non prende il cambio del nome del file.)

So che Windows lavora su un file system insensibile alle maiuscole e minuscole, e capisco che Mercurial riprende questa caratteristica quando accetta spinte da un Windows box ...

Quindi ...: - Esiste un'impostazione che posso modificare per far sì che Mercurial utilizzi i nomi di maiuscole e minuscole? - Esiste un'impostazione che posso modificare per far sì che Windows utilizzi i nomi dei file con distinzione tra maiuscole e minuscole? (Queste sono domande separate.) La mia priorità è di far accettare a Mercurial le modifiche al nome del file, se necessario, possiamo forzare manualmente la rinomina dei file nel nostro IDE. Tuttavia, sarebbe preferibile una soluzione diretta!)

(Se tutto il resto fallisce, potrei provare a rinominare HTMLButton in HtmlButtonA, commit e push, e rinominare HtmlButtonA in HtmlButton, e fare un altro commit e push ... Tuttavia, non sono sicuro di quale impatto questo avrebbe sui nomi di file di Windows se qualcuno altro fatto solo un tiro dopo la seconda spinta ...)

risposta

20

Se lo fai:

hg rename foo bar 
hg rename bar Foo 

Non è necessario impegnarsi effettivamente e spingere fino alla fine. In altre parole, il tuo repository non sarà a conoscenza di questa soluzione alternativa specifica per Windows.

Un'altra opzione è quella di rinominare il file in Windows, quindi richiamare:

hg rename foo Foo --after 

di notificare Mercurial del cambiamento.

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

+0

grazie - credo che il doppio di ridenominazione è il meglio che posso fare (almeno io non devo fare un sacco di commit/spinge). È ancora un po 'noioso, ma suppongo che sia la vita ... – amaidment

+3

Stai attento a fare questo. Ho fatto questo (senza un commit tra) e ora non riesco a unire quel ramo con un altro ramo che ha il vecchio caso ... :(Sto ancora lavorando su di esso ma così com'è non ho trovato un modo per correggere questo problema Ho provato a rinominarlo (a quel punto posso unire) e poi tornare al nuovo caso (interrompi di nuovo). Quindi assicurati di poter unire con qualsiasi altro ramo PRIMA di spingere ovunque!;) – GazB

+0

Dopo averlo rinominato in Visual Studio (aggiorna csproj), in TortoiseHg (2.11.1), ho fatto clic con il pulsante destro del mouse e ho scelto Rinomina. Sembrava funzionare. Ho commesso, fusa con un altro ramo con successo e spinto. –