Ospitare un allegato Git su un server senza git-annex installato


9

Le macchine A e B ospitano un repository allegato git comune . Entrambi hanno installato il programma git-annex e modifico / eseguo / etc manualmente roba su entrambe le macchine. A e B non sono connessi a Internet contemporaneamente, quindi non possono essere sincronizzati direttamente insieme.

Il server C è sempre acceso e connesso (e gratuito e abbastanza sicuro). Ha git installato, ma non ho i diritti di amministratore, quindi non posso installare git-annex.

La mia domanda: posso usare il Server C come hub centrale per eseguire il push e il pull degli aggiornamenti di git-annex sia da A che da B, senza dover installare git-annex e tutte le dipendenze di haskell ghc su C?

Ho provato a usare C con i telecomandi speciali "directory" o "rsync" , ma questo sembra contenere solo file, non il resto di ciò che è necessario per aggiornare A e B dopo push / pull.

Qualsiasi suggerimento sarebbe molto apprezzato!

Risposte:


6

Con l'accesso git e rsync allo stesso server è possibile utilizzare quel server per archiviare sia la cronologia (tramite accesso git) sia l'archivio valori-chiave allegato (tramite accesso rsync). Questi potrebbero anche essere disaccoppiati e archiviati su un numero qualsiasi di server diversi.

Sembra che tu abbia già letto tutti gli strumenti di cui hai bisogno. Fondamentalmente, finirai con 2 telecomandi separati, entrambi rivolti verso posizioni diverse sul server-c. Il primo telecomando (server-c) è un normale telecomando git per sincronizzare la cronologia e tutto ciò che viene controllato direttamente nel repository git. Il secondo telecomando è un telecomando speciale allegato.

[remote "server-c"]
    url = git@example.com:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/server-c/*
[remote "server-c-rsync"]
    annex-rsyncurl = example.com:/home/user/annex-rsync
    annex-uuid = ...

Dovresti essere in grado di configurarlo con qualcosa sulla falsariga di:

git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c-rsync type=rsync rsyncurl=example.com:/home/user/annex-rsync encryption=none

Questo dovrebbe darti le funzionalità di base che stai cercando. L'unico aspetto negativo è che hai 2 nomi remoti diversi che puntano davvero allo stesso server. In particolare devi solo ricordare di usare il telecomando speciale (server-c-rsync) quando usi gli argomenti --to = o --from = di get, copy e move.

Potrebbe essere possibile puntare un singolo telecomando verso entrambe le posizioni, tuttavia non sono sicuro che questo sia effettivamente supportato. I seguenti comandi sembrano creare un sensibile .git / config.

git init
git annex init "test"
git remote add server-c git@example.com:/path/to/repo.git
git annex initremote server-c type=rsync rsyncurl=example.com:/rsync/user encryption=none

Per me questo si traduce in un singolo telecomando in .git / config sia con un url = (per le normali operazioni git) che con un allegato-rsyncurl =. Tuttavia, non l'ho ancora testato per garantire che git annex ignori l'URL e utilizzi solo la voce annex-rsyncurl quando si opera con file allegati.


Grande! Farò dei test, ma questo dovrebbe avvicinarmi a una soluzione praticabile. Grazie mille per il tuo tempo e la tua risposta!
Vincent

Sono contento di aver potuto aiutare. Ho appena iniziato a utilizzare git annex da solo durante le vacanze e finora ne sono estremamente felice!
Justin Geibel,

penso che l'ultimo esempio dovrebbe funzionare. in effetti, penso che sincronizzerebbe i file in atto anche se fosse solo un repository git nudo ...
anarcat
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.