mononoke: extract functionality to sync commit and ancestors from x_repo_sync_job

Summary: This functionality will be used in the next diffs.

Reviewed By: ahornby

Differential Revision: D24163517

fbshipit-source-id: 36e5c9646e21913f0e0d79d77dd11862f5aa5331
This commit is contained in:
Stanislau Hlebik 2020-10-08 03:47:02 -07:00 committed by Facebook GitHub Bot
parent dd64e842c3
commit 6f9825eb69

View File

@ -85,7 +85,34 @@ pub async fn sync_single_bookmark_update_log<M: SyncedCommitMapping + Clone + 's
}
};
// Find commits that needs syncing
sync_commit_and_ancestors(
ctx,
commit_syncer,
entry.from_changeset_id,
to_cs_id,
bookmark,
source_skiplist_index,
target_skiplist_index,
common_pushrebase_bookmarks,
scuba_sample,
)
.await
// TODO(stash): test with other movers
// Note: counter update might fail after a successful sync
}
async fn sync_commit_and_ancestors<M: SyncedCommitMapping + Clone + 'static>(
ctx: &CoreContext,
commit_syncer: &CommitSyncer<M>,
from_cs_id: Option<ChangesetId>,
to_cs_id: ChangesetId,
bookmark: BookmarkName,
source_skiplist_index: &Source<Arc<SkiplistIndex>>,
target_skiplist_index: &Target<Arc<SkiplistIndex>>,
common_pushrebase_bookmarks: &HashSet<BookmarkName>,
scuba_sample: ScubaSampleBuilder,
) -> Result<Vec<ChangesetId>, Error> {
let unsynced_ancestors =
find_toposorted_unsynced_ancestors(&ctx, &commit_syncer, to_cs_id.clone()).await?;
let len = unsynced_ancestors.len();
@ -94,7 +121,7 @@ pub async fn sync_single_bookmark_update_log<M: SyncedCommitMapping + Clone + 's
if common_pushrebase_bookmarks.contains(&bookmark) {
// This is a commit that was introduced by common pushrebase bookmark (e.g. "master").
// Use pushrebase to sync a commit.
if let Some(from_cs_id) = entry.from_changeset_id {
if let Some(from_cs_id) = from_cs_id {
check_forward_move(
ctx,
commit_syncer,
@ -143,8 +170,6 @@ pub async fn sync_single_bookmark_update_log<M: SyncedCommitMapping + Clone + 's
.await?;
Ok(res)
}
// TODO(stash): test with other movers
// Note: counter update might fail after a successful sync
}
/// This function syncs commits via pushrebase with a caveat - some commits shouldn't be