Skip to content

Commit 6a9c58f

Browse files
committed
Control which command is lenient or not. That way gix-config can be lenient.
1 parent 0235111 commit 6a9c58f

File tree

1 file changed

+37
-14
lines changed

1 file changed

+37
-14
lines changed

Diff for: src/plumbing/main.rs

+37-14
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,15 @@ pub fn main() -> Result<()> {
5353
let object_hash = args.object_hash;
5454
use git_repository as git;
5555
let repository = args.repository;
56-
let repository = move || {
56+
enum Mode {
57+
Strict,
58+
Lenient,
59+
}
60+
let repository = move |mode: Mode| {
5761
let mut mapping: git::sec::trust::Mapping<git::open::Options> = Default::default();
58-
mapping.full = mapping.full.strict_config(true);
59-
mapping.reduced = mapping.reduced.strict_config(true);
62+
let toggle = matches!(mode, Mode::Strict);
63+
mapping.full = mapping.full.strict_config(toggle);
64+
mapping.reduced = mapping.reduced.strict_config(toggle);
6065
git::ThreadSafeRepository::discover_opts(repository, Default::default(), mapping)
6166
.map(git::Repository::from)
6267
.map(|r| r.apply_environment())
@@ -88,7 +93,7 @@ pub fn main() -> Result<()> {
8893
progress,
8994
progress_keep_open,
9095
None,
91-
move |_progress, out, _err| core::repository::config::list(repository()?, filter, format, out),
96+
move |_progress, out, _err| core::repository::config::list(repository(Mode::Lenient)?, filter, format, out),
9297
)
9398
.map(|_| ()),
9499
Subcommands::Free(subcommands) => match subcommands {
@@ -505,7 +510,7 @@ pub fn main() -> Result<()> {
505510
core::repository::verify::PROGRESS_RANGE,
506511
move |progress, out, _err| {
507512
core::repository::verify::integrity(
508-
repository()?,
513+
repository(Mode::Strict)?,
509514
out,
510515
progress,
511516
&should_interrupt,
@@ -525,7 +530,9 @@ pub fn main() -> Result<()> {
525530
progress,
526531
progress_keep_open,
527532
None,
528-
move |_progress, out, _err| core::repository::revision::previous_branches(repository()?, out, format),
533+
move |_progress, out, _err| {
534+
core::repository::revision::previous_branches(repository(Mode::Lenient)?, out, format)
535+
},
529536
),
530537
revision::Subcommands::Explain { spec } => prepare_and_run(
531538
"revision-explain",
@@ -547,7 +554,7 @@ pub fn main() -> Result<()> {
547554
None,
548555
move |_progress, out, _err| {
549556
core::repository::revision::resolve(
550-
repository()?,
557+
repository(Mode::Strict)?,
551558
specs,
552559
out,
553560
core::repository::revision::resolve::Options {
@@ -577,7 +584,7 @@ pub fn main() -> Result<()> {
577584
None,
578585
move |_progress, out, err| {
579586
core::repository::commit::describe(
580-
repository()?,
587+
repository(Mode::Strict)?,
581588
rev_spec.as_deref(),
582589
out,
583590
err,
@@ -606,7 +613,14 @@ pub fn main() -> Result<()> {
606613
progress_keep_open,
607614
None,
608615
move |_progress, out, _err| {
609-
core::repository::tree::entries(repository()?, treeish.as_deref(), recursive, extended, format, out)
616+
core::repository::tree::entries(
617+
repository(Mode::Strict)?,
618+
treeish.as_deref(),
619+
recursive,
620+
extended,
621+
format,
622+
out,
623+
)
610624
},
611625
),
612626
tree::Subcommands::Info { treeish, extended } => prepare_and_run(
@@ -616,7 +630,14 @@ pub fn main() -> Result<()> {
616630
progress_keep_open,
617631
None,
618632
move |_progress, out, err| {
619-
core::repository::tree::info(repository()?, treeish.as_deref(), extended, format, out, err)
633+
core::repository::tree::info(
634+
repository(Mode::Strict)?,
635+
treeish.as_deref(),
636+
extended,
637+
format,
638+
out,
639+
err,
640+
)
620641
},
621642
),
622643
},
@@ -627,15 +648,15 @@ pub fn main() -> Result<()> {
627648
progress,
628649
progress_keep_open,
629650
None,
630-
move |_progress, out, _err| core::repository::odb::entries(repository()?, format, out),
651+
move |_progress, out, _err| core::repository::odb::entries(repository(Mode::Strict)?, format, out),
631652
),
632653
odb::Subcommands::Info => prepare_and_run(
633654
"odb-info",
634655
verbose,
635656
progress,
636657
progress_keep_open,
637658
None,
638-
move |_progress, out, err| core::repository::odb::info(repository()?, format, out, err),
659+
move |_progress, out, err| core::repository::odb::info(repository(Mode::Strict)?, format, out, err),
639660
),
640661
},
641662
Subcommands::Mailmap(cmd) => match cmd {
@@ -645,7 +666,9 @@ pub fn main() -> Result<()> {
645666
progress,
646667
progress_keep_open,
647668
None,
648-
move |_progress, out, err| core::repository::mailmap::entries(repository()?, format, out, err),
669+
move |_progress, out, err| {
670+
core::repository::mailmap::entries(repository(Mode::Lenient)?, format, out, err)
671+
},
649672
),
650673
},
651674
Subcommands::Exclude(cmd) => match cmd {
@@ -662,7 +685,7 @@ pub fn main() -> Result<()> {
662685
move |_progress, out, _err| {
663686
use git::bstr::ByteSlice;
664687
core::repository::exclude::query(
665-
repository()?,
688+
repository(Mode::Strict)?,
666689
if pathspecs.is_empty() {
667690
Box::new(
668691
stdin_or_bail()?

0 commit comments

Comments
 (0)