2012-05-02 11 views
6

Jestem nowy w Git i mam duże trudności z ustaleniem tego.Jak najlepiej radzić sobie z plikami .classpath w Git, gdy programiści używają różnych wersji JBoss w swoich ścieżkach budowania projektu?

Używamy JBoss Application Server 5.1 w środowisku Eclipse. Niektóre osoby pobrały wtyczkę JBoss Tools Eclipse, aby mogły dodać serwer wykonawczy JBoss 5.1 jako "JBoss AS 5.1" do swojego obszaru roboczego Eclipse. Wynika to w linii ścieżki klasy, który wygląda tak:

<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.jboss.ide.eclipse.as.core.server.runtime.runtimeTarget/JBoss 5.1 Runtime"/> 

Inni ludzie nie widzą wartości pobierania i instalowania dodatkowych narzędzi JBoss, więc po prostu używać Eclipse wbudowanego w JBoss Server Adapter, który idzie tylko w górę do JBoss v.50. Mają linię ścieżce klasy, który wygląda tak:

<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.generic.runtimeTarget/JBoss v5.0"/> 

nie chcę, aby dodać .classpath do mojego pliku .gitignore ponieważ:

  1. Pliki są już przekazywane do mojego pochodzenia i usuwanie jest to bardzo bolesny proces, którego próbowałem i którego nie udało mi się zrozumieć w przeszłości.
  2. Chcę, aby ludzie, którzy zakładają nowe obszary robocze, mogli importować projekty z Git i zacząć od razu.

Do tej pory właśnie próbowaliśmy każdej modyfikacji naszych plików .classpath w naszym katalogu roboczym, ale nigdy się nie zobowiązaliśmy. Jest to denerwujące nie tylko dlatego, że pojawiają się one w naszym statusie git, ale czasami nie pozwalają nam na scalanie lub przełączanie oddziałów w Egit - narzekając na niezatwierdzone zmiany.

Czytałem w Internecie o użyciu zmiennych Classpath zamiast, ale nie wydaje mi się znaleźć poprawną ścieżkę do bibliotek JBoss w ogóle. Wyżej wymienione linie ścieżki klasy wydają się gdzieś znajdować się w katalogu Eclipse/plugins? Ale nie mogę tego znaleźć. Próbowałem także wskazać niektóre zmienne do mojego katalogu C: \ jboss-5.1.0.GA \, ale to też nie robi nic.

Czy istnieje sposób, aby pozostawić plik .classpath wewnątrz repozytorium, ponieważ jest teraz w aktualnym stanie, aby nowi użytkownicy klonujący repozytorium nadal je otrzymywali, ale po prostu zignorowali wszystkie przyszłe zmiany wprowadzone przez programistów pliki?

+0

Odbierz wam ostatnie stwierdzenie jest czymś, co już wspomniałem. gitignore. – yorkw

+0

Nie sądzę, że usuwanie plików, które są już wypychane, jest "bardzo bolesne". Możesz tymczasowo przenieść lokalny plik, a następnie wykonać commit -A & push. – eaykin

Odpowiedz

1

Inną odpowiedzią może być użycie content filter driver, czyli skryptu, który zadeklarowałeś w pliku .gitattribute.

filter driver

Na kasie swojego repo, skrypt rozmazywanie będzie odpowiedzialny za analizę lokalnego środowiska, wykrywanie JBoss w miejscu i dostosowanie classpathentry odpowiednio.
W ten sposób możesz zachować najbardziej użyteczną treść tego pliku, który już posiada wersję, dostosowując się do kilku wyjątkowych przypadków, w których classpathentry nie jest prawidłowy.

+2

Połączyłeś się z własną odpowiedzią, która ... łączy się z twoją własną odpowiedzią. –

+1

@GlennMaynard correct: te dwie starsze odpowiedzi opisują nieco więcej niż "smużenie" w filtrze treści. – VonC

6

Łatwym, rozwiązanie raz-per-programista z Pagebakers i git jest

git update-index --assume-unchanged <file> 

Aby cofnąć go, wystarczy użyć

git update-index --no-assume-unchanged <file> 
+0

Ta odpowiedź jest zalecana przez GitHub's [Ignoring Files help page] (https://help.github.com/articles/ignoring-files) dla "plików w repozytorium, które są wersjonowane (_i.e._ oni mogą") t git-ignored), są często zmieniane, ale rzadko są zatwierdzane. Zazwyczaj są to różne lokalne pliki konfiguracyjne, które są edytowane, ale nigdy nie powinny być zatwierdzane wcześniej. " – Daryn

Powiązane problemy