2011-10-09 18 views
7

come proteggere un repository GIT di un'applicazione completa (java) da uno sviluppatore che ottiene l'accesso a tutto il codice sorgente nel repository. So che GIT è un controllo di versione distribuito in cui uno sviluppatore normalmente "scarica/recupera" il repository completo (!).Git: controllo accessi? Come fare in pratica

Le mie domande:

  1. Come Sperate "moduli/parti autonome" in Git? Ad esempio havng un modulo "livello di pagamento" e "livello di database" e "livello di elaborazione" e così via tutto sottratto tramite API/Interfacce. Devo impostare un repository git separato per tutti quei moduli?

  2. C'è un modo per avere un grande repository in GIT ma per limitare in qualche modo l'accesso per path? (Un client dovrebbe ricevere solo i file a cui è stato concesso l'accesso)

  3. C'è un modo per avere un grande repository in GIT ma per limitare in qualche modo l'accesso per Branch/Tags? (Un client deve recive solo quei file che è stato concesso l'accesso a)

  4. in caso qualcuno lo sa anche questo: C'è un modo in Eclipse per chekout contenuti da più repository GIT in un unico progetto e anche (viceversa) codice di commit all'interno di un progetto eclipse in più repository GIT (in base ai nomi/percorsi dei pacchetti o nel menu di scelta rapida)?

La ringrazio molto Markus!

risposta

4
  1. Se si desidera il controllo differenziale, sarà necessario dividere il codice in più repository git. Non puoi controllare per rami o altro. Git scarica l'intero repo. Periodo.

  2. È possibile esaminare i moduli git per un meccanismo che semplifica il lavoro con una cosa composta da più repository git.

+1

Questo non è * interamente * vero - cose come la gitolite possono effettivamente fare permessi per-ref. Ma sicuramente non lo consiglierei come un modo per proteggere le informazioni riservate - Io secondo il suggerimento di dividere il repository. – Cascabel

+0

@Jefromi: Sì, ma anche gitolite può controllare solo _write access_ a livello di branch/tag/file/directory; l'accesso in lettura è sempre per repo (http://sitaramc.github.com/gitolite/index.html#gl_what). – sleske

2

1) e 4) dipende molto dall'ambiente di costruzione. In git si tenta di avere repository separati per moduli, ma se la configurazione dell'albero dei sorgenti diventa dolorosa, è possibile utilizzare i sottomodelli git (anche se non molte persone come loro) o lo strumento repo utilizzato dal progetto Android. Questo ti permette di avere un progetto "ombrello" composto da più sottoprogetti. Non sono sicuro se ne valga la pena solo per pochi componenti. Un solo repository git può avere ancora più senso.

Per questioni 2) e 3):

Per l'accesso, consiglio che ogni sub-team mantiene il proprio fork (repository) e qualcuno del cliente quello che spingono al repository di integrazione. Se non ti piace questo approccio, puoi utilizzare i git server hook per far rispettare le policy di scrittura degli script.

In questo caso, il hook potrebbe controllare chi sta spingendo, e il percorso o refspec (ramo) rispetto ad un file di configurazione che descrive la politica. Questo è documentato qui:

https://git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy

Problemi correlati