2012-05-02 5 views
6

Sono nuovo di Git e sto avendo molte difficoltà a capirlo.Come gestire al meglio i file .classpath in Git quando gli sviluppatori utilizzano diverse versioni di JBoss nei loro percorsi di costruzione del progetto?

Stiamo utilizzando JBoss Application Server 5.1 in Eclipse. Alcune persone hanno scaricato il plug-in Eclipse JBoss Tools in modo che possano aggiungere JBoss 5.1 Runtime Server come "JBoss AS 5.1" al proprio spazio di lavoro Eclipse. Ciò si traduce in una linea di percorso di classe che assomiglia a questo:

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

Altre persone non vedono il valore di scaricare e installare la strumenti plugin JBoss, in modo che basta usare di Eclipse adattatore incorporato del server JBoss, che arriva solo fino a JBoss v.50. Hanno una linea percorso di classe che assomiglia a questo:

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

Non voglio aggiungere .classpath al mio file .gitignore perché:

  1. I file sono già spinti alla mia origine e la rimozione è un processo super doloroso che ho provato e non ho capito in passato.
  2. Voglio che le persone che stanno creando nuovi spazi di lavoro siano in grado di importare i progetti da Git e andare subito avanti.

Finora abbiamo appena provato ognuno di modificare i nostri file .classpath nella nostra directory di lavoro ma mai in commit. Questo è fastidioso non solo perché continuano a comparire nel nostro stato di git, ma a volte non ci permettono di unire o cambiare ramo in Egit - lamentando cambiamenti non confermati.

Ho letto su Internet sull'utilizzo di Classpath Variables, ma non riesco a trovare il percorso corretto per le librerie JBoss. Le linee del classpath che ho elencato sopra sembrano indicare da qualche parte all'interno della directory di Eclipse/plugins? Ma non riesco a trovarlo. Ho anche provato ad indirizzare alcune variabili nella mia directory C: \ jboss-5.1.0.GA \, ma non sembra che faccia nulla.

C'è un modo per lasciare il file .classpath all'interno del repository come è ora nel suo stato corrente, in modo che i nuovi utenti che clonano il repository continuino a riceverli, ma poi ignorano tutte le modifiche future apportate dagli sviluppatori a i file?

+0

risposta a voi ultima affermazione è qualcosa che si è già accennato:. gitignore. – yorkw

+0

Non penso che rimuovere i file che sono già stati spinti sia "super doloroso". Puoi provare a spostare temporaneamente il file locale e quindi eseguire il commit -A & push. – eaykin

risposta

1

Un'altra risposta può essere l'utilizzo di content filter driver, ovvero uno script dichiarato in un file .gitattribute.

filter driver

Al check-out del pronti contro termine, lo script macchia sarebbe il compito di analizzare l'ambiente locale, rilevando il JBoss in atto e adattare il classpathentry conseguenza.
In tal modo, è possibile mantenere il contenuto più utile di quel file già sottoposto a revisione, adattandosi ai pochi casi speciali in cui lo classpathentry non è quello corretto.

+2

Hai collegato alla tua risposta, che ... collega alla tua risposta. –

+1

@GlennMaynard corretto: quelle due risposte più vecchie descrivono un po 'di più quel passaggio "sfumino" in un filtro di contenuti. – VonC

6

Un facile, una volta-per-sviluppatore della soluzione da Pagebakers e git è

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

per annullarla, basta usare

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

Questa risposta è la raccomandazione di GitHub [Ignora la pagina di aiuto dei file] (https://help.github.com/articles/ignoring-files) per "i file in un repository, che sono versioni (_i.e._ possono" t essere git-ignorato), sono spesso cambiati, ma raramente commessi, di solito si tratta di vari file di configurazione locali che sono stati modificati, ma che non dovrebbero mai essere trasferiti a monte. " – Daryn