2012-01-24 11 views
5

Sto usando git svn per unire le modifiche dal mio repository git locale a un server SVN. Tuttavia, quando rilascio il numero git svn dcommit, in realtà verrà eseguito il commit di tutti i file .gitignore presenti nella struttura dei sorgenti. Ciò avviene anche dopo aver verificato localmente il repository SVN (usando SVN), impostare la proprietà svn: ignore (in modo ricorsivo, elencando .gitignore come uno dei file da ignorare), e quindi confermando tale modifica direttamente a SVN.È possibile mantenere i file .gitignore fuori da SVN?

È questo comportamento previsto? Un insetto? C'è un lavoro in giro che qualcuno sa di mantenere .gitignore di SVN?

So solo che un utente non-git del mio team vedrà questi file e inizierà a eliminarli, quindi la prossima volta che andrò a rebase/dcommit un sacco di file indesiderati finiranno in SVN.

risposta

8

È possibile utilizzare il file "escludi" specifico del repo di Git, anziché utilizzare i file .gitignore. Il file "exclude" si trova a $GIT_DIR/info/exclude (dove $GIT_DIR è la directory del repository Git, in genere .git). Il formato di questo file è esattamente lo stesso di quello dei file .gitignore. La differenza è che questo è un file specifico del repository, che esisterà solo nel tuo repository. Non verrà propagato a nessun altro repository (ad esempio tramite git clone o git svn dcommit).

Non c'è alcun modo di omettere i file .gitignore dal repository SVN, ma tenerli in Git. Qualsiasi tentativo di farlo risulterebbe nei tuoi commit locali che non corrispondono ai commit che git-svn recupera dal server SVN. In altre parole, la cronologia del repository locale non sarebbe conciliabile con la cronologia di SVN; sarebbero permanentemente fuori sincrono.

+0

Buono a sapersi sui repo-ignora e anche che non sono l'unico che non riesce a mantenere quei fastidiosi file .gitignore da SVN! – ThaDon

+0

Sembra che il file sia ora chiamato '$ GIT_DIR/info/exclude' senza plurale-s. –

+0

@JannikJochem Penso che sia stato solo un errore di battitura da parte mia. Per quanto ne so, è sempre stato chiamato "escludere", non "esclude". Grazie per averlo indicato! :) –

Problemi correlati