2013-06-06 14 views
5

Mam plik tracking.properties w mojej ścieżce dostępu do aplikacji Java, która może zmieniać każdą chwilę, np. "Seq = 10" do "seq = 17".Jak chronić plik w repozytorium git przed zatwierdzeniem po pierwszym zatwierdzeniu?

Plik właściwości jest teraz umieszczany w repozytorium github. Mam nadzieję, że plik istnieje w repozytorium, aby inni programiści mogli go sklonować, a plik nie został przez niego przepchnięty, ponieważ "seq" może się zmienić z użytkownika na użytkownika.

Próbowałem

git rm --cached -f <file> 

następnie dodać tracking.properties do .gitignore, ale skutkuje deleteing pliku właściwości w repozytorium git. Powinien tam pozostać i można dopuścić tylko JEDNOCZESNE zatwierdzenie. Czy to możliwe?

Odpowiedz

3

Rozważ użycie wzoru "szablonu" dla tego.

Sprawdź plik jako tracking.properties.template i dodaj tracking.properties do swojego .gitignore. Następnie, po sprawdzeniu repozytorium, programiści powinni skopiować plik szablonu do tracking.properties, a następnie edytować go zgodnie z własnym życzeniem. Ten plik zostanie zignorowany, więc plik nie będzie wyświetlany jako brudny, a programiści prawdopodobnie nie wprowadzą w nim zmian.

Nie uniemożliwi to zmiany pliku szablonu, ale może to być dobre rozwiązanie - może być konieczne wprowadzenie w nim zmian w przyszłości. Ważną rzeczą jest to, że lokalne zmiany tylko w tracking.properties są możliwe bez zbytniego zamieszania.

+0

Dla programistów to niezły pomysł. Ale moja aplikacja ma zostać sklonowana (github nie ma już przycisku pobierania, więc sklonuj) również od osób niebędących programistami i wolałabym nie zmuszać ich do kopiowania i zmieniania nazwy pliku, jak to tylko możliwe ... Czy istnieje jakaś inna, bardziej automatyczna metoda ? – linzhixing

+0

@linzhixing Jeśli i tak trzeba coś zmienić w pliku, to nie ma nic więcej do udokumentowania. Git nie ma koncepcji "śledzonego pliku, który się nie zmienia" - plik jest albo śledzony, albo nie. Jeśli jest jakiś skrypt instalacyjny, możesz poprosić skrypt o wykonanie kopii. W przeciwnym razie możesz udokumentować krok. – cdhowie

+0

Dzięki! W końcu włączyłem polecenie cp w skrypcie powłoki powłoki. – linzhixing

2

Jeśli każdy deweloper prowadzi to polecenie po klonowanie repo

git update-index --skip-worktree tracking.properties 

następnie git będzie zawsze po leczeniu, jak plik, gdyby nie zmienił lokalnie, nawet gdy ma.

Jeśli kiedykolwiek trzeba popełnić lokalnych w nim zmian, można włączyć go z powrotem do normalnego jak to

git update-index --no-skip-worktree tracking.properties 

Jeszcze inną alternatywą jest

git update-index --assume-unchanged tracking.properties 

Here is a good explanation of the subtle differences between skip-worktree and assume-unchanged. Myślę, że skip-worktree jest dla ciebie lepszy, ponieważ ignoruje on reset --hard i zachowuje flagę, gdy zmieniła się wersja upstream.

Powiązane problemy