Git i pliki "–assume-unchanged"

4

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>
Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

4 Comments

  1. Pingback: dotnetomaniak.pl

  2. nilphilus on

    Czy to normalne że po checkout na inny branch (i powrocie) flaga znika?

  3. Dzięki za cenną informację. Nie wiedziałem o takiej możliwości.

Newsletter: devstyle weekly!
Dołącz do 1000 programistów!
  Zero spamu. Tylko ciekawe treści.
Dzięki za zaufanie!
Do przeczytania w najbliższy piątek!
Niech DEV będzie z Tobą!