mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
mononoke: use live_commit_sync_config in crossrepo admin
Summary: At the moment we have a weird setup where cross repo sync configuration is stored in both live commit sync configuration and in normal mononoke config. The latter is deprecated, however there are still a few parts of the codebase that rely on that. This diff fixes one place Reviewed By: ikostia Differential Revision: D23903578 fbshipit-source-id: 2bf4b3d17c34fe2eb6330cd862f7b0f5cd6ffa40
This commit is contained in:
parent
fc47d6089b
commit
93b2919443
@ -69,21 +69,17 @@ pub async fn subcommand_crossrepo<'a>(
|
||||
(VERIFY_WC_SUBCOMMAND, Some(sub_sub_m)) => {
|
||||
let (source_repo, target_repo, mapping) =
|
||||
get_source_target_repos_and_mapping(fb, logger, matches).await?;
|
||||
let source_repo_id = source_repo.get_repoid();
|
||||
|
||||
let (_, source_repo_config) = args::get_config_by_repoid(fb, matches, source_repo_id)?;
|
||||
|
||||
let live_commit_sync_config: Arc<dyn LiveCommitSyncConfig> =
|
||||
Arc::new(live_commit_sync_config);
|
||||
let commit_syncer = {
|
||||
let commit_sync_repos = get_large_to_small_commit_sync_repos(
|
||||
&ctx,
|
||||
source_repo,
|
||||
target_repo,
|
||||
&source_repo_config,
|
||||
&live_commit_sync_config,
|
||||
)?;
|
||||
CommitSyncer::new(
|
||||
mapping,
|
||||
commit_sync_repos,
|
||||
Arc::new(live_commit_sync_config),
|
||||
)
|
||||
CommitSyncer::new(mapping, commit_sync_repos, live_commit_sync_config)
|
||||
};
|
||||
|
||||
let large_hash = {
|
||||
@ -322,9 +318,10 @@ async fn subcommand_verify_bookmarks(
|
||||
live_commit_sync_config: Arc<dyn LiveCommitSyncConfig>,
|
||||
) -> Result<(), SubcommandError> {
|
||||
let commit_sync_repos = get_large_to_small_commit_sync_repos(
|
||||
&ctx,
|
||||
source_repo.clone(),
|
||||
target_repo.clone(),
|
||||
&source_repo_config,
|
||||
&live_commit_sync_config,
|
||||
)?;
|
||||
let commit_syncer =
|
||||
CommitSyncer::new(mapping.clone(), commit_sync_repos, live_commit_sync_config);
|
||||
@ -561,54 +558,50 @@ pub fn build_subcommand<'a, 'b>() -> App<'a, 'b> {
|
||||
}
|
||||
|
||||
fn get_large_to_small_commit_sync_repos(
|
||||
ctx: &CoreContext,
|
||||
source_repo: BlobRepo,
|
||||
target_repo: BlobRepo,
|
||||
repo_config: &RepoConfig,
|
||||
live_commit_sync_config: &Arc<dyn LiveCommitSyncConfig>,
|
||||
) -> Result<CommitSyncRepos, Error> {
|
||||
repo_config
|
||||
.commit_sync_config
|
||||
.as_ref()
|
||||
.ok_or_else(|| format_err!("missing CommitSyncMapping config"))
|
||||
.and_then(|commit_sync_config| {
|
||||
let (large_repo, small_repo) = if commit_sync_config.large_repo_id
|
||||
== source_repo.get_repoid()
|
||||
&& commit_sync_config
|
||||
.small_repos
|
||||
.contains_key(&target_repo.get_repoid())
|
||||
{
|
||||
(source_repo, target_repo)
|
||||
} else if commit_sync_config.large_repo_id == target_repo.get_repoid()
|
||||
&& commit_sync_config
|
||||
.small_repos
|
||||
.contains_key(&source_repo.get_repoid())
|
||||
{
|
||||
(target_repo, source_repo)
|
||||
} else {
|
||||
return Err(format_err!(
|
||||
"CommitSyncMapping incompatible with source repo {:?} and target repo {:?}",
|
||||
source_repo.get_repoid(),
|
||||
target_repo.get_repoid()
|
||||
));
|
||||
};
|
||||
let commit_sync_config =
|
||||
live_commit_sync_config.get_current_commit_sync_config(ctx, source_repo.get_repoid())?;
|
||||
|
||||
let bookmark_renamer =
|
||||
get_large_to_small_renamer(commit_sync_config, small_repo.get_repoid())?;
|
||||
let reverse_bookmark_renamer =
|
||||
get_small_to_large_renamer(commit_sync_config, small_repo.get_repoid())?;
|
||||
let mover = get_large_to_small_mover(&commit_sync_config, small_repo.get_repoid())?;
|
||||
let reverse_mover =
|
||||
get_small_to_large_mover(&commit_sync_config, small_repo.get_repoid())?;
|
||||
let (large_repo, small_repo) = if commit_sync_config.large_repo_id == source_repo.get_repoid()
|
||||
&& commit_sync_config
|
||||
.small_repos
|
||||
.contains_key(&target_repo.get_repoid())
|
||||
{
|
||||
(source_repo, target_repo)
|
||||
} else if commit_sync_config.large_repo_id == target_repo.get_repoid()
|
||||
&& commit_sync_config
|
||||
.small_repos
|
||||
.contains_key(&source_repo.get_repoid())
|
||||
{
|
||||
(target_repo, source_repo)
|
||||
} else {
|
||||
return Err(format_err!(
|
||||
"CommitSyncMapping incompatible with source repo {:?} and target repo {:?}",
|
||||
source_repo.get_repoid(),
|
||||
target_repo.get_repoid()
|
||||
));
|
||||
};
|
||||
|
||||
Ok(CommitSyncRepos::LargeToSmall {
|
||||
large_repo,
|
||||
small_repo,
|
||||
mover,
|
||||
reverse_mover,
|
||||
bookmark_renamer,
|
||||
reverse_bookmark_renamer,
|
||||
version_name: commit_sync_config.version_name.clone(),
|
||||
})
|
||||
})
|
||||
let bookmark_renamer =
|
||||
get_large_to_small_renamer(&commit_sync_config, small_repo.get_repoid())?;
|
||||
let reverse_bookmark_renamer =
|
||||
get_small_to_large_renamer(&commit_sync_config, small_repo.get_repoid())?;
|
||||
let mover = get_large_to_small_mover(&commit_sync_config, small_repo.get_repoid())?;
|
||||
let reverse_mover = get_small_to_large_mover(&commit_sync_config, small_repo.get_repoid())?;
|
||||
|
||||
Ok(CommitSyncRepos::LargeToSmall {
|
||||
large_repo,
|
||||
small_repo,
|
||||
mover,
|
||||
reverse_mover,
|
||||
bookmark_renamer,
|
||||
reverse_bookmark_renamer,
|
||||
version_name: commit_sync_config.version_name.clone(),
|
||||
})
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
Loading…
Reference in New Issue
Block a user