Mantenere i repository git su diversi host sincronizzati

32

Sto pensando di avviare un piccolo progetto e voglio fare il suo versioning con git.

Bitbucket sembra una buona opzione per me con il loro piano gratuito. Voglio usarlo come strumento principale per lavorare con git dato che hanno strumenti carini come un'interfaccia web, un client Mac OS e così via. Ma, al fine di avere una protezione maggiore da eventuali danni accidentali che possono essere causati dall'utilizzo di un servizio di terze parti, voglio anche installare git sul mio NAS come seconda copia di backup del repository.

Ora la mia domanda è se sia possibile creare un repository su due host diversi e mantenerli sincronizzati? Ad esempio, supponiamo che una volta alla settimana aggiorni il repository sul NAS in modo che corrisponda a quello su Bitbucket. Quindi, nel caso in cui qualcosa dovesse accadere con Bitbucket, avrò ancora il repository completo con una cronologia completa dello sviluppo sul mio storage NAS locale.

E c'è un modo per importare un repository esistente con una cronologia completa in un altro servizio Git?

Penso che il mirroring sia ciò di cui ho bisogno. Questo articolo sembra descrivere esattamente ciò di cui ho bisogno. E questo one .

Credo che farà una copia completa con la cronologia completa e anche automaticamente il commit delle nuove versioni nei repository su entrambi gli host automaticamente.

Ho ragione?

    
posta BartoNaz 19.04.2013 - 11:39
fonte

3 risposte

18

Sì, è esattamente la bellezza di DVCS come git. È possibile utilizzare qualsiasi numero di repository diversi con lo stesso stato di quello su bitbucket o github.

Anche la tua copia locale (il repository sul tuo computer) è di solito un clone completo del repository remoto.

L'unica cosa che devi fare per tenere sincronizzati più repository è tirare fuori uno (di solito chiamato origine o upstream) e spingere verso le copie di backup.

    
risposta data 19.04.2013 - 12:20
fonte
11

Ecco una soluzione testata per il problema: Repository Git Remote Sync 2

automatici

Un semplice script per la sincronizzazione di 2 repository Git remoti

Ho cercato nel web un semplice script che si sincronizzerà. 2 repository remoti ma non sono riuscito a trovare uno script simile anche se molti sembrano cercarlo! Quindi ho creato 2 repository di test semplici e ho iniziato a testare e creare tale script.

Che tipo di script dovrebbe fare?

Bene, in generale, i passaggi per farlo sono semplici: 1. Clona il primo repository 1. Aggiungi il secondo come repository remoto aggiuntivo 1. scarica tutto ciò che c'è nel secondo repository 1. spingere il repository locale aggiornato sui 2 repository remoti.

Il problema rimasto è: quali sono gli switch corretti per tutti i comandi git precedenti?

Quindi eccolo ...

script gisp 2repos-sync.sh

# Clear the folder first - please use this carefully
rm -rf $REPO_NAME  
# clone the reposotory
git clone --bare $ORIGIN_URL

# add a remote repository
cd $REPO_NAME
git remote add --mirror=fetch repo1 $REPO1_URL

# update the local copy from the first repository
git fetch origin --tags

# update the local copy with the second repository
git fetch repo1 --tags

# sync back the 2 repositories
git push origin --all
git push origin --tags
git push repo1 --all
git push repo1 --tags

NOTA - questo script non risolve i casi di conflitti tra i contenuti del repository!

    
risposta data 21.11.2015 - 16:13
fonte
0

Uso un GitLab privato per archiviare tutti i miei repository, quindi ho solo un'origine da cui spingo e tiro mentre sto facendo lo sviluppo giorno per giorno.

Ma, per i progetti open source, GitHub è una comunità molto più vivace, quindi, se voglio accettare i contributi della comunità ai miei progetti, utilizzo il web hook GitLab per eseguire il ping su un server che eseguo che aggiorna i miei repository pubblici su GitHub.

Questo mi permette di trattare GitHub come un altro telecomando da cui posso prelevare quando qualcuno contribuisce - quindi unisco --no-ff localmente, e c'è un flusso su come tutti i miei repository primari e pubblici distribuiscono le modifiche.

    
risposta data 28.01.2016 - 04:43
fonte

Leggi altre domande sui tag