mononoke: remove Changeset trait

Summary:
There was only one struct that implemented this trait - HgBlobChangeset. And
any time we wanted to access any method from this trait we had to import it.

Given that this trait is not helping and makes using HgBlobChangeset harder,
let's just remove it instead

Reviewed By: aslpavel

Differential Revision: D19024494

fbshipit-source-id: 98eb960d348e8d77e61198bcc82a71d7938a35e7
This commit is contained in:
Stanislau Hlebik 2019-12-13 09:44:14 -08:00 committed by Facebook Github Bot
parent 28e4ecae38
commit e8e1424593
31 changed files with 59 additions and 132 deletions

View File

@ -28,7 +28,7 @@ use blobrepo::BlobRepo;
use context::CoreContext;
use futures::prelude::*;
use futures_ext::{try_boxfuture, BoxFuture, FutureExt};
use mercurial_types::{blobs::HgBlobChangeset, Changeset as HgChangeset, HgEntry, HgEntryId, Type};
use mercurial_types::{blobs::HgBlobChangeset, HgEntry, HgEntryId, Type};
use mononoke_types::RepositoryId;
use crate::cache::CacheManager;

View File

@ -20,7 +20,7 @@ use context::CoreContext;
use manifest::{bonsai_diff, BonsaiDiffFileChange};
use mercurial_types::{
blobs::{HgBlobChangeset, HgBlobEnvelope},
Changeset, HgFileEnvelope, HgFileNodeId, HgManifestId, MPath, RepoPath,
HgFileEnvelope, HgFileNodeId, HgManifestId, MPath, RepoPath,
};
use mononoke_types::{
BlobstoreValue, BonsaiChangeset, BonsaiChangesetMut, ChangesetId, FileChange, MononokeId,

View File

@ -46,8 +46,8 @@ use mercurial_types::{
UploadHgFileEntry, UploadHgNodeHash,
},
manifest::Content,
Changeset, FileBytes, Globalrev, HgChangesetId, HgEntry, HgEntryId, HgFileEnvelope,
HgFileNodeId, HgManifest, HgManifestId, HgNodeHash, HgParents, RepoPath, Type,
FileBytes, Globalrev, HgChangesetId, HgEntry, HgEntryId, HgFileEnvelope, HgFileNodeId,
HgManifest, HgManifestId, HgNodeHash, HgParents, RepoPath, Type,
};
use mononoke_types::{
hash::Sha256, Blob, BlobstoreBytes, BlobstoreValue, BonsaiChangeset, ChangesetId, ContentId,

View File

@ -31,8 +31,7 @@ use mercurial_types::{
blobs::{ChangesetMetadata, HgBlobChangeset, HgBlobEntry, HgBlobEnvelope, HgChangesetContent},
manifest,
nodehash::{HgFileNodeId, HgManifestId},
Changeset, HgChangesetId, HgEntry, HgNodeHash, HgNodeKey, HgParents, MPath, RepoPath,
NULL_HASH,
HgChangesetId, HgEntry, HgNodeHash, HgNodeKey, HgParents, MPath, RepoPath, NULL_HASH,
};
use mononoke_types::{self, BonsaiChangeset, ChangesetId, FileType, RepositoryId};
use stats::define_stats;

View File

@ -25,8 +25,8 @@ use maplit::btreemap;
use memblob::LazyMemblob;
use mercurial_types::{
blobs::{ContentBlobMeta, File, UploadHgFileContents, UploadHgFileEntry, UploadHgNodeHash},
manifest, Changeset, FileType, HgChangesetId, HgEntry, HgFileNodeId, HgManifestId, HgParents,
MPath, MPathElement, RepoPath,
manifest, FileType, HgChangesetId, HgEntry, HgFileNodeId, HgManifestId, HgParents, MPath,
MPathElement, RepoPath,
};
use mercurial_types_mocks::nodehash::{ONES_CSID, ONES_FNID};
use mononoke_types::bonsai_changeset::BonsaiChangesetMut;

View File

@ -21,7 +21,7 @@ use futures_ext::{BoxFuture, FutureExt, StreamExt};
use manifest::{bonsai_diff, BonsaiDiffFileChange, Diff, Entry, ManifestOps};
use mercurial_types::{
blobs::{BlobManifest, HgBlobChangeset, HgBlobEntry},
Changeset, HgChangesetId, HgEntry, HgFileNodeId, HgManifestId, HgNodeHash, Type,
HgChangesetId, HgEntry, HgFileNodeId, HgManifestId, HgNodeHash, Type,
};
use mononoke_types::{DateTime, FileType};
use slog::{debug, Logger};

View File

@ -14,7 +14,7 @@ use context::CoreContext;
use futures::{future, Future, IntoFuture, Stream};
use futures_ext::{spawn_future, FutureExt};
use manifest::{Entry, ManifestOps};
use mercurial_types::{Changeset, HgChangesetId, HgFileNodeId, RepoPath};
use mercurial_types::{HgChangesetId, HgFileNodeId, RepoPath};
use metaconfig_types::CacheWarmupParams;
use revset::AncestorsNodeStream;
use slog::{debug, info, Logger};

View File

@ -21,7 +21,7 @@ use blobrepo_factory::ReadOnlyStorage;
use bookmarks::BookmarkName;
use changesets::SqlConstructors;
use context::CoreContext;
use mercurial_types::{Changeset, HgChangesetId, HgManifestId};
use mercurial_types::{HgChangesetId, HgManifestId};
use metaconfig_types::MetadataDBConfig;
use mononoke_types::ChangesetId;

View File

@ -14,7 +14,7 @@ use cmdlib::helpers;
use context::CoreContext;
use futures::future::{self, Future};
use futures_ext::FutureExt;
use mercurial_types::{Changeset, HgChangesetId, HgFileNodeId, MPath};
use mercurial_types::{HgChangesetId, HgFileNodeId, MPath};
use mononoke_types::{BonsaiChangeset, DateTime, Timestamp};
use serde_json::{json, to_string_pretty};
use slog::{debug, Logger};

View File

@ -18,7 +18,7 @@ use futures::prelude::*;
use futures::stream::iter_ok;
use futures_ext::{try_boxfuture, BoxFuture, FutureExt};
use mercurial_types::manifest::Content;
use mercurial_types::{Changeset, HgManifest, MPath, MPathElement};
use mercurial_types::{HgManifest, MPath, MPathElement};
use slog::{debug, Logger};
use crate::error::SubcommandError;

View File

@ -28,7 +28,7 @@ use futures_util::{
try_join, TryStreamExt,
};
use manifest::{Entry, ManifestOps};
use mercurial_types::{Changeset, HgFileNodeId, HgManifestId};
use mercurial_types::{HgFileNodeId, HgManifestId};
use metaconfig_types::{CommitSyncConfig, RepoConfig};
use mononoke_types::{ChangesetId, MPath};
use movers::{get_large_to_small_mover, Mover};

View File

@ -16,7 +16,7 @@ use fbinit::FacebookInit;
use futures::prelude::*;
use futures_ext::{BoxFuture, FutureExt};
use manifest::{bonsai_diff, BonsaiDiffFileChange};
use mercurial_types::{Changeset, HgChangesetId, HgManifestId, MPath};
use mercurial_types::{HgChangesetId, HgManifestId, MPath};
use revset::RangeNodeStream;
use serde_derive::Serialize;
use slog::Logger;

View File

@ -23,7 +23,7 @@ use futures_ext::{
bounded_traversal::bounded_traversal_stream, try_boxfuture, BoxFuture, FutureExt,
};
use itertools::{Either, Itertools};
use mercurial_types::{blobs::HgBlobChangeset, Changeset, HgChangesetId, HgEntryId, MPath};
use mercurial_types::{blobs::HgBlobChangeset, HgChangesetId, HgEntryId, MPath};
use mononoke_types::{typed_hash::MononokeId, ContentId, Timestamp};
use redactedblobstore::SqlRedactedContentStore;
use slog::{info, Logger};

View File

@ -22,7 +22,7 @@ use fbinit::FacebookInit;
use futures::{future::err, stream::futures_unordered, Future, IntoFuture, Stream};
use futures_ext::{BoxFuture, FutureExt};
use manifest::get_implicit_deletes;
use mercurial_types::{changeset::Changeset, HgManifestId};
use mercurial_types::HgManifestId;
use mononoke_types::{ChangesetId, MPath};
use revset::AncestorsNodeStream;
use slog::{debug, Logger};

View File

@ -19,7 +19,7 @@ use fbinit::FacebookInit;
use futures::{future, Future, IntoFuture, Stream};
use futures_ext::{BoxFuture, FutureExt, StreamExt};
use manifest::{Entry, ManifestOps, PathOrPrefix};
use mercurial_types::Changeset;
use mononoke_types::{ChangesetId, MPath};
use revset::AncestorsNodeStream;
use slog::Logger;

View File

@ -24,7 +24,7 @@ use futures::{
};
use futures_ext::FutureExt;
use lock_ext::LockExt;
use mercurial_types::{Changeset, HgChangesetId};
use mercurial_types::HgChangesetId;
use revset::AncestorsNodeStream;
use slog::{debug, error, info, warn, Logger};
use std::{

View File

@ -25,7 +25,7 @@ use futures::stream::Stream;
use futures_ext::FutureExt;
use futures_ext::{BoxFuture, BoxStream};
use manifest::{Diff, Entry, ManifestOps};
use mercurial_types::{Changeset, FileBytes, HgChangesetId, HgFileNodeId, HgManifestId};
use mercurial_types::{FileBytes, HgChangesetId, HgFileNodeId, HgManifestId};
use mononoke_types::{FileType, RepositoryId};
use scuba_ext::ScubaSampleBuilder;
use slog::info;

View File

@ -28,7 +28,6 @@ use futures_preview::{
};
use manifest::get_implicit_deletes;
use maplit::{hashmap, hashset};
use mercurial_types::changeset::Changeset;
use mercurial_types::HgManifestId;
use metaconfig_types::{CommitSyncConfig, PushrebaseParams};
use mononoke_types::{

View File

@ -150,7 +150,7 @@ mod test {
merge_even, merge_uneven, unshared_merge_even, unshared_merge_uneven,
};
use manifest::Entry;
use mercurial_types::{Changeset, HgChangesetId, HgManifestId};
use mercurial_types::{HgChangesetId, HgManifestId};
use revset::AncestorsNodeStream;
use std::sync::Arc;
use test_utils::iterate_all_entries;

View File

@ -302,7 +302,7 @@ mod tests {
use fixtures::linear;
use futures::Stream;
use maplit::btreemap;
use mercurial_types::{blobs::BlobManifest, Changeset, HgFileNodeId, HgManifestId};
use mercurial_types::{blobs::BlobManifest, HgFileNodeId, HgManifestId};
use mononoke_types::{
BlobstoreValue, BonsaiChangeset, BonsaiChangesetMut, DateTime, FileChange, FileContents,
RepoPath,

View File

@ -151,7 +151,7 @@ mod test {
merge_even, merge_uneven, unshared_merge_even, unshared_merge_uneven,
};
use manifest::Entry;
use mercurial_types::{Changeset, HgChangesetId, HgManifestId};
use mercurial_types::{HgChangesetId, HgManifestId};
use revset::AncestorsNodeStream;
use std::sync::Arc;
use test_utils::iterate_all_entries;

View File

@ -13,9 +13,7 @@ use context::CoreContext;
use futures::{Future, Stream};
use futures_ext::{BoxFuture, FutureExt, StreamExt};
use manifest::{Diff, Entry, ManifestOps};
use mercurial_types::{
blobs::HgBlobChangeset, Changeset, FileBytes, HgChangesetId, HgFileNodeId, MPath,
};
use mercurial_types::{blobs::HgBlobChangeset, FileBytes, HgChangesetId, HgFileNodeId, MPath};
use mononoke_types::FileType;
use crate::{ChangedFileType, ChangesetStore, FileContentStore};

View File

@ -34,7 +34,7 @@ use futures::{future, Future, IntoFuture};
use futures_ext::{try_boxfuture, BoxFuture, FutureExt};
use futures_stats::Timed;
use hooks_content_stores::{ChangedFileType, ChangesetStore, FileContentStore};
use mercurial_types::{Changeset, FileBytes, HgChangesetId, HgFileNodeId, HgParents, MPath};
use mercurial_types::{FileBytes, HgChangesetId, HgFileNodeId, HgParents, MPath};
use metaconfig_types::{BookmarkOrRegex, HookBypass, HookConfig, HookManagerParams};
use mononoke_types::FileType;
use regex::Regex;

View File

@ -9,8 +9,7 @@
use super::revlog::{serialize_extras, Extra, RevlogChangeset};
use crate::{
nodehash::{HgChangesetId, HgManifestId, NULL_HASH},
Changeset, HgBlobNode, HgChangesetEnvelope, HgChangesetEnvelopeMut, HgNodeHash, HgParents,
MPath,
HgBlobNode, HgChangesetEnvelope, HgChangesetEnvelopeMut, HgNodeHash, HgParents, MPath,
};
use anyhow::{bail, Error, Result};
use blobstore::{Blobstore, Loadable, LoadableError};
@ -230,6 +229,35 @@ impl HgBlobChangeset {
pub fn p2(&self) -> Option<HgNodeHash> {
self.content.p2()
}
pub fn manifestid(&self) -> HgManifestId {
self.content.manifestid
}
pub fn user(&self) -> &[u8] {
&self.content.user
}
pub fn extra(&self) -> &BTreeMap<Vec<u8>, Vec<u8>> {
self.content.extra.as_ref()
}
pub fn comments(&self) -> &[u8] {
&self.content.comments
}
pub fn files(&self) -> &[MPath] {
&self.content.files
}
pub fn time(&self) -> &DateTime {
&self.content.time
}
pub fn parents(&self) -> HgParents {
// XXX Change this to return p1 and p2 directly.
HgParents::new(self.content.p1(), self.content.p2())
}
}
impl Loadable for HgChangesetId {
@ -249,34 +277,3 @@ impl Loadable for HgChangesetId {
.boxify()
}
}
impl Changeset for HgBlobChangeset {
fn manifestid(&self) -> HgManifestId {
self.content.manifestid
}
fn user(&self) -> &[u8] {
&self.content.user
}
fn extra(&self) -> &BTreeMap<Vec<u8>, Vec<u8>> {
self.content.extra.as_ref()
}
fn comments(&self) -> &[u8] {
&self.content.comments
}
fn files(&self) -> &[MPath] {
&self.content.files
}
fn time(&self) -> &DateTime {
&self.content.time
}
fn parents(&self) -> HgParents {
// XXX Change this to return p1 and p2 directly.
HgParents::new(self.content.p1(), self.content.p2())
}
}

View File

@ -1,62 +0,0 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License found in the LICENSE file in the root
* directory of this source tree.
*/
use std::collections::BTreeMap;
use mononoke_types::{DateTime, MPath};
use crate::blobnode::HgParents;
use crate::nodehash::HgManifestId;
pub trait Changeset: Send + 'static {
fn manifestid(&self) -> HgManifestId;
fn user(&self) -> &[u8];
fn extra(&self) -> &BTreeMap<Vec<u8>, Vec<u8>>;
fn comments(&self) -> &[u8];
fn files(&self) -> &[MPath];
fn time(&self) -> &DateTime;
// XXX Change this to return p1 and p2 directly.
fn parents(&self) -> HgParents;
fn boxed(self) -> Box<dyn Changeset>
where
Self: Sized,
{
Box::new(self)
}
}
impl Changeset for Box<dyn Changeset> {
fn manifestid(&self) -> HgManifestId {
(**self).manifestid()
}
fn user(&self) -> &[u8] {
(**self).user()
}
fn extra(&self) -> &BTreeMap<Vec<u8>, Vec<u8>> {
(**self).extra()
}
fn comments(&self) -> &[u8] {
(**self).comments()
}
fn files(&self) -> &[MPath] {
(**self).files()
}
fn time(&self) -> &DateTime {
(**self).time()
}
fn parents(&self) -> HgParents {
(**self).parents()
}
}

View File

@ -51,7 +51,6 @@ pub mod bdiff;
pub mod blob;
pub mod blobnode;
pub mod blobs;
pub mod changeset;
pub mod delta;
pub mod delta_apply;
mod envelope;
@ -73,7 +72,6 @@ pub use self::manifest::{HgEntry, HgManifest, Type};
pub use blob::HgBlob;
pub use blobnode::{calculate_hg_node_id, calculate_hg_node_id_stream, HgBlobNode, HgParents};
pub use blobs::{fetch_manifest_envelope, fetch_raw_manifest_bytes, fetch_raw_revlog_metadata};
pub use changeset::Changeset;
pub use delta::Delta;
pub use envelope::{
HgChangesetEnvelope, HgChangesetEnvelopeMut, HgFileEnvelope, HgFileEnvelopeMut,

View File

@ -15,7 +15,7 @@ use blobrepo::BlobRepo;
use cloned::cloned;
use context::CoreContext;
use mercurial_types::manifest::Content;
use mercurial_types::{Changeset, HgChangesetId};
use mercurial_types::HgChangesetId;
use mononoke_types::MPath;
#[derive(Debug, Error)]

View File

@ -60,7 +60,7 @@ use futures_preview::{
use futures_util::{future::FutureExt as NewFutureExt, try_future::TryFutureExt};
use manifest::{bonsai_diff, BonsaiDiffFileChange, ManifestOps};
use maplit::hashmap;
use mercurial_types::{Changeset, HgChangesetId, HgFileNodeId, HgManifestId, MPath};
use mercurial_types::{HgChangesetId, HgFileNodeId, HgManifestId, MPath};
use metaconfig_types::PushrebaseParams;
use mononoke_types::{
check_case_conflicts, BonsaiChangeset, ChangesetId, DateTime, FileChange, RawBundle2Id,

View File

@ -16,7 +16,7 @@ use futures::{future, stream, Future, Stream};
use futures_ext::FutureExt;
use mercurial_bundles::{changegroup::CgVersion, part_encode::PartEncodeBuilder, parts};
use mercurial_revlog::{self, RevlogChangeset};
use mercurial_types::{Changeset, HgBlobNode, HgChangesetId, HgPhase, NULL_CSID};
use mercurial_types::{HgBlobNode, HgChangesetId, HgPhase, NULL_CSID};
use mononoke_types::ChangesetId;
use phases::Phases;
use reachabilityindex::LeastCommonAncestorsHint;

View File

@ -12,7 +12,7 @@ use fbinit::FacebookInit;
use fixtures::many_files_dirs;
use futures_preview::compat::Future01CompatExt;
use maplit::hashset;
use mercurial_types::Changeset;
use mononoke_types_mocks::changesetid::ONES_CSID;
use std::collections::HashSet;
use tokio_preview as tokio;

View File

@ -23,9 +23,7 @@ use futures_ext::{
FutureExt, StreamExt,
};
use itertools::{Either, Itertools};
use mercurial_types::{
Changeset, HgChangesetId, HgEntryId, HgFileNodeId, HgManifest, HgManifestId, RepoPath,
};
use mercurial_types::{HgChangesetId, HgEntryId, HgFileNodeId, HgManifest, HgManifestId, RepoPath};
use mononoke_types::{ChangesetId, ContentId, MPath};
use std::{cmp, iter::IntoIterator, ops::Add};