status: show untracked files

This commit is contained in:
Christian Stoitner 2024-12-17 21:23:38 +01:00
parent b30ec5e483
commit f891e16053
2 changed files with 14 additions and 1 deletions

View file

@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
use std::io;
use itertools::Itertools;
use jj_lib::copies::CopyRecords;
use jj_lib::repo::Repo;
@ -47,7 +49,7 @@ pub(crate) fn cmd_status(
command: &CommandHelper,
args: &StatusArgs,
) -> Result<(), CommandError> {
let (workspace_command, _snapshot_stats) = command.workspace_helper_with_stats(ui)?;
let (workspace_command, snapshot_stats) = command.workspace_helper_with_stats(ui)?;
let repo = workspace_command.repo();
let maybe_wc_commit = workspace_command
.get_wc_commit_id()
@ -85,6 +87,16 @@ pub(crate) fn cmd_status(
)?;
}
// TODO: make sure this always display all untracked non-ignored files, even
// when using watchman. See https://github.com/jj-vcs/jj/commit/168c7979feab40d58f49fe19683975697a7bc089 for details.
formatter.with_label("diff", |formatter| {
for path in snapshot_stats.untracked_paths.keys() {
let ui_path = workspace_command.path_converter().format_file_path(path);
writeln!(formatter.labeled("untracked"), "? {ui_path}")?;
}
io::Result::Ok(())
})?;
// TODO: Conflicts should also be filtered by the `matcher`. See the related
// TODO on `MergedTree::conflicts()`.
let conflicts = wc_commit.tree()?.conflicts().collect_vec();

View file

@ -93,6 +93,7 @@
"diff added" = { fg = "green" }
"diff token" = { underline = true }
"diff modified" = "cyan"
"diff untracked" = "magenta"
"diff renamed" = "cyan"
"diff copied" = "green"
"diff access-denied" = { bg = "red" }