Skip to content

Commit

Permalink
modern sync: upload hg filenodes
Browse files Browse the repository at this point in the history
Summary:
This is not a final version, this is simply to make sure all elements of the filenodes are conserved through edenapi. This is missing two thing:
1. Correct Parents expression (mentioned by Mark in D67034907)
2. Stream/ pipe through channel so we don't keep everything in memory

But hey, it's a god POC, putting up for a review in case something is terribly wrong, otherwise I can address 1 and 2 in separate diff (will decide after chat about the parents issue)

Reviewed By: clara-9

Differential Revision: D67118247

fbshipit-source-id: 80ed06a5a77fb242672c9de741d7ed2a8d614884
  • Loading branch information
lmvasquezg authored and facebook-github-bot committed Dec 12, 2024
1 parent 129e15b commit 11ab191
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 25 deletions.
4 changes: 2 additions & 2 deletions eden/mononoke/modern_sync/src/sender.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

use anyhow::Result;
use async_trait::async_trait;
use edenapi_types::HgFilenodeData;
use mercurial_types::HgFileNodeId;
use mercurial_types::HgManifestId;
use mononoke_types::ContentId;
use mononoke_types::FileContents;
Expand All @@ -22,5 +22,5 @@ pub trait ModernSyncSender {
async fn upload_trees(&self, trees: Vec<HgManifestId>) -> Result<()>;

#[allow(unused)]
async fn upload_filenodes(&self, filenodes: Vec<HgFilenodeData>) -> Result<()>;
async fn upload_filenodes(&self, filenodes: Vec<HgFileNodeId>) -> Result<()>;
}
9 changes: 3 additions & 6 deletions eden/mononoke/modern_sync/src/sender/dummy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

use anyhow::Result;
use async_trait::async_trait;
use edenapi_types::HgFilenodeData;
use mercurial_types::HgFileNodeId;
use mercurial_types::HgManifestId;
use mononoke_types::ContentId;
use mononoke_types::FileContents;
Expand Down Expand Up @@ -41,12 +41,9 @@ impl ModernSyncSender for DummySender {
Ok(())
}

