mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
edenapi/edenapi_service: Add new API for uploading Hg Changesets
Summary: API for uploading HgChangeset This is the last part for uploding commit cloud commits via edenapi. The structures are generic, could be reused for pull, etc Reviewed By: markbt Differential Revision: D29644799 fbshipit-source-id: 53347992cf399d99eaee4b5d2ad5f6ea30417022
This commit is contained in:
parent
804fc98c3f
commit
68672593c0
@ -12,9 +12,9 @@ use quickcheck::Arbitrary;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
|
||||
use dag_types::Location;
|
||||
use types::hgid::HgId;
|
||||
use types::{hgid::HgId, Parents, RepoPathBuf};
|
||||
|
||||
use crate::ServerError;
|
||||
use crate::{ServerError, UploadToken};
|
||||
|
||||
/// Given a graph location, return `count` hashes following first parent links.
|
||||
///
|
||||
@ -197,3 +197,38 @@ impl Arbitrary for CommitHashLookupResponse {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Default, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
pub struct Extra {
|
||||
pub key: Vec<u8>,
|
||||
pub value: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Default, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
pub struct HgChangesetContent {
|
||||
pub parents: Parents,
|
||||
pub manifestid: HgId,
|
||||
pub user: Vec<u8>,
|
||||
pub time: i64,
|
||||
pub tz: i32,
|
||||
pub extras: Vec<Extra>,
|
||||
pub files: Vec<RepoPathBuf>,
|
||||
pub message: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Default, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
pub struct UploadHgChangeset {
|
||||
pub node_id: HgId,
|
||||
pub changeset_content: HgChangesetContent,
|
||||
}
|
||||
#[derive(Clone, Default, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
pub struct UploadHgChangesetsRequest {
|
||||
/// list of changesets to upload, changesets must be sorted topologically (use dag.sort)
|
||||
pub changesets: Vec<UploadHgChangeset>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Default, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
pub struct UploadHgChangesetsResponse {
|
||||
pub index: usize,
|
||||
pub token: UploadToken,
|
||||
}
|
||||
|
@ -45,7 +45,8 @@ pub use crate::commit::CommitKnownResponse;
|
||||
pub use crate::commit::{
|
||||
CommitHashLookupRequest, CommitHashLookupResponse, CommitHashToLocationRequestBatch,
|
||||
CommitHashToLocationResponse, CommitLocationToHashRequest, CommitLocationToHashRequestBatch,
|
||||
CommitLocationToHashResponse, CommitRevlogData, CommitRevlogDataRequest,
|
||||
CommitLocationToHashResponse, CommitRevlogData, CommitRevlogDataRequest, Extra,
|
||||
HgChangesetContent, UploadHgChangeset, UploadHgChangesetsRequest, UploadHgChangesetsResponse,
|
||||
};
|
||||
pub use crate::complete_tree::CompleteTreeRequest;
|
||||
pub use crate::errors::ServerError;
|
||||
|
@ -15,9 +15,13 @@ use types::HgId;
|
||||
use crate::commit::{
|
||||
CommitHashLookupRequest, CommitHashLookupResponse, CommitHashToLocationRequestBatch,
|
||||
CommitHashToLocationResponse, CommitLocationToHashRequest, CommitLocationToHashRequestBatch,
|
||||
CommitLocationToHashResponse,
|
||||
CommitLocationToHashResponse, Extra, HgChangesetContent, UploadHgChangeset,
|
||||
UploadHgChangesetsRequest, UploadHgChangesetsResponse,
|
||||
};
|
||||
use crate::wire::{
|
||||
is_default, ToApi, ToWire, WireHgId, WireParents, WireRepoPathBuf, WireResult,
|
||||
WireToApiConversionError, WireUploadToken,
|
||||
};
|
||||
use crate::wire::{is_default, ToApi, ToWire, WireHgId, WireResult, WireToApiConversionError};
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||
pub struct WireCommitLocation {
|
||||
@ -371,6 +375,192 @@ impl Arbitrary for WireCommitHashLookupResponse {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||
pub struct WireExtra {
|
||||
#[serde(rename = "1")]
|
||||
pub key: Vec<u8>,
|
||||
|
||||
#[serde(rename = "2")]
|
||||
pub value: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||
pub struct WireHgChangesetContent {
|
||||
#[serde(rename = "1")]
|
||||
pub parents: WireParents,
|
||||
|
||||
#[serde(rename = "2")]
|
||||
pub manifestid: WireHgId,
|
||||
|
||||
#[serde(rename = "3")]
|
||||
pub user: Vec<u8>,
|
||||
|
||||
#[serde(rename = "4")]
|
||||
pub time: i64,
|
||||
|
||||
#[serde(rename = "5")]
|
||||
pub tz: i32,
|
||||
|
||||
#[serde(rename = "6")]
|
||||
pub extras: Vec<WireExtra>,
|
||||
|
||||
#[serde(rename = "7")]
|
||||
pub files: Vec<WireRepoPathBuf>,
|
||||
|
||||
#[serde(rename = "8")]
|
||||
pub message: Vec<u8>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||
pub struct WireUploadHgChangeset {
|
||||
#[serde(rename = "1")]
|
||||
pub node_id: WireHgId,
|
||||
|
||||
#[serde(rename = "2")]
|
||||
pub changeset_content: WireHgChangesetContent,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||
pub struct WireUploadHgChangesetsRequest {
|
||||
/// list of changesets to upload, changesets must be sorted topologically (use dag.sort)
|
||||
#[serde(rename = "1")]
|
||||
pub changesets: Vec<WireUploadHgChangeset>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, Eq, PartialEq)]
|
||||
pub struct WireUploadHgChangesetsResponse {
|
||||
#[serde(rename = "1")]
|
||||
pub index: usize,
|
||||
|
||||
#[serde(rename = "2")]
|
||||
pub token: WireUploadToken,
|
||||
}
|
||||
|
||||
impl ToWire for Extra {
|
||||
type Wire = WireExtra;
|
||||
|
||||
fn to_wire(self) -> Self::Wire {
|
||||
WireExtra {
|
||||
key: self.key.to_wire(),
|
||||
value: self.value.to_wire(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToApi for WireExtra {
|
||||
type Api = Extra;
|
||||
type Error = WireToApiConversionError;
|
||||
|
||||
fn to_api(self) -> Result<Self::Api, Self::Error> {
|
||||
Ok(Extra {
|
||||
key: self.key.to_api()?,
|
||||
value: self.value.to_api()?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWire for HgChangesetContent {
|
||||
type Wire = WireHgChangesetContent;
|
||||
|
||||
fn to_wire(self) -> Self::Wire {
|
||||
WireHgChangesetContent {
|
||||
parents: self.parents.to_wire(),
|
||||
manifestid: self.manifestid.to_wire(),
|
||||
user: self.user.to_wire(),
|
||||
time: self.time,
|
||||
tz: self.tz,
|
||||
extras: self.extras.to_wire(),
|
||||
files: self.files.to_wire(),
|
||||
message: self.message.to_wire(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToApi for WireHgChangesetContent {
|
||||
type Api = HgChangesetContent;
|
||||
type Error = WireToApiConversionError;
|
||||
|
||||
fn to_api(self) -> Result<Self::Api, Self::Error> {
|
||||
Ok(HgChangesetContent {
|
||||
parents: self.parents.to_api()?,
|
||||
manifestid: self.manifestid.to_api()?,
|
||||
user: self.user.to_api()?,
|
||||
time: self.time,
|
||||
tz: self.tz,
|
||||
extras: self.extras.to_api()?,
|
||||
files: self.files.to_api()?,
|
||||
message: self.message.to_api()?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWire for UploadHgChangeset {
|
||||
type Wire = WireUploadHgChangeset;
|
||||
|
||||
fn to_wire(self) -> Self::Wire {
|
||||
WireUploadHgChangeset {
|
||||
node_id: self.node_id.to_wire(),
|
||||
changeset_content: self.changeset_content.to_wire(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToApi for WireUploadHgChangeset {
|
||||
type Api = UploadHgChangeset;
|
||||
type Error = WireToApiConversionError;
|
||||
|
||||
fn to_api(self) -> Result<Self::Api, Self::Error> {
|
||||
Ok(UploadHgChangeset {
|
||||
node_id: self.node_id.to_api()?,
|
||||
changeset_content: self.changeset_content.to_api()?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWire for UploadHgChangesetsRequest {
|
||||
type Wire = WireUploadHgChangesetsRequest;
|
||||
|
||||
fn to_wire(self) -> Self::Wire {
|
||||
WireUploadHgChangesetsRequest {
|
||||
changesets: self.changesets.to_wire(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToApi for WireUploadHgChangesetsRequest {
|
||||
type Api = UploadHgChangesetsRequest;
|
||||
type Error = WireToApiConversionError;
|
||||
|
||||
fn to_api(self) -> Result<Self::Api, Self::Error> {
|
||||
Ok(UploadHgChangesetsRequest {
|
||||
changesets: self.changesets.to_api()?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ToWire for UploadHgChangesetsResponse {
|
||||
type Wire = WireUploadHgChangesetsResponse;
|
||||
|
||||
fn to_wire(self) -> Self::Wire {
|
||||
WireUploadHgChangesetsResponse {
|
||||
index: self.index,
|
||||
token: self.token.to_wire(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl ToApi for WireUploadHgChangesetsResponse {
|
||||
type Api = UploadHgChangesetsResponse;
|
||||
type Error = WireToApiConversionError;
|
||||
|
||||
fn to_api(self) -> Result<Self::Api, Self::Error> {
|
||||
Ok(UploadHgChangesetsResponse {
|
||||
index: self.index,
|
||||
token: self.token.to_api()?,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
@ -70,7 +70,8 @@ pub use crate::wire::{
|
||||
WireCommitHashLookupRequest, WireCommitHashLookupResponse,
|
||||
WireCommitHashToLocationRequestBatch, WireCommitHashToLocationResponse, WireCommitLocation,
|
||||
WireCommitLocationToHashRequest, WireCommitLocationToHashRequestBatch,
|
||||
WireCommitLocationToHashResponse,
|
||||
WireCommitLocationToHashResponse, WireExtra, WireHgChangesetContent, WireUploadHgChangeset,
|
||||
WireUploadHgChangesetsRequest, WireUploadHgChangesetsResponse,
|
||||
},
|
||||
complete_tree::WireCompleteTreeRequest,
|
||||
errors::{WireError, WireResult},
|
||||
|
Loading…
Reference in New Issue
Block a user