Quello che vogliamo è Mercurial per supportare in modo nativo utilizzando S3 come backend per l'archiviazione dei dati, e non esiste una tale codice . Puoi forse trovare un ponte S3 da eseguire in FUSE (o un ponte S3-> DAV che potresti montare come un filesystem), e poi dire a Hg di spingere e tirare i dati da quel filesystem virtuale, ma altrimenti avresti bisogno un'istanza di ec2 dedicata per servire effettivamente i dati (è possibile avviarli su richiesta, ma la latenza è piuttosto brutta, come probabilmente sapete).
C'è un file system basato su FUSE per S3 chiamato s3fs, ma sembra che sia principalmente un driver per un'offerta commerciale.
(A parte, a seconda dell'architettura di ec2, e supponendo che si abbiano sovrapposizioni su più istanze, si potrebbe teoricamente sfruttare la natura distribuita di Hg per utilizzare le istanze esistenti per passare le modifiche tra di loro, senza un repository "root" .Se si ha solo un'istanza, ovviamente, si tratta di una non-starter.)
fonte
2010-05-15 12:35:07
Nick è sulla strada giusta. Sospetto che si possa fare l'hosting di sola lettura su S3 utilizzando il metodo di fallback http: // statico fornito da Mercurial. Quindi spingerei su un repo non-ec2 e usare qualcosa come s3sync per mettere la directory .hg su s3, da cui i tuoi nodi ec2 potrebbero effettuare un checkout efficiente. –
Penso che la tua unica opzione realistica sia s3fs, ma devi preoccuparti delle scritture che si sovrappongono - S3 non fornisce il blocco. Ho esaminato alcune altre librerie di filesystem s3, ma sono quasi tutte implementate come iSCSI - emulano un dispositivo a blocchi in s3 che può essere montato come un disco su una macchina locale, ma non è possibile montarlo su più di una macchina alla volta. –