Domanda

Quello che mi piace di fossili è che usa plain old SQLite per memorizzare gruppi di modifiche, file, etc. posso utilizzare il suo strumento a riga di comando per interrogare il repository, ma se voglio qualcosa non supportato da essa, posso fallback a scrivere una query SQL.

Mercurial e Git sono più maturi, hanno più librerie, più slancio, ma usano il loro proprio formato repository. Mi chiedo se è possibile avere SQLite come il loro back-end repository. (So ??che ci sono strumenti per interrogare un repo mercuriali o git direttamente, ma sql sembra più facile.)

È stato utile?

Soluzione

Con git, il formato di repository è una parte abbastanza fondamentale il modo in cui tutto funziona. Dovreste fare un sacco di lavoro per cambiare la situazione.

non ho letto nessuno dei fonte di Mercurial, ma immagino la situazione non è molto diversa.

Come ho suggerito nel mio commento, io non sono davvero sicuro perché ci si vuole fare questo. Per git di essere ancora in grado di avere tutti i suoi vantaggi, che avrebbe dovuto memorizzare oggetti git nel database SQLite. Farebbe ancora bisogno di tutti gli strumenti git di basso livello per l'accesso e manipolare - non sta andando ad essere solo guardando macchie e alberi dai loro SHA1s e facendo tutto il resto del lavoro da soli. (E anche se per qualche motivo si volesse, si potrebbe fare altrettanto facilmente, cercando in git oggetti di directory.)

Il mio suggerimento sarebbe che, se si scopre che ci sono operazioni che si desidera eseguire in git che non sono supportati, di familiarizzare con alcuni dei comandi idraulici e capire come scrivere loro come script. Git fa davvero esporre più o meno il livello più basso di operazioni che si può desiderare.

P.S. Se si dovrebbe trovare una specifica operazione non supportata si vuole fare, e stanno avendo problemi a trovare l'impianto idraulico è necessario eseguire, o con lo script necessari per la sua attuazione, inviare una domanda qui! Non c'è ragione di rimanere bloccati solo perché non è possibile utilizzare SQL.

Altri suggerimenti

Come Jefromi scrive, Mercurial è anche utilizzando un formato personalizzato per achive alta compressione e veloce l'accesso a qualsiasi revisione. Questo è il revlog formato che è una struttura di dati di sola aggiunta che sfrutta la immutabilità di changeset in Mercurial.

Tuttavia, è naturalmente possibile sostituire questo formato di archiviazione con un altro, se volete. Google ha fatto questo quando hanno messo Mercurial su BigTable per il codice. google.com. Una divertente conseguenza della loro usando il loro proprio formato backend è che non si vede tutti i numeri di revisione in loro interfaccia web. Nel normale Mercurial, i numeri di revisione (il locale solo numeri interi si può usare al posto del hash completo di modifiche) è l'indice dei gruppi di modifiche nella revlog. Quando gruppi di modifiche non vengono memorizzate nel revlogs, non v'è alcun indice naturale e quindi Google voi non mostra numeri di revisione.

E 'possibile con backend libgit2: https://github.com/libgit2/libgit2-backends/blob /master/sqlite/sqlite.c

Non ho fatto alcuna misura, ma le prestazioni dovrebbero soffrire un po '. Tuttavia, è anche più conveniente (file unico per l'intera storia di pronti contro termine, classica query SQL language..etc ..)

Parlando per Git, non è possibile utilizzare backend diverso con i binari ufficiali. Tuttavia, il progetto libgit2 consente di utilizzare diversi backend per memorizzare il database. Tuttavia, dovrete costruire tutti i binari che si desidera utilizzare per commettere, la fusione, spingere, tirare, rebasing, ecc Inoltre, non sarà in grado di modificare il proprio repository con i binari ufficiali. Dovrete spingerlo a un repo standard di prima.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top