2011-10-07 11 views
39

Mi sto solo spostando da svn a git, e sono desideroso di gettare delle buone basi.Devo immagazzinare git repository in Home o Eclipse Workspace?

Per impostazione predefinita, Eclipse desidera memorizzare il mio repository clone locale in ~/git. Sono più a mio agio nel mantenere tutti i dati per un'attività nello stesso spazio di lavoro, quindi sono propenso a tenerlo nel mio spazio di lavoro.

Ci sono dei pro/contro significativi che dovrei prendere in considerazione?

Non ho intenzione di fare molte ramificazioni - sto davvero seguendo il percorso di dvcs principalmente per superare alcuni problemi di comunicazione Internet non affidabili.

+0

dov'è la directory ~? – rasen58

+7

la directory ~ è la scorciatoia usata per la directory home nei sistemi operativi basati su Unix (vedi http://en.wikipedia.org/wiki/Home_directory) – ianmayo

risposta

25

Sto passando a Git in Eclipse e sto leggendo di questo problema. Sembra che current wisdom (anche se non tutti sono d'accordo) è:

  • abituarsi a non avere i vostri progetti sotto la directory di lavoro.

  • Dispongono di un repository git per ogni gruppo di progetti eclissi correlati (e forse più file, ovviamente). Il concetto di "progetti correlati" è di tuo gradimento [*]

  • Per ciascun repository, una directory di primo livello per ciascun progetto Java. Ciò implica che avrai una directory .git/ e, allo stesso livello, le directory del progetto.

Esempio: supponiamo che, "prima di GIT", tu avessi un lavoro di Eclipse con diversi progetti:

/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) 

Poi si creerà due directory vuote, una per ogni repository, dite:

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

e poi, con il nuovo layout GIT, avrai:

/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) fa tutto questo per voi quando si fa clic su Team-> Condividi su un progetto esistente e specificare (nell'esempio) ~/repositories/XXX/.git/ come repository, (~/repositories/XXX/ come "Directory di lavoro", lasciare "Path nel repository " vuoto).

[*] Tenere presente che qui ogni gruppo di progetti è, dal punto di vista Git, solo un insieme di directory all'interno di un repository. Alcune implicazioni rilevanti: nell'esempio sopra, non avrai mai nello spazio di lavoro di Eclipse due diversi rami/versioni di progetti projYYY1 - projYYY2 contemporaneamente; e, ad esempio, taggando un commit di progetto, si sta effettivamente taggando il commit completo del repository (gruppo di progetti).

+2

Ti capita di avere un link o due per persone che non sono d'accordo? Perché trovo la logica dell'approccio "comune" alla saggezza "non pienamente convincente.Tutte le ragioni date si applicano al caso in cui si rende l'area di lavoro il repository, piuttosto che a un progetto il repository. , ma non sono convinto che abbiano ragione :) – studgeek

+0

Non sono sicuro di aver capito l'alternativa "rendere l'area di lavoro il repository, piuttosto che un progetto il repository" Nel mio esempio, ciascun repository non corrisponde né a uno spazio di lavoro né a un progetto, ma per un insieme di progetti – leonbloy

+2

È possibile creare il repository a livello di progetto, quindi non è necessario spostare il progetto e inoltre non si riscontrano i problemi elencati nell'articolo che si collega Questo presuppone che non sia necessario più di un progetto in un repository. – studgeek

2

Il .git dovrebbe essere in cui il vostro albero di lavoro è (cioè i file che rappresentano l'attuale capo del ramo corrente si sta lavorando)

Ricorda che con Git, rami non sono le directory (al contrario di SVN) , quindi il tuo albero di lavoro rappresenterà direttamente un contenuto di ramo, non diverse directory (per i tuoi vari rami), seguite da un contenuto per ramo.

In genere mi piace tenere separate le sorgenti del progetto dal mio spazio di lavoro Eclipse, ma è una questione di preferenza.

+0

Mantenere le sorgenti separate dallo spazio di lavoro è, sì, una questione di preferenza , anche se sembra da quello che Zoltán Ujhelyi ha scritto sopra, questo approccio potrebbe avere alcuni vantaggi specifici per raggruppare i progetti correlati insieme in una singola cartella in modo che possano essere versionati all'interno di un singolo repository git. – Carl

+2

@Crowie eclipse workspace è principalmente per i metadati Eclipse. Quando si cambia Eclipse o si desidera utilizzare diverse versioni di Eclipse sullo stesso computer, si desidera importare il progetto indipendentemente da Eclipse che esegue l'importazione: è più chiaro e più semplice se il progetto ha una propria vita al di fuori di qualsiasi Eclipse. – VonC

2

Penso che sia una buona idea memorizzare l'albero della versione git al di fuori dell'area di lavoro. In questo modo è possibile separare progetti da repository diversi, ma gestirli nello stesso spazio di lavoro.

Inoltre, se si inserisce il codice all'esterno dell'area di lavoro, è possibile organizzare i propri progetti gerarchicamente al di fuori dell'area di lavoro (nella copia di lavoro), ma vedere ancora la rappresentazione piatta in Eclipse.

+0

Sì, questo sembra molto ragionevole, dal momento che Eclipse è a suo agio con i suoi progetti al di fuori della sua cartella di lavoro. Quindi è possibile raggruppare i progetti correlati in un'unica cartella, come suggerito nella risposta di leonbloy, solo che la cartella sarebbe * al di fuori * della gerarchia dell'area di lavoro e che i repository git si troverebbero fuori da ciascuna di tali cartelle. Sebbene, essendo nuovo sia per git che per EGit, non sono sicuro che EGit sarebbe in grado di gestire la sorgente al di fuori dell'area di lavoro - forse il tuo approccio richiederebbe l'uso della normale git da riga di comando o di una GUI che è stata costruita sopra quello, e non EGit? – Carl

+0

Suppongo che un'alternativa potrebbe essere quella di consentire solo ai progetti "correlati" di condividere un singolo spazio di lavoro, e quindi di rimuovere il repository git dalla cartella dello spazio di lavoro di primo livello. Ma ciò potrebbe essere scomodamente rigido, in quanto si potrebbe desiderare di avere progetti di un tipo simile nello stesso spazio di lavoro per un facile * riferimento *, anche se non si dovessero evolvere insieme in un unico repository di controllo della versione. Quindi il tuo suggerimento sembra essere il più generalmente utile. – Carl

+0

In realtà, ho trovato la documentazione che dice che è possibile utilizzare per questo EGit qui: http://wiki.eclipse.org/EGit/User_Guide#Creating_a_Git_Repository_for_multiple_Projects – Carl

Problemi correlati