2011-10-07 11 views
39

Po prostu przechodzę z svn na git i jestem gotów złożyć dobre fundamenty.Czy powinienem przechowywać repozytorium git w Home lub Eclipse Workspace?

Domyślnie Eclipse chce przechowywać moje lokalne repozytorium klonów w ~/git. Bardziej wygodne jest przechowywanie wszystkich danych dla zadania w tym samym obszarze roboczym - więc jestem skłonny trzymać go w mojej przestrzeni roboczej.

Czy są jakieś istotne plusy/minusy, które powinienem wziąć pod uwagę?

Nie zamierzam robić wielu rozgałęzień - naprawdę idę w dół trasą dvcs głównie po to, aby przezwyciężyć pewne niewiarygodne problemy z połączeniami internetowymi.

+0

gdzie jest katalog ~? – rasen58

+7

katalog ~ jest skrótem używanym dla katalogu domowego w systemach operacyjnych opartych na systemach uniksowych (patrz http://en.wikipedia.org/wiki/Katalog domowy) – ianmayo

Odpowiedz

25

Ja też przełączam się na Git w Eclipse i czytam o tym problemie. Wydaje się, że current wisdom (choć nie wszyscy zgadzają) wynosi:

  • przyzwyczaić do nie mających swoje projekty poniżej katalogu roboczego.

  • Mieć repozytorium git dla każdej grupy powiązanych projektów zaćmienia (i być może więcej plików, oczywiście). Pojęcie "powiązanych projektów" zależy od Twojej wygody [*]

  • Dla każdego repozytorium, jeden katalog pierwszego poziomu dla każdego projektu Java. Oznacza to, że będziesz mieć katalog .git/ i na tym samym poziomie katalogi projektów.

Przykład: Załóżmy, że "przed GIT", trzeba było jedno miejsce pracy Eclipse z kilku projektów:

/wk/workspace/.metadata/ 
/wk/workspace/projXXX/ 
/wk/workspace/projXXXtest/ (related with the previous) 
/wk/workspace/projYYY1/  | 
/wk/workspace/projYYY2/  > three related projects 
/wk/workspace/projYYY3/  | 
/wk/workspace/projZ/  (a project you are not going to version in git) 

Potem utworzyć dwa pustych katalogów, po jednym dla każdego repozytorium, powiedzieć:

~/repositories/XXX/ 
~/repositories/YYY/ 

a potem z nowym układzie GIT, musisz:

/wk/workspace/.metadata/ 
/wk/workspace/projZ/ 

~/repositories/XXX/.git/ (XXX related repository - non-bare) 
~/repositories/XXX/projXXX/ 
~/repositories/XXX/projXXXtest/ 

~/repositories/YYY/.git/ (YYY related repository - non-bare) 
~/repositories/YYY/projYYY1/ 
~/repositories/YYY/projYYY2/ 
~/repositories/YYY/projYYY3/ 

Eclipse (Egit) robi to wszystko dla Ciebie po kliknięciu Team-> Podziel na istniejącym projekcie i określić (w przykładzie) ~/repositories/XXX/.git/ jako repozytorium (~/repositories/XXX/ jako „katalog roboczy”, pozostawić „Path w repozytorium " puste).

[*] Należy pamiętać, że tutaj każda grupa projektów jest, z punktu widzenia Git, tylko zbiorem katalogów wewnątrz repozytorium. Niektóre istotne konsekwencje: w powyższym przykładzie nigdy nie będziesz mieć w przestrzeni roboczej Eclipse dwóch różnych gałęzi/wersji projektów projYYY1 - projYYY2 jednocześnie; i powiedzmy, kiedy otagujesz zatwierdzenie projektu, oznacza to, że zatwierdzasz pełne zatwierdzenie repozytorium (grupy projektów).

+2

Czy masz link lub dwa do osób, które się nie zgadzają? Ponieważ uważam, że logika "wspólnej" mądrości "nie jest w pełni przekonująca, wszystkie podane powody odnoszą się do przypadku, w którym robisz repozytorium przestrzeni roboczej, a nie projekt repozytorium. Uwaga: Zgadzam się, wydaje się, że ścieżka zalecana przez Eclipse , ale nie jestem przekonany, że mają rację :). – studgeek

+0

Nie jestem pewien, czy rozumiem alternatywę "make the workspace repozytorium, a nie projekt repozytorium" W moim przykładzie, każde repozytorium nie odpowiada ani obszarowi roboczemu, ani projekt, ale do zestawu projektów – leonbloy

+2

Możesz utworzyć repozytorium na poziomie projektu, więc nie musisz w ogóle przenosić projektu, a także nie masz żadnych problemów wymienionych w artykule, który łączysz Zakłada się, że nie potrzebujesz więcej niż jednego projektu w repozytorium – studgeek

2

.git powinny być tam, gdzie drzewo robocza jest (czyli pliki reprezentujące obecny szef obecnego oddziału na którym pracujesz)

Pamiętaj, że z Git, gałęzie nie są katalogi (w przeciwieństwie do SVN) , więc twoje drzewo robocze będzie reprezentować bezpośrednio zawartość oddziału, a nie kilka katalogów (dla różnych oddziałów), a następnie zawartość na gałąź.

Zazwyczaj chciałbym, aby moje źródła projektu były oddzielone od mojego obszaru roboczego Eclipse, ale jest to kwestia preferencji.

+0

Trzymanie źródeł oddzielnie od obszaru roboczego jest, tak, kwestią preferencji , chociaż z tego, co napisał Zoltán Ujhelyi powyżej, wynika, że ​​takie podejście może mieć pewne szczególne zalety w przypadku grupowania powiązanych projektów w jednym folderze, tak aby można je było wersjonować w jednym repozytorium git. – Carl

+2

@ Cury eclipse workspace jest głównie dla metadanych Eclipse. Gdy zmienisz Eclipse lub chcesz użyć kilku wersji Eclipse na tym samym komputerze, chcesz zaimportować swój projekt niezależnie od Eclipse, który importuje: to jest bardziej przejrzyste i łatwiejsze, jeśli twój projekt ma własne życie poza jakimkolwiek Eclipse. – VonC

2

Wydaje mi się, że warto przechowywać drzewo wersji git poza obszarem roboczym. W ten sposób można oddzielić projekty od różnych repozytoriów, ale nadal obsługiwać je w tym samym obszarze roboczym. Ponadto, jeśli umieścisz kod poza obszarem roboczym, możesz uporządkować swoje projekty hierarchicznie poza obszarem roboczym (w kopii roboczej), ale nadal widzisz płaską reprezentację w Eclipse.

+0

Tak, wydaje się to bardzo rozsądne, ponieważ Eclipse jest wygodny w posiadaniu swoich projektów poza folderem obszaru roboczego. Więc możesz po prostu pogrupować powiązane projekty w jeden folder, jak zasugerowano w odpowiedzi leonbloy, tylko folder będzie * poza * hierarchią obszaru roboczego, a repozytorium git będzie wyłączone z każdego takiego folderu. Chociaż będąc nowym dla git i EGit, nie jestem pewien, czy EGit byłby w stanie poradzić sobie ze źródłem poza obszarem roboczym - być może twoje podejście wymagałoby użycia zwykłego gita z wiersza poleceń lub GUI, który jest zbudowany na wierzchu to, a nie EGIP? – Carl

+0

Przypuszczam, że alternatywą może być umożliwienie tylko "powiązanym" projektom współużytkowania pojedynczego obszaru roboczego, a następnie umieszczenie repozytorium git poza folderem obszaru roboczego najwyższego poziomu. Ale może to być niewygodne, ponieważ można chcieć mieć projekty podobnego rodzaju w tym samym obszarze roboczym dla łatwego * odniesienia *, nawet jeśli nie miałyby one zostać wyewoluowane razem w jednym repozytorium kontroli wersji. Twoja sugestia wydaje się być najbardziej użyteczna. – Carl

+0

Właściwie znalazłem w dokumentacji, która mówi można użyć Egit do tego tutaj: http://wiki.eclipse.org/EGit/User_Guide#Creating_a_Git_Repository_for_multiple_Projects – Carl

Powiązane problemy