2010: Per Gitolite 2 (potrebbero essere cambiate per gitolite 3)
No (che significa un ramo dedicato con il giusto contenuto deve essere creato).
Come il author of gitolite himself put it:
Io sono l'autore di un progetto chiamato gitolite che fa un ottimo lavoro di controllo di accesso a livello di filiale per molteplici repository Git su un server centrale. Il mio "mercato" di destinazione è precisamente gli utenti aziendali di git.
Finora, non ho visto una situazione in cui l'accesso in lettura deve essere limitato a ortions di un repo (git non può farlo comunque).
[ben sparse checkout potrebbe aiutare, ma non è facile in ogni caso)
accesso in scrittura non hanno spesso bisogno di essere limitato, e gitolite può consentono di limitare:
- sia da parte nome del ramo (ad esempio, solo il lead QA può inviare una serie di commit al ramo "QA-done")
- o tramite nome file (ad esempio, solo il lead del team può apportare modifiche al Makefile e ai file in
src/very-important-and-critical-module
).
Vedere la sezione "security, access control, and auditing", e qui è un esempio di scrittura accesso:
Il conf/example.conf
file dispone di ogni sintassi:
repo foo
RW+ = lead_dev # rule 1
RW = dev1 dev2 dev3 dev4 # rule 2
RW NAME/ = lead_dev # rule 3
RW NAME/doc/ = dev1 dev2 # rule 4
RW NAME/src/ = dev1 dev2 dev3 dev4 # rule 5
ogni tou file ched per i commit che vengono spinti viene controllato contro quelle regole.
- lead_dev può spingere modifiche a qualsiasi file,
- dev1/2 può spingere le modifiche ai file in "
doc/
" e "src/
" (ma non al livello superiore README
),
- e dev3/4 può solo spingere le modifiche ai file in "
src/
".
Detto questo, la domanda difficile rimane, come il PO lo mette:
Come si crea nuova strega ramo solo alcuni file selezionati, ed eliminare il commit precedenti, quindi il grafico non ha potuto accedervi e vedere solo quelli selezionati dopo il clone?
Principio generale:
creare ramo 'graph_designer' in un punto della storia in cui tali file non erano presenti.
Da lì, due scelte:
- o riorganizzare il commit correnti (
git rebase --interactive
) in modo da avere prima quella con solo dir2
file (e quindi commit impatto qualsiasi altra directory)
- o, se la prima scelta rappresenta troppo lavoro (o non è possibile perché quei commit sono già stati inseriti e inseriti in altri repository), semplicemente copia e aggiungi i file rilevanti in quel nuovo ramo.
Ciò significa che non esiste una cronologia passata per quei file, ma potrebbe non aver bisogno di quella cronologia fin dall'inizio.
Questo 'graph_designer
' sarà l'unico ramo autorizzato a essere clonato e non conterrà alcuna cronologia con file non autorizzati.
Grazie per questa risposta dettagliata. Quindi, come posso creare un nuovo ramo stregando solo alcuni file selezionati ed eliminare i commit precedenti, in modo che il grafico non possa accedervi e vedere solo quelli selezionati dopo il clone? – takeshin
@takeshin: crea un ramo "graph_designer'" in un punto della storia in cui quei file non erano presenti, quindi, ad esempio, puoi copiare direttamente i file corretti e impegnarli (ovvero: nessuna cronologia passata per quei file , ma potrebbero non aver bisogno di quella storia fin dall'inizio). Questo 'graph_designer'' sarà l'unico ramo autorizzato a essere clonato e non conterrà alcuna cronologia con file non autorizzati. – VonC
Nota che questo non è più valido per gitolite v3 – jan