59 lines · 2.0 KB · Rust
RawDownload
// Copyright 2025 The Jujutsu Authors//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at//// https://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License. use jj_lib::default_index::DefaultIndexStore;use jj_lib::repo::Repo as _;use pollster::FutureExt as _; use crate::cli_util::CommandHelper;use crate::command_error::CommandError;use crate::command_error::internal_error;use crate::command_error::user_error;use crate::ui::Ui; /// Build changed-path index#[derive(clap::Args, Clone, Debug)]pub struct DebugIndexChangedPathsArgs {    /// Limit number of revisions to index    #[arg(long, short = 'n', default_value_t = u32::MAX)]    limit: u32,} pub fn cmd_debug_index_changed_paths(    ui: &mut Ui,    command: &CommandHelper,    args: &DebugIndexChangedPathsArgs,) -> Result<(), CommandError> {    let workspace_command = command.workspace_helper(ui)?;    let repo = workspace_command.repo();    let repo_loader = workspace_command.workspace().repo_loader();    let index_store = repo_loader.index_store();    let Some(default_index_store) = index_store.as_any().downcast_ref::<DefaultIndexStore>() else {        return Err(user_error(format!(            "Unsupported index type '{}'",            index_store.name()        )));    };    let index = default_index_store        .build_changed_path_index_at_operation(repo.op_id(), repo.store(), args.limit)        .block_on()        .map_err(internal_error)?;    let stats = index.stats();    writeln!(        ui.status(),        "Finished indexing {:?} commits.",        stats.changed_path_commits_range.unwrap()    )?;    Ok(())}