2013-01-29 13 views
18

Ho bisogno di cambiare il caso di cartelle e file . La prima cosa che ho provato è stata la ridenominazione delle cartelle, ma Git non ha raccolto le modifiche. Così ho provato ad utilizzare git mv -f controller Controller ma si dice:Modifica caso di cartella tramite Git bash su Windows

fatal: renaming 'application/classes/controller failed: Permission denied

ho cercato impostando il flag ignorecase globale:

git config --global core.ignorecase false

Ma ancora non funziona. Alcune persone hanno suggerito di spostare la cartella fuori dal repository, eliminare, quindi aggiungere nuovamente, ma questo cambiamento verrà rilevato quando gli altri utenti estraggono il repository? C'è qualcos'altro che potrei provare?

Modifica: Funziona per i file ma non per le cartelle.

+3

L'autorizzazione negata potrebbe semplicemente derivare dal fatto che si dispone di una finestra explorer o di un client della riga di comando che ha questa cartella come directory corrente e pertanto impedisce la ridenominazione. Assicurati che non sia così e riprova. –

+0

Il problema è che il file system di Windows è davvero un case-preserving. Spostare il 'controller' in' Controller' lo sposterebbe su se stesso. Probabilmente la soluzione è spostarlo su un valore temporaneo e quindi sul nome corretto. O utilizzare un sistema operativo decente ;-) –

+1

@MichaelWild NTFS è case-preserving e può gestire perfettamente i nomi delle maiuscole. Ci deve essere qualcos'altro che blocca le cose, probabilmente una finestra di Explorer come suggeriva Daniel. – Barend

risposta

40

Nel riepilogo dei commenti, è necessario rinominare la directory tramite un nome temporaneo intermedio. Per esempio.

git mv controller Controller-tmp 
git mv Controller-tmp Controller 

penso che questo abbia a che fare con il fatto che l'attuazione di MinGW rename(2) non supporta questa operazione. Vedere questo thread, i documenti MSDN sull'implementazione CRT rename e quelli della funzione MoveFileEx.

0

Assicurarsi di aggiungere le modifiche all'indice dopo la cartella di rinomina con cartella intermedia come di seguito.

git mv oldfolder newfolder 

git add -u newfolder 

git commit -m "changed the foldername whaddup" 

Reference

+0

Nella mia esperienza, 'git mv' esegue già la messa in scena. Era con una versione precedente? (2014 ...) – xtofl

0

Assicurati di chiudere Visual Studio e le cartelle di Windows Explorer relativi a tale percorso.

Problemi correlati