async fn upload_filenodes(&self, filenodes: Vec<HgFilenodeData>) -> Result<()> {
async fn upload_filenodes(&self, filenodes: Vec<HgFileNodeId>) -> Result<()> {
for filenode in filenodes {
info!(
&self.logger,
"Uploading filenode with id {:?}", filenode.node_id
);
info!(&self.logger, "Uploading filenode with id {}", filenode);
}
Ok(())
}
Expand Down
39 changes: 38 additions & 1 deletion eden/mononoke/modern_sync/src/sender/edenapi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use std::collections::HashSet;

use anyhow::Result;
use async_trait::async_trait;
use blobstore::Loadable;
use clientinfo::ClientEntryPoint;
use clientinfo::ClientInfo;
use context::CoreContext;
Expand All @@ -17,13 +18,16 @@ use edenapi::HttpClientBuilder;
use edenapi::HttpClientConfig;
use edenapi::SaplingRemoteApi;
use edenapi_types::AnyFileContentId;
use edenapi_types::AnyId;
use edenapi_types::HgFilenodeData;
use edenapi_types::Parents;
use edenapi_types::UploadToken;
use edenapi_types::UploadTreeEntry;
use futures::stream;
use futures::StreamExt;
use futures::TryStreamExt;
use mercurial_types::fetch_manifest_envelope;
use mercurial_types::HgFileNodeId;
use mercurial_types::HgManifestId;
use mononoke_app::args::TLSArgs;
use mononoke_types::FileContents;
Expand Down Expand Up @@ -138,7 +142,17 @@ impl ModernSyncSender for EdenapiSender {
Ok(())
}

async fn upload_filenodes(&self, filenodes: Vec<HgFilenodeData>) -> Result<()> {
async fn upload_filenodes(&self, fn_ids: Vec<HgFileNodeId>) -> Result<()> {
let filenodes = stream::iter(fn_ids)
.map(|file_id| {
let ctx = self.ctx.clone();
let repo_blobstore = self.repo_blobstore.clone();
async move { from_id_to_filenode(file_id, &ctx, &repo_blobstore).await }
})
.buffer_unordered(10)
.try_collect::<Vec<_>>()
.await?;

let res = self.client.upload_filenodes_batch(filenodes).await?;
info!(
&self.logger,
Expand Down Expand Up @@ -170,3 +184,26 @@ pub async fn from_tree_to_entry(
parents,
})
}

pub async fn from_id_to_filenode(
file_id: HgFileNodeId,
ctx: &CoreContext,
repo_blobstore: &RepoBlobstore,
) -> Result<HgFilenodeData> {
let file_node = file_id.load(ctx, repo_blobstore).await?;

// These tokens are mostly implemented to make sure client sends content before uplaoding filenodes
// but they're not really verified, given we're indeed sending the content, let's use a placeholder
let content_id = file_node.content_id();
let token = UploadToken::new_fake_token(
AnyId::AnyFileContentId(AnyFileContentId::ContentId(content_id.into())),
None,
);

Ok(HgFilenodeData {
node_id: file_id.into_nodehash().into(),
parents: file_node.hg_parents().into(),
metadata: file_node.metadata().clone().to_vec(),
file_content_upload_token: token,
})
}
5 changes: 1 addition & 4 deletions eden/mononoke/modern_sync/src/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -265,10 +265,7 @@ pub async fn process_one_changeset(
sort_manifest_changes(ctx, repo.repo_blobstore(), hg_mf_id, mf_ids_p).await?;

sender.upload_trees(mf_ids).await?;

for file_id in file_ids {
info!(logger, "File {:?}", file_id);
}
sender.upload_filenodes(file_ids).await?;

if log_completion {
STATS::synced_commits.add_value(1, (repo.repo_identity().name().to_string(),));
Expand Down
15 changes: 5 additions & 10 deletions eden/mononoke/tests/integration/modern_sync/test-modern-sync.t
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@ Sync all bookmarks moves
Uploading bytes: b"abc\n"
Upload response: [UploadToken { data: UploadTokenData { id: AnyFileContentId(ContentId(ContentId("be87911855af0fc33a75f2c1cba2269dd90faa7f5c5358eb640d9d65f55fced3"))), bubble_id: None, metadata: Some(FileContentTokenMetadata(FileContentTokenMetadata { content_size: 4 })) }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } }]
Upload tree response: [UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("c1afe800646ee45232ab5e70c57247b78dbf3899")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("53b19c5f23977836390e5880ec30fd252a311384")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
File HgFileNodeId(HgNodeHash(Sha1(005d992c5dcf32993668f7cede29d296c494a5d9)))
File HgFileNodeId(HgNodeHash(Sha1(f9304d84edb8a8ee2d3ce3f9de3ea944c82eba8f)))
Upload filenodes response: [UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("005d992c5dcf32993668f7cede29d296c494a5d9")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("f9304d84edb8a8ee2d3ce3f9de3ea944c82eba8f")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
Found commit ChangesetId(Blake2(5b1c7130dde8e54b4285b9153d8e56d69fbf4ae685eaf9e9766cc409861995f8))
Commit info ChangesetInfo { changeset_id: ChangesetId(Blake2(5b1c7130dde8e54b4285b9153d8e56d69fbf4ae685eaf9e9766cc409861995f8)), parents: [ChangesetId(Blake2(ba1a2b3ca64cead35117cb2b707da1211cf43639ade917aee655f3875f4922c3))], author: "test", author_date: DateTime(1970-01-01T00:00:00+00:00), committer: None, committer_date: None, message: Message("E"), hg_extra: {}, git_extra_headers: None }
File change Change(TrackedFileChange { inner: BasicFileChange { content_id: ContentId(Blake2(1b1e26f01a806e123b37492672d2756e1c25bb31f1e15cfda410c149c317e130)), file_type: Regular, size: 1, git_lfs: FullContent }, copy_from: None })
Expand All @@ -86,8 +85,7 @@ Sync all bookmarks moves
Uploading bytes: b"abcdefg\n"
Upload response: [UploadToken { data: UploadTokenData { id: AnyFileContentId(ContentId(ContentId("96475ef07b63bf02679e9964ff65f0f96883f53d0718671bd44cce830bbf2ebd"))), bubble_id: None, metadata: Some(FileContentTokenMetadata(FileContentTokenMetadata { content_size: 8 })) }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } }]
Upload tree response: [UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("5e3e3ee682cdb8a61b7537cfc1a821b6283c8bb5")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("33ac88b3b11b11c3fd33fe71cec4c8852ba2eeef")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
File HgFileNodeId(HgNodeHash(Sha1(dba92ad67dc1f3732ab73a5f51b77129275a1724)))
File HgFileNodeId(HgNodeHash(Sha1(b31c6c30a54b89020d5ac28a67917349512d75eb)))
Upload filenodes response: [UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("dba92ad67dc1f3732ab73a5f51b77129275a1724")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("b31c6c30a54b89020d5ac28a67917349512d75eb")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
Found commit ChangesetId(Blake2(ba1a2b3ca64cead35117cb2b707da1211cf43639ade917aee655f3875f4922c3))
Commit info ChangesetInfo { changeset_id: ChangesetId(Blake2(ba1a2b3ca64cead35117cb2b707da1211cf43639ade917aee655f3875f4922c3)), parents: [ChangesetId(Blake2(41deea4804cd27d1f4efbec135d839338804a5dfcaf364863bd0289067644db5))], author: "test", author_date: DateTime(1970-01-01T00:00:00+00:00), committer: None, committer_date: None, message: Message("D"), hg_extra: {}, git_extra_headers: None }
File change Change(TrackedFileChange { inner: BasicFileChange { content_id: ContentId(Blake2(90c8e211c758a9bbcd33e463c174f1693692677cb76c7aaf4ce41aa0a29334c0)), file_type: Regular, size: 1, git_lfs: FullContent }, copy_from: None })
Expand All @@ -101,8 +99,7 @@ Sync all bookmarks moves
Uploading bytes: b"abcdef\n"
Upload response: [UploadToken { data: UploadTokenData { id: AnyFileContentId(ContentId(ContentId("5d3bfab620332130430c7f540f9fe0b3b0079d0b9b632e0dae96a1424a7a4242"))), bubble_id: None, metadata: Some(FileContentTokenMetadata(FileContentTokenMetadata { content_size: 7 })) }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } }]
Upload tree response: [UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("553b84eb92dd53cf5d757e536be1b42e46458017")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("fd1a9570853c1a068efbf6175c547a554015f850")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
File HgFileNodeId(HgNodeHash(Sha1(4eec8cfdabce9565739489483b6ad93ef7657ea9)))
File HgFileNodeId(HgNodeHash(Sha1(aae2838d921bcc14ccbb9212f4175f300fd9f2f8)))
Upload filenodes response: [UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("4eec8cfdabce9565739489483b6ad93ef7657ea9")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("aae2838d921bcc14ccbb9212f4175f300fd9f2f8")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
Found commit ChangesetId(Blake2(41deea4804cd27d1f4efbec135d839338804a5dfcaf364863bd0289067644db5))
Commit info ChangesetInfo { changeset_id: ChangesetId(Blake2(41deea4804cd27d1f4efbec135d839338804a5dfcaf364863bd0289067644db5)), parents: [ChangesetId(Blake2(8a9d572a899acdef764b88671c24b94a8b0780c1591a5a9bca97184c2ef0f304))], author: "test", author_date: DateTime(1970-01-01T00:00:00+00:00), committer: None, committer_date: None, message: Message("C"), hg_extra: {}, git_extra_headers: None }
File change Change(TrackedFileChange { inner: BasicFileChange { content_id: ContentId(Blake2(896ad5879a5df0403bfc93fc96507ad9c93b31b11f3d0fa05445da7918241e5d)), file_type: Regular, size: 1, git_lfs: FullContent }, copy_from: None })
Expand All @@ -116,8 +113,7 @@ Sync all bookmarks moves
Uploading bytes: b"abcde\n"
Upload response: [UploadToken { data: UploadTokenData { id: AnyFileContentId(ContentId(ContentId("c86e7a7ee4c102efc1e5166dd95c1c73fcbff59dc3b04dc79fbbf3d1d10350ed"))), bubble_id: None, metadata: Some(FileContentTokenMetadata(FileContentTokenMetadata { content_size: 6 })) }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } }]
Upload tree response: [UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("144ae30be86d40d8a0617b7ec37a70e618df4840")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("3b6d87c4e93a918020513a57279573f4325109ef")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
File HgFileNodeId(HgNodeHash(Sha1(a2e456504a5e61f763f1a0b36a6c247c7541b2b3)))
File HgFileNodeId(HgNodeHash(Sha1(9bad1c227e9133a5bbae1652c889406d35e6dac1)))
Upload filenodes response: [UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("a2e456504a5e61f763f1a0b36a6c247c7541b2b3")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("9bad1c227e9133a5bbae1652c889406d35e6dac1")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
Found commit ChangesetId(Blake2(8a9d572a899acdef764b88671c24b94a8b0780c1591a5a9bca97184c2ef0f304))
Commit info ChangesetInfo { changeset_id: ChangesetId(Blake2(8a9d572a899acdef764b88671c24b94a8b0780c1591a5a9bca97184c2ef0f304)), parents: [ChangesetId(Blake2(53b034a90fe3002a707a7da9cdf6eac3dea460ad72f7c6969dfb88fd0e69f856))], author: "test", author_date: DateTime(1970-01-01T00:00:00+00:00), committer: None, committer_date: None, message: Message("B"), hg_extra: {}, git_extra_headers: None }
File change Change(TrackedFileChange { inner: BasicFileChange { content_id: ContentId(Blake2(55662471e2a28db8257939b2f9a2d24e65b46a758bac12914a58f17dcde6905f)), file_type: Regular, size: 1, git_lfs: FullContent }, copy_from: None })
Expand All @@ -131,8 +127,7 @@ Sync all bookmarks moves
Uploading bytes: b"abcd\n"
Upload response: [UploadToken { data: UploadTokenData { id: AnyFileContentId(ContentId(ContentId("fbc4b9b407225e86008840c4095edb4f66a62bad80529b6e120bfa7d605f9423"))), bubble_id: None, metadata: Some(FileContentTokenMetadata(FileContentTokenMetadata { content_size: 5 })) }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } }]
Upload tree response: [UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("83af7e770afc39d483b9cd198c49fe919ef0461a")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("0652870aff7b4cb5e2172325519652378ae063e7")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
File HgFileNodeId(HgNodeHash(Sha1(35e7525ce3a48913275d7061dd9a867ffef1e34d)))
File HgFileNodeId(HgNodeHash(Sha1(778675f9ec8d35ff2fce23a34f68edd15d783853)))
Upload filenodes response: [UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("35e7525ce3a48913275d7061dd9a867ffef1e34d")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("778675f9ec8d35ff2fce23a34f68edd15d783853")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]

$ mononoke_admin mutable-counters --repo-name orig get modern_sync
Some(2)
Expand Down
7 changes: 5 additions & 2 deletions eden/mononoke/tests/integration/modern_sync/test-sync-one.t
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,7 @@
Uploading bytes: b"abc\n"
Upload response: [UploadToken { data: UploadTokenData { id: AnyFileContentId(ContentId(ContentId("be87911855af0fc33a75f2c1cba2269dd90faa7f5c5358eb640d9d65f55fced3"))), bubble_id: None, metadata: Some(FileContentTokenMetadata(FileContentTokenMetadata { content_size: 4 })) }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } }]
Upload tree response: [UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("c1afe800646ee45232ab5e70c57247b78dbf3899")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTreeResponse { token: UploadToken { data: UploadTokenData { id: HgTreeId(HgId("53b19c5f23977836390e5880ec30fd252a311384")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]
File HgFileNodeId(HgNodeHash(Sha1(005d992c5dcf32993668f7cede29d296c494a5d9)))
File HgFileNodeId(HgNodeHash(Sha1(f9304d84edb8a8ee2d3ce3f9de3ea944c82eba8f)))
Upload filenodes response: [UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("005d992c5dcf32993668f7cede29d296c494a5d9")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }, UploadTokensResponse { token: UploadToken { data: UploadTokenData { id: HgFilenodeId(HgId("f9304d84edb8a8ee2d3ce3f9de3ea944c82eba8f")), bubble_id: None, metadata: None }, signature: UploadTokenSignature { signature: [102, 97, 107, 101, 116, 111, 107, 101, 110, 115, 105, 103, 110, 97, 116, 117, 114, 101] } } }]

Compare content
$ diff <(mononoke_admin filestore -R orig fetch --content-id eb56488e97bb4cf5eb17f05357b80108a4a71f6c3bab52dfcaec07161d105ec9) <(mononoke_admin filestore -R dest fetch --content-id eb56488e97bb4cf5eb17f05357b80108a4a71f6c3bab52dfcaec07161d105ec9)
Expand All @@ -81,3 +80,7 @@ Compare content
Compare hg manifests
$ diff <(mononoke_admin blobstore -R orig fetch hgmanifest.sha1.c1afe800646ee45232ab5e70c57247b78dbf3899 --quiet) <(mononoke_admin blobstore -R dest fetch hgmanifest.sha1.c1afe800646ee45232ab5e70c57247b78dbf3899 --quiet)
$ diff <(mononoke_admin blobstore -R orig fetch hgmanifest.sha1.53b19c5f23977836390e5880ec30fd252a311384 --quiet) <(mononoke_admin blobstore -R dest fetch hgmanifest.sha1.53b19c5f23977836390e5880ec30fd252a311384 --quiet)

Compare filenodes
$ diff <(mononoke_admin blobstore -R orig fetch hgfilenode.sha1.005d992c5dcf32993668f7cede29d296c494a5d9 --quiet) <(mononoke_admin blobstore -R dest fetch hgfilenode.sha1.005d992c5dcf32993668f7cede29d296c494a5d9 --quiet)
$ diff <(mononoke_admin blobstore -R orig fetch hgfilenode.sha1.f9304d84edb8a8ee2d3ce3f9de3ea944c82eba8f --quiet) <(mononoke_admin blobstore -R dest fetch hgfilenode.sha1.f9304d84edb8a8ee2d3ce3f9de3ea944c82eba8f --quiet)

0 comments on commit 11ab191

Please sign in to comment.