diff rust/rhg/src/commands/status.rs @ 52341:c2814b698df8

rhg: support rhg status --no-copies This makes `rhg st --rev A --rev B --no-copies` work without fallback to Python, where previously `--config ui.statuscopies=False` was necessary.
author Mitchell Kember <mkember@janestreet.com>
date Mon, 25 Nov 2024 15:34:58 -0500
parents 22d24f6d6411
children 53dc147bc8b0
line wrap: on
line diff
--- a/rust/rhg/src/commands/status.rs	Sat Nov 30 17:13:54 2024 -0500
+++ b/rust/rhg/src/commands/status.rs	Mon Nov 25 15:34:58 2024 -0500
@@ -122,6 +122,12 @@
                 .long("copies"),
         )
         .arg(
+            Arg::new("no-copies")
+                .action(clap::ArgAction::SetTrue)
+                .long("no-copies")
+                .overrides_with("copies"),
+        )
+        .arg(
             Arg::new("print0")
                 .help("end filenames with NUL, for use with xargs")
                 .short('0')
@@ -292,9 +298,14 @@
         }
     };
     let no_status = args.get_flag("no-status");
-    let list_copies = all
-        || args.get_flag("copies")
-        || config.get_bool(b"ui", b"statuscopies")?;
+    let list_copies = if args.get_flag("copies") {
+        true
+    } else if args.get_flag("no-copies") {
+        false
+    } else {
+        config.get_bool(b"ui", b"statuscopies")?
+    };
+    let list_copies = list_copies || all;
 
     let repo = invocation.repo?;
     let revpair = parse_revpair(repo, revs.map(|i| i.cloned().collect()))?;