mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 16:57:49 +03:00
mononoke: add ManifoldBlobState
Summary: Blobrepo state with file-based bookmarks and heads and manifold blobstore. It will be used for eden server testing. Reviewed By: sid0 Differential Revision: D6063728 fbshipit-source-id: f0542265af015d5c20db225ed6bf85cae954a3ab
This commit is contained in:
parent
13823f0f7e
commit
d408fab739
@ -12,6 +12,7 @@ extern crate error_chain;
|
||||
extern crate futures;
|
||||
|
||||
extern crate bincode;
|
||||
extern crate bytes;
|
||||
extern crate serde;
|
||||
#[macro_use]
|
||||
extern crate serde_derive;
|
||||
@ -27,12 +28,14 @@ extern crate filebookmarks;
|
||||
extern crate fileheads;
|
||||
extern crate futures_ext;
|
||||
extern crate heads;
|
||||
extern crate manifoldblob;
|
||||
extern crate memblob;
|
||||
extern crate membookmarks;
|
||||
extern crate memheads;
|
||||
extern crate mercurial;
|
||||
extern crate mercurial_types;
|
||||
extern crate rocksblob;
|
||||
extern crate tokio_core;
|
||||
|
||||
mod repo;
|
||||
mod changeset;
|
||||
@ -47,7 +50,7 @@ pub use errors::*;
|
||||
pub use changeset::BlobChangeset;
|
||||
pub use manifest::BlobManifest;
|
||||
pub use repo::BlobRepo;
|
||||
pub use state::{BlobState, FilesBlobState, MemBlobState, RocksBlobState};
|
||||
pub use state::{BlobState, FilesBlobState, ManifoldBlobState, MemBlobState, RocksBlobState};
|
||||
//
|
||||
// TODO: (jsgf) T21597565 This is exposed here for blobimport -- don't use it for anything else.
|
||||
|
||||
|
@ -9,15 +9,18 @@ use std::sync::Arc;
|
||||
|
||||
use blobstore::Blobstore;
|
||||
use bookmarks::Bookmarks;
|
||||
use bytes::Bytes;
|
||||
use fileblob::Fileblob;
|
||||
use filebookmarks::FileBookmarks;
|
||||
use fileheads::FileHeads;
|
||||
use heads::Heads;
|
||||
use manifoldblob::ManifoldBlob;
|
||||
use memblob::Memblob;
|
||||
use membookmarks::MemBookmarks;
|
||||
use memheads::MemHeads;
|
||||
use mercurial_types::NodeHash;
|
||||
use rocksblob::Rocksblob;
|
||||
use tokio_core::reactor::Remote;
|
||||
|
||||
use errors::*;
|
||||
|
||||
@ -144,3 +147,29 @@ impl MemBlobState {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl_blob_state! {
|
||||
ManifoldBlobState {
|
||||
heads: FileHeads<NodeHash>,
|
||||
bookmarks: Arc<FileBookmarks<NodeHash>>,
|
||||
blobstore: ManifoldBlob<String, Bytes>,
|
||||
}
|
||||
}
|
||||
|
||||
impl ManifoldBlobState {
|
||||
pub fn new(path: &Path, remote: &Remote) -> Result<Self> {
|
||||
let heads = FileHeads::open(path.join("heads"))
|
||||
.chain_err(|| ErrorKind::StateOpen(StateOpenError::Heads))?;
|
||||
let bookmarks = Arc::new(
|
||||
FileBookmarks::open(path.join("books"))
|
||||
.chain_err(|| ErrorKind::StateOpen(StateOpenError::Bookmarks))?,
|
||||
);
|
||||
// TODO(stash): is new_may_panic is the best option?
|
||||
let blobstore = ManifoldBlob::new_may_panic("mononoke", remote);
|
||||
Ok(ManifoldBlobState {
|
||||
heads,
|
||||
bookmarks,
|
||||
blobstore,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user