just playing with tangled
at gvimdiff 44 lines 1.5 kB view raw
1// Copyright 2025 The Jujutsu Authors 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// https://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15use std::io::Write as _; 16 17use jj_lib::repo::Repo as _; 18use tracing::instrument; 19 20use crate::cli_util::CommandHelper; 21use crate::command_error::user_error; 22use crate::command_error::CommandError; 23use crate::ui::Ui; 24 25/// Show the underlying Git directory of a repository using the Git backend 26#[derive(clap::Args, Clone, Debug)] 27pub struct GitRootArgs {} 28 29#[instrument(skip_all)] 30pub fn cmd_git_root( 31 ui: &mut Ui, 32 command: &CommandHelper, 33 _args: &GitRootArgs, 34) -> Result<(), CommandError> { 35 let workspace_command = command.workspace_helper(ui)?; 36 let store = workspace_command.repo().store(); 37 let git_backend = jj_lib::git::get_git_backend(store)?; 38 let root = git_backend 39 .git_repo_path() 40 .to_str() 41 .ok_or_else(|| user_error("The workspace root is not valid UTF-8"))?; 42 writeln!(ui.stdout(), "{root}")?; 43 Ok(()) 44}