Które pliki Eclipse podlegają kontroli wersji?


242

Które pliki Eclipse należy poddać kontroli źródła, oczywiście poza źródłami?

Szczególnie w moim projekcie zastanawiam się nad:

.metadata / *
project-dir / .project
project-dir / .classpath
project-dir / .settings / *

Jeśli są jakieś, od których to zależy, wyjaśnij swoje wytyczne.

Odpowiedzi:


175

Metadanymi nie należy zarządzać w kontroli źródła. Zawierają one głównie dane dotyczące twojego obszaru roboczego.

Jedynym wyjątkiem są .launchpliki XML (definicja programu uruchamiającego).

Znajdują się w

[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches

I powinny zostać skopiowane do katalogu projektu: Gdy projekt zostanie odświeżony, te konfiguracje zostaną wyświetlone w oknie dialogowym „Uruchom konfigurację”.

W ten sposób tymi plikami parametrów uruchamiania można również zarządzać w SCM.

(Uwaga: Do odznacz opcję „Usuń konfiguracje gdy związany zasób jest usunięte” w Run / Launching / Uruchom Konfiguracja panelu preferencji: powszechne jest miękki skasować projekt w celu zaimportowania go z powrotem - do wymuszenia reinicjowanie z następujących metadane eclipse. Ale ta opcja, jeśli zaznaczona, usunie szczegółowe parametry uruchamiania!)

project-dir/.project
project-dir/.classpath
project-dir/.settings/* 

powinny być w SCM (w szczególności .projecti .classpathzgodnie z dokumentacją Eclipse ).

Celem jest, aby każdy mógł pobrać / zaktualizować swój obszar roboczy SCM i zaimportować projekt Eclipse do obszaru roboczego Eclipse.

W tym celu chcesz używać tylko ścieżek względnych w ścieżce .clas, używając połączonych zasobów .

Uwaga: lepiej jest project-dirodwoływać się do „zewnętrznego” katalogu projektu, a nie katalogu utworzonego w obszarze roboczym zaćmienia. W ten sposób dwa pojęcia (obszar roboczy zaćmienia vs. obszar roboczy SCM) są wyraźnie rozdzielone.


Jak wspomina ipsquiggle w komentarzu i jak wspomniałem w starej odpowiedzi , możesz faktycznie zapisać konfigurację uruchamiania jako plik udostępniony bezpośrednio w katalogu projektu. Całą konfigurację uruchamiania można następnie wersjonować tak jak inne pliki projektu.

(Z posta na blogu Wskazówka: tworzenie i udostępnianie konfiguracji uruchamiania z KD)

alternatywny tekst


16
O wiele lepszym przepływem pracy do pracy z czymkolwiek w .metadata dla plików .launch jest: kiedy edytujesz konfigurację uruchamiania, na commonkarcie wybierz Save as > shared file. To bezpośrednio upuszcza go do folderu projektu, dzięki czemu można go SCM'ować z resztą projektu.
Ipsquiggle

3
Dlaczego .project powinien być w SCM? Na przykład chcę użyć narzędzia metryk kodu, które powoduje zmiany w .project po włączeniu. Nie chciałbym narzucać tego wszystkim użytkownikom projektu.
jfritz42

8
@ jfritz42: jeśli dokonasz lokalnej i punktualnej zmiany, która jest ważna tylko dla ciebie, wtedy zignoruj ​​tę wersję .projectna razie dla twojego obszaru roboczego. Ale nie pozbawiaj wszystkich innych użytkowników wspólnej definicji projektu Eclipse, którą mogą szybko zaimportować do swojego obszaru roboczego Eclipse, tylko dlatego, że masz jedną dodatkową definicję, która pasowałaby tylko do twojej chwili.
VonC

7
Dziękuję Ci. Dokładnie przestudiuję te linki, ale już zauważam, że w pierwszym z twoich linków jedna odpowiedź zaczyna się „Zdecydowanie tak”, a następna zaczyna się „Zdecydowanie nie”. Google oferuje różnorodne, nieprzyjazne porady dla początkujących. Rozumiem cel, ale jak go osiągnąć, jest problem. Pochodzę z Xcode, w którym opcje źródła i użytkownika są wyraźnie oddzielone od danych wyjściowych generowanych przez Xcode i generowanych przez kompilator, dzięki czemu na to pytanie można odpowiedzieć w prosty sposób. Dla początkującego Eclipse wydaje się, że te pliki są ze sobą mieszane i rozproszone. Szukam prostego, zrozumiałego odpowiedzi
garyp

3
Pochodzę z programu VisualStudio i tutaj umieszczam @garyp - to naprawdę gorący bałagan - jeśli Eclipse musi utworzyć tymczasowe i / lub niepotrzebne do śledzenia pliki dla poszczególnych użytkowników, powinno je umieścić gdzie indziej, aby można śledzić definicje projektu i kompilacji, a wszystkie tymczasowe śmieci nie przeszkadzają. Czy gdzieś nie ma żadnych oficjalnych wskazówek od zespołu Eclipse? (Jest całkiem jasne, że zespół zaćmienia nie testuje jednostek [lub jeśli to robią, nie robią tego skutecznie], ale przynajmniej powiedz mi, że używają kontroli źródła! XD)
BrainSlugs83

19

Obecnie pracuję nad projektem, w którym mamy pliki .project i .cproject pod kontrolą źródła. Pomysł polegał na tym, że ustawienia związane ze ścieżkami bibliotek i dyrektywami linków byłyby rozpowszechniane w całym zespole.

W praktyce nie działało to zbyt dobrze, fuzje prawie zawsze wracają w stanie konfliktu, który musi zostać zdekonflikowany poza zaćmieniem, a następnie projekt został zamknięty i ponownie otwarty, aby zmiany zostały wprowadzone.

Nie zalecałbym utrzymywania ich pod kontrolą źródła.


14

Nic nie warte jest tego, że pliki konfiguracyjne CDT nie są przyjazne dla kontroli źródła. Zgłoszony został błąd dotyczący bardzo częstej zmiany plików .cproject i powodowania konfliktów, zobacz Udostępnianie plików projektów cdt w repozytorium zawsze powoduje konflikty .


Yikes - ten błąd ma sześć lat i nadal nie został dotknięty. Najwyraźniej wsparcie kontroli źródła nie jest priorytetem dla zespołu Eclipse!
BrainSlugs83

2
Należy również zauważyć, że plik .cproject zawiera informacje o konfiguracji, których wolałbyś nie zmuszać innych programistów do ręcznego ponownego tworzenia. Ugh.
Christopher Barber

7

Niektóre projekty, takie jak te wykorzystujące Maven, lubią generować pliki .project na podstawie POM.

To powiedziawszy, poza tym - metadane NIE powinny mieć kontroli źródła. Twój projekt będzie musiał ustalić, czy robi to projectdir / .settings, na podstawie tego, jak planujesz zarządzać standardami i tym podobne. Jeśli możesz szczerze zaufać programistom, że skonfigurują swoje środowisko w oparciu o standard i nie musisz dostosowywać niczego specjalnego do żadnego projektu, to nie musisz ich włączać. Ja, zalecam skonfigurowanie każdego projektu specjalnie . Umożliwia to programistom pracę nad materiałami z wielu projektów w tym samym obszarze roboczym bez konieczności zmiany domyślnych ustawień tam iz powrotem, i sprawia, że ​​ustawienia są bardzo wyraźne, zastępując ich ustawienia domyślne zgodne ze standardami projektu.

Jedyną trudną częścią jest upewnienie się, że wszystkie są zsynchronizowane. Ale w większości przypadków można skopiować pliki .settings z projektu do projektu. Jeśli są takie, których nie chcesz w kontroli źródła, wykonaj odpowiednik ustawienia svn: ignore dla nich, jeśli SCM je obsługuje.


2
Używamy Maven 1 i 2, i generuje on tylko plik .project, jeśli o to poprosisz. I nawet jeśli to zrobisz, robi to na podstawie zawartości POM, więc jeśli inny programista zrobił już ten krok dla Ciebie i sprawdził wynik w kontroli wersji, dlaczego nie skorzystać z tego?
Andrew Swan,

6

Plik .classpath jest zdecydowanie dobrym kandydatem do sprawdzenia w scm, ponieważ ręczne ustawienie go może być bardzo pracochłonne i będzie trudne dla nowych deweloperów wchodzących do projektu. Prawdą jest, że można go wygenerować z innych źródeł, w którym to przypadku można sprawdzić w innym źródle.

Jeśli chodzi o .settings, zależy to od ustawień. Jest to szary obszar, ale niektóre ustawienia są prawie obowiązkowe i wygodnie jest móc sprawdzić projekt, zaimportować go do Eclipse i mieć wszystko skonfigurowane i gotowe.

Dlatego w naszym projekcie przechowujemy kopię folderu .settings o nazwie CVS.settings i mamy zadanie mrówki, aby skopiować ją do .settings. Po otrzymaniu projektu z CVS wywołujesz zadanie ant Eclipsify, aby skopiować ustawienia domyślne do nowego folderu .settings. Podczas konfigurowania ustawień, które są potrzebne wszystkim osobom rozwijającym się w projekcie, scalasz je z powrotem do folderu CVS.settings i zatwierdzasz w CVS. W ten sposób zapisywanie ustawień w SCM staje się świadomym procesem. Wymaga to od deweloperów scalenia tych ustawień z powrotem do ich folderów .settings, gdy sprawdzane są duże zmiany. Ale to prosty system, który działa zaskakująco dobrze.


4

Nie powiedziałbym żadnego z nich. Najprawdopodobniej zawierają informacje, które dotyczą tylko twojej stacji roboczej (myślę o ścieżkach do bibliotek i wszystkich innych). A co, jeśli ktoś z twojego zespołu nie używa Eclipse?


3
Nie, możesz mieć ścieżki względne w ścieżce .classpath. Zobacz stackoverflow.com/questions/300328#300346 .
VonC

7
Brzmi jak dość niespójny / nieefektywny zespół, jeśli nie używa tego samego dewelopera. narzędzia, definicje projektu, debugowania i kompilacji itp. - Następnie powiesz mi, żebym nie używał wspólnego standardu kodowania lub JDK. - Idealnie byłoby, gdyby użytkownik mógł zdjąć projekt z kontroli źródła i wskoczyć do niego bez wielu dodatkowych ustawień lub instrukcji. Ta odpowiedź jest dla mnie po prostu nie do przyjęcia.
BrainSlugs83

1
O wiele bardziej nieefektywne jest radzenie sobie z konfliktami w plikach preferencji podczas łączenia, tylko dlatego, że ktoś otworzył projekt z nowego obszaru roboczego - to koszmar w dużych projektach. Poza tym zmuszanie do używania tego samego IDE z dokładnie taką samą konfiguracją brzmi jak niepotrzebne ograniczenie.
A. Rodas

Zgadzam się z [~ agnul]. Projekty powinny korzystać z jakiegoś narzędzia do budowania (gradle, maven, ant itp.), A IDE powinno móc otwierać i konfigurować projekt z pliku konfiguracyjnego narzędzia do budowania (build.gradle, pom.xml, build.xml, itp ...) Żadne pliki IDE nie powinny być kontrolowane pod kątem wersji. Wszystkie są plikami specyficznymi dla programistów, a nie plikami specyficznymi dla projektu. Po prostu nie należą do kontroli wersji.
axiopisty

2

Rozważać:

.classpath
.project
.launch

Powinny być pod kontrolą wersji, dopóki trzymasz się ścieżek względnych dla projektu. Dzięki temu inni programiści mogą sprawdzić projekt i rozpocząć pracę od razu, bez konieczności przechodzenia przez cały proces konfiguracji, przez który przeszli także inni programiści.

Możesz pokusić się o włączenie .metadanych do kontroli wersji, aby programiści Eclipse mogli sprawdzić cały obszar roboczy i wstępnie go skonfigurować we wszystkich odpowiednich projektach, ale zawiera on wiele informacji specyficznych dla użytkownika, które za każdym razem, gdy ktoś nad nim pracuje, będzie zmienić, więc radziłbym NIE ZAWIERAĆ .metadanych. Łatwo jest zbudować lokalny obszar roboczy, po prostu importując wszystkie istniejące projekty Eclipse.


Z mojego doświadczenia wynika, że ​​zwykle psują się one na różne sposoby, gdy aktualizujesz Eclipse do nowszej wersji lub przełączasz się między smakami.
Thorbjørn Ravn Andersen

1

Spędziłem zbyt wiele godzin konfigurując ustawienia obszaru roboczego zaćmienia dla nowych kolegów (i mnie). Ostatecznie skończyłem z kopiowaniem własnych .metadanych na nową maszynę programistyczną.

Jeśli pracujesz w zespole, uważam, że poniższe osoby są bardzo dobrymi kandydatami do kontroli wersji:

  • Zainstalowane środowiska JRE i ich nazwy
  • Środowiska wykonawcze serwera
  • Szablony edytora Java
  • Skróty klawiaturowe kontroli wersji
  • Ustawienia wtyczek, które nie zapewniają ustawień specyficznych dla projektu
  • Ustawienia Maven
  • Wstępnie skonfigurowane perspektywy
  • ...
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.