2011-11-17 9 views
9

Wiem, dlaczego nie należy zatwierdzać plików Eclipse/IDE do VCS, takich jak Git (którego używam). Jest to jeden z powodów, dla których używam Mavena i generuję te pliki dla ciebie i nie mając je pod kontrolą wersji.Czy pliki specyficzne dla Eclipse w VCS powinny być ignorowane, jeśli używasz Mavena?

Ale zastanawiam się, czy te pliki powinny być ignorowane w .gitignore który sam jest pod kontrolą VCS/Git:

.classpath 
.project 
.settings/ 
target/ 

Czy to w porządku?

Jakie są plusy i minusy, skoro plik .gitignore sam w sobie jest specyficzny dla IDE, ponieważ pliki zignorowane jako IDE-spefific? Każda najlepsza praktyka?

Odpowiedz

10

Z zespołem, nad którym pracowałem, zasada ogólna polega na tym, że nie sprawdzasz niczego, co jest generowane przez Mavena lub uzyskane przez niego. Ponieważ plik pom.xml zawiera wszystko, czego potrzebujesz do utworzenia plików .project, .classpath i .settings, nie sprawdzamy ich.

Moja .gitignore zawsze zawiera .classpath, .settings, .project i cel dla projektów Maven.

Edit: Jak wspomniano w moim komentarzu poniżej, tu jest inny sugestia: Jeśli naprawdę chcesz, aby uniknąć konieczności Maven lub IDE konkretnych pozycjach swojej .gitignore, try writing your .gitignore so you list only what you DO want checked in.

* 
!stuffIDoWantToCheckIn 
+0

Po zaznaczeniu w .gitignore, jak opisałeś i wskazałeś w moim pytaniu, pośrednio sprawdzasz dane o plikach generowanych przez Mavena. – SimonTheSorcerer

+4

Poważnie się nad tym zastanawiasz. Chodzi mi o to, że nie chcesz sprawdzać niczego wygenerowanego przez Mavena. (Również moja .gitignore nie jest generowana przez Mavena.) Nie ma nic złego w umieszczaniu w plikach .gitignore plików określonych IDE, folderów wyjściowych i czegokolwiek, czego nie chcesz. To jest w istocie cały sens tego. –

+0

Jeśli jednak naprawdę nie chcesz mieć wyjątków IDE lub Maven w .gitignore, może możesz spróbować wstawić zanegowane wpisy, aby określić tylko to, co chcesz, aby było zaznaczone. Nigdy tego nie robiłem, ale wstawiasz * w .gitignore, aby zignorować wszystko, a następnie dodajesz linie zaczynające się od! aby wyświetlić wyjątki [co oznacza, że ​​te wpisy zostaną zgłoszone.] http://stackoverflow.com/questions/1279533/is-there-a-way-to-tell-git-to-only-include-certain-files-instead -of-ignoring-cer –

0

zwykle .project i .settings/powinien być wersjonowany i ignorowany!

. Ścieżka i cel nie powinny być wersjonowane, ale ignorowane.

To pierwszy zasadniczy rozruch przy kasie.

tj

  • Mówiłeś Everone do dyspozycji cztery przestrzenie jako zakładki, ta informacja jest przechowywana pod .settings/xxx
  • ale dajesz żadnych ograniczeń, gdzie trzeba instalować ich tomcat/JDK (przechowywanego pod .classpath)

ok?

+1

Nigdy nie słyszałem o wersjonowaniu ** i ** ignorowaniu pliku. Jaki to ma efekt? – SimonTheSorcerer

+0

Nie sądzę, że ustawienia kontroli wersji pomagają każdemu. W zależności od używanych wtyczek może istnieć dowolna zawartość (pamięć podręczna, maszyna, a nawet zależne od systemu plików, ...), więc zignorowałbym to przez cały czas. Chcę, żeby zaćmienie to zarządzało, i tak, potrzebuję sposobu na ich odtworzenie. – mliebelt

+0

@ SimonTheSorcerer Możesz wymusić pobieranie raz i nigdy nie przesyłać. Ta praktyka jest używana do informowania nowicjuszy o potrzebie związania projektu. Ci Newcommerzy nie będą mogli zatwierdzić swoich konfiguracji! –

1

zgadzam się na nie stawianie pliki IDE pod kontrolą wersji, to czasami powoduje różnego rodzaju bóle, a jak wspomniano przy użyciu Maven czyni to niepotrzebne, jak każdy deweloper może po prostu zaimportować projekt z POM i zacząć zabawę

Jeżeli pliki te nie są umieszczane w .gitignore mogą być łatwo sprawdzone przez pomyłkę w

ponadto nie znajdę wymieniając je w .gitignore sprawia, że ​​IDE specyficzny, można wyświetlić listę plików projektu Eclipse, IntelliJ IDEA i Netbeans, wszystkie w tym samym .gitignore, jeśli członkowie twojego zespołu używają kombinacji differe nt IDE. Z biegiem czasu możesz gromadzić szablon .gitignore, który ignoruje pliki projektu ze wszystkich IDE używanych w zespole (twoich zespołach) do użycia przy tworzeniu nowego repozytorium.

Jeśli jesteś całkowicie przeciwny umieszczeniu ich w projekcie .gitignore możesz umieścić ich w użytkowników.gitignore, ale w moim umyśle jest nieco luźniejsza, ponieważ zależy od prawidłowej konfiguracji poszczególnych maszyn programistycznych, a także należy je zachować w synchronizacji z nowymi dodatkami.

Edytuj: Obecnie mam odpowiednik .hgignore, sama koncepcja inna składnia, I konwertowane go do git jako przykład takiego pliku .gitignore

/target/ 
/bin/ 
/build/ 
/.classpath 
/.project 
/.settings/ 
/.checkstyle 
/atlassian-ide-plugin.xml 
/.idea/ 
/*.iml 
/*.ipr 
/*.iws 
*.orig 
*.swp 
*~ 
+0

Czy możesz podać taki szablon .gitignore? – SimonTheSorcerer

+0

Edytowałem swoją odpowiedź, dodając przykład .gitignore –

+0

Dziękuję. W porównaniu z zaakceptowaną odpowiedzią, Twoja .gitignore wygląda na bardziej złożoną i wymaga więcej konserwacji. Wyobraź sobie, że nowe IDE jest wspierane przez Mavena i musisz zmodyfikować wszystkie .gitignores wszystkich projektów we wszystkich gałęziach itp. Dla programistów używających go. – SimonTheSorcerer

2

dostaję moje dane z poniższego artykułu: https://help.github.com/articles/ignoring-files

to sugeruje, że można utwórz globalny plik gitignore (sugeruj pod ~/.gitignore_global) zawierający .proje ct, itd. Gdy plik jest poza repo, to nie pokazują ...

zarejestrować go jako globalnego ignorować plik za pomocą następującego polecenia:

git config --global core.excludesfile ~/.gitignore_global 

Alternatywnie, można utworzyć per-repo untracked wpisy gitignore w pliku .git/info/exlude

Powiązane problemy