Domanda Indice di aggiornamento git ricorsivo --assume-immutato


Sto cercando di eseguire quanto segue:

git update-index --assume-unchanged myFolderToIgnore

Dove myFolderToIgnore è una cartella. Tuttavia fallisce dicendo che è "incapace di segnarlo".

Così ho provato:

git update-index --assume-unchanged myFolderToIgnore/

Con quale GIT risponde Ignoring path myFolderToIgnore/ ma non fa nulla (vede ancora i miei cambiamenti e cerca di controllarli).

Alla fine ho dovuto entrare e contrassegnare manualmente ogni singolo file come invariato. Cosa mi manca qui?


32
2018-05-02 19:50


origine


risposte:


update-index è un comando idraulico interno e quindi non confortevole come i comandi front-end reali. Dovrai gestire da solo il bit di ricorsione:

git ls-files -z myFolderToIgnore/ | xargs -0 git update-index --assume-unchanged

51
2018-05-02 20:05



Mi sono imbattuto in questo problema in cui la mia cartella conteneva centinaia di migliaia di file e migliaia di cartelle.

Ciò ha comportato "Elenco argomenti troppo lungo".

La seguente soluzione eseguirà il comando per ogni cartella e attraverserà il contenuto in tali cartelle. Quindi fino a quando centinaia di migliaia di file sono separati in cartelle, allora funzionerà.

find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --assume-unchanged" \;

1
2017-08-12 14:44