fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
2 minut

Git i pliki "–assume-unchanged"


13.05.2013

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>
0 0 votes
Article Rating
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
trackback
11 years ago

Git i pliki “–assume-unchanged” | Maciej Aniserowicz o programowaniu…

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl…

nilphilus
nilphilus
11 years ago

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

unodgs
unodgs
11 years ago

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

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również