2015-01-30 19 views
5

Vorrei costruire un flusso specifico sul nostro git aziendale.Creare un ramo privato sul repository remoto in git

  1. lo sviluppatore crea un ramo sul suo computer locale e vi carica alcuni file.
  2. Dev spingere questo ramo per repo remoto
  3. altri sviluppatori non possono accedere a questo ramo
  4. dopo pochi giri al largo spingendo dev decidere di pubblicare i suoi cambiamenti.
  5. unire la sua filiale privata nel ramo pubblico
  6. spingere quella filiale pubblica.

In altre parole - è possibile configurare il ramo remoto privato nel repository pubblico?

+0

Perché spingerlo se nessuno poteva usarlo ?! – Biffen

+0

Non una risposta, ma: perché vuoi questo? C'è qualche requisito ufficiale per la segretezza? È solo che gli sviluppatori hanno paura di condividere il loro lavoro? In generale, è utile essere in grado di vedere i lavori in corso l'uno dell'altro (aiutandosi a vicenda, raccogliendo qualcuno che si ammala, ecc.). – sleske

+2

Ragazzi perché il mio pc potrebbe bloccarsi, perché il codice non viene compilato ma ho bisogno di salvarlo in qualche modo, perché ho bisogno di una parte "privata" nel repository per le funzionalità sperimentali. Ho incontrato questo in qualche progetto. Ma usano SVN e creano due "stream" privati ​​per lo sviluppo quotidiano e il pubblico per fornire le funzionalità rispettate –

risposta

7

Il flusso utilizzato nel mio team prevede di avere repository separati completi per ogni membro del team oltre all'origine sul server git principale.

  1. Dev crea ramo locale sulla macchina locale e si impegna via
  2. Alla fine del giorno (o ogni volta che è adatto) dev spinge a sua repo privata git push jdoe-private my-cool-branch
  3. Dev decide che è felice per il lavoro essere pubblicato e, eventualmente, si fuse così può riordinare su e rebase impunemente
  4. Dev spinge il suo ramo di origine git push origin my-cool-branch

La ragione di questa impostazione per noi è t o consentire agli sviluppatori di rebase liberamente ed evitare i problemi che possono sorgere dalla ridefinizione a monte e anche di avere backup completi. I repository separati sono solo privati ​​per convenzione, ma sarebbe facile aggiungere il controllo degli accessi se necessario. C'è un sacco di duplicazione dei dati, ma a meno che il repository è davvero enorme, questo probabilmente non è un problema.

+0

Ok. Sembra una soluzione. Dev hanno loro repo remoto privato e basta unire tra questo e il pubblico. –

0

La soluzione comune che conosco è quella di concordare "spazi dei nomi delle filiali", anteponendo alcuni nomi di stringhe a rami. Ad esempio, i rami che iniziano con "privato /" sono per esperimenti privati. Farebbe quindi ottenere rami come

  • privato/JohnDoe/refactoring-taxcalculation
  • privato/JohnDoe/newGUILayout
  • privato/JaneJones/Java8
  • /TKirk/build-navicella spaziale privata

Ciò mantiene separati i rami e rende chiaro quale sia il loro scopo. Tuttavia, in questo modo i rami sono ancora pubblici, perché chiunque può vederli e tirarli.

Se si desidera limitare l'accesso a tali rami in base all'utente, è necessario disporre di una sorta di controllo degli accessi basato su succursali. Non c'è nulla di simile nel core git, ma alcuni server di hosting git permettono questo (ad esempio, Atlassian Stash). Non conosco alcun server che permetta questo tipo di filiali private, ma forse ce n'è uno che lo consente o ti permette di creare una soluzione.

Si noti, tuttavia, che ciò che si richiede è piuttosto inusuale. La soluzione comune è quella che ho delineato sopra.

+0

gitolite ha la concezione di limitare l'accesso push per alcuni utenti ad alcune filiali. Come lo sviluppatore junior non ha potuto spingere a padroneggiare il ramo. Ma comunque tutti i rami sono ancora leggibili –

+0

Sicuramente è sufficiente che il nome del ramo chiarisca che è privato? Se c'è qualcuno nella tua squadra che estrarrà una tale filiale privata e lavorerà con essa, aspettandosi che rimanga stabile, allora direi che il problema è altrove rispetto al tuo flusso di lavoro git. –

Problemi correlati