W Gicie możemy zlecić ignorowanie zmian zachodzących w plikach na kilka różnych sposobów. Na ten temat pisałem już w poście “Git a ignorowanie plików“. Dziś skupię się na jednym z nich, a mianowicie na fladze “assume-unchanged”. Służy ona do poinstruowania Gita, aby traktował wybrane pliki, które już zostały dodane do repozytorium, jako niezmodyfikowane. Dwa przykłady zastosowania:
- mamy plik konfiguracyjny, który w repozytorium zawiera placeholdery w miejscu ważnych danych, takich jak connection string, OAuth key/secret etc; po ściągnięciu kodu z repozytorium wpisujemy tam poprawne dane, ale nie chcemy przy każdym commicie pamiętać o tym, aby przypadkiem owych zmian nie pchnąć do repo
- ściągamy projekt i okazuje się, że jeden z setek testów nie przechodzi; nie mamy teraz czasu na zajmowanie się tym problemem (albo zajmuje się już nim ktoś inny), a irytuje nas czerwona bubka w test runnerze; oznaczamy test jako ignorowany, ale plik z takim ignorowanym/zakomentowanym testem nie powinien być niechcący dodany do któregoś z commitów i wysłany na serwer
Scenariuszy jest pewnie więcej, ale te dwa wystarczą aby mieć pełne zrozumienie “po co to jest”.
Tak jak pisałem w podlinkowanym poście, wystarczy jedna linijka aby Git zostawił nasz plik w spokoju:
git update-index --assume-unchanged <path>
Problemem jest jednak fakt, iż nie ma prostego sposobu na podejrzenie które pliki mamy aktualnie w ten sposób potraktowane. A odznaczenie tej flagi wymaga znajomości dokładnej ścieżki:
git update-index --no-assume-unchanged <path>
Na szczęście poprzedni akapit nie jest do końca prawdziwy i ISTNIEJE sposób na sprawdzenie, które śledzone pliki Git aktualnie pomija. Wystarczy dodać sobie taki alias, i zyskujemy nową komendę generującą piękną listę plików oznaczonych flagą assume-unchanged:
[alias] ignored = !git ls-files -v | grep "^[[:lower:]]"</p>
Git i pliki “–assume-unchanged” | Maciej Aniserowicz o programowaniu…
Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl…
Czy to normalne że po checkout na inny branch (i powrocie) flaga znika?
nilphilus,
U mnie tak się nie dzieje.
Dzięki za cenną informację. Nie wiedziałem o takiej możliwości.