Masowe usuwanie plików z repozytorium mercuriala

Data publikacji: 2016-05-17 | Tagi:

Przesadzam trochę z tytułem, ale jak inaczej nazwać operację uporządkowania repozytorium, po wielkim sprzątaniu kodu i usuwaniu zbędnych plików w wielu miejscach? ;).

Dobra, to teraz wyobraźmy sobie sytuację, że w katalogu src/assets/ mieliśmy pokaźną ilość plików graficznych rozsianych po różnych katalogach. Część z nich została usunięta, część została zastąpiona jednym plikiem zbiorczym, a jeszcze inna część pozostała niezmieniona.

Sytuację można zobrazować mniej więcej tak:

$ hg status

M src/assets/img/plikA.jpg
! src/assets/img/plikB.jpg
! src/assets/obrazki/C.png
! src/assets/obrazki/D.png
! src/assets/images/obraz1.jpg
! src/assets/images/obraz2.jpg
? src/assets/sprites/A.png
? src/assets/sprites/B.png

Oczywiście w katalogu src/assets/ jest dużo więcej plików, których w tym momencie nie ruszamy. M oznacza, że plik został zmodyfikowany.! oznacza, że plik był pod kontrolą wersji, ale został usunięty z dysku (te pliki należy wyłączyć z kontroli wersji - usunąć z repozytorium). ? oznacza, że plik został dodany na dysku i należy dodać go do repozytorium.

Przejdźmy do konkretów - można zrobić to ręcznie:

$ hg remove src/assets/img/plikB.jpg ...

Przekazujemy listę plików lub wykonujemy każde usunięcie pojedynczo. Potem dodajemy pliki:

$ hg add src/assets/sprites/A.png ...

Ale jest lepszy pomysł na taką operację:

$ hg addremove src/assets/

Po takiej operacji mercurial wyświetli listę plików dodanych i usuniętych z kontroli wersji. Na tej liście powinny znaleźć się wszystkie pliki z powyższego przykłądu. Jeśli wszystko poszło ok, możemy zakomitować zmiany.

Jeśli wystąpiło jakieś niepożądane zachowanie, np addremove dostało zbyt duży zakres zmian, można cofnąć zmiany (zakładając, że od ostatniego komitu użyliśmy tylko addremove) używając hg revert --all.


Oceń ten post:
Podziel się:

comments powered by Disqus

IT w obrazkach: