2011-10-05 16 views
9

Sto eseguendo il mio repository git privato su un server privato in una struttura di colo. Lo uso per qualsiasi progetto privato che non riesco ad aprire. Io uso github per tutto il mio lavoro open source.Come mantenere sincronizzati due repository git?

Sviluppo su una macchina Ubuntu desktop e sul mio MacBookPro. Mentre apporto le modifiche ai miei sistemi di sviluppo, sposto le modifiche all'origine nel colo e trascino all'altro sistema. Sono abbastanza bravo a tenere tutti e tre i sistemi aggiornati per la maggior parte, principalmente per scopi di backup e di disaster recovery.

Ora che BitBucket offre hosting git privato gratuito, sto pensando di aggiungere un clone dei miei progetti lì. Inoltre, potrei usare le funzionalità extra fornite da BitBucket che il mio server git privato barebone non fornisce. Tuttavia, mi piacerebbe continuare a mantenere una copia dei repository privati ​​sul mio server colo anche per ridondanza di backup.

Così ho alcune domande:

  1. senza cambiare il mio processo di sviluppo standard (modificare, aggiungere, commit, push), come posso sincronizzare automaticamente impegna spinto al mio server a un progetto bitbucket? Ogni volta che spingo al mio server Git, mi piacerebbe che quei commit venissero automaticamente inviati al mio progetto bitbucket. Non voglio cambiare il mio flusso di lavoro e vorrei che le piccole modifiche necessarie ai miei clienti di sviluppo.

  2. Se voglio usare bitbucket come mio repository git primario, come faccio a migrare i miei progetti dal mio server git privato a bitbucket?

  3. Dopo la migrazione a bitbucket, mi piacerebbe un altro backup sul mio server. Come posso avere automaticamente commit su bitbucket essere spinto sul mio server git? Questo è fondamentalmente il contrario della domanda 1.

risposta

7

Per il n. 1, la soluzione più semplice consiste nell'utilizzare un hook sul repository remoto che invia automaticamente a BitBucket.

Per # 2: è sufficiente aggiungere bitbucket come telecomando e premere su di esso anziché sull'origine. Se si dispone di rami di rilevamento (controllare .git/config), modificare remote = origin con qualsiasi nome utilizzato per bitbucket. Un'altra soluzione sarebbe rimuovere/rinominare il tuo attuale origin remoto e aggiungere bitbucket come origine.

Per # 3: un cronjob che esegue git fetch è probabilmente il modo più semplice per farlo.

+0

Grazie, darò una prova ai tuoi suggerimenti! – Tauren

+0

@Tauren - eventuali commenti su questo problema? – Tohid

+0

# 1: http://stackoverflow.com/questions/5769568/how-to-set-up-a-git-hook-so-that-after-pushing-to-ssh-peterfoo-com-bar-com –

Problemi correlati