summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdrian Wannenmacher <tfld@tfld.dev>2023-10-17 08:40:20 +0200
committerGitHub <noreply@github.com>2023-10-17 08:40:20 +0200
commit2be0e73d5b4468c83fd409e335bcaaa6329e80b0 (patch)
treeb527cc77da856162f59619b6f7b2df002e097cbb
parent0e2b3db1d936fe3371473c5ce64e28f0e454ae9b (diff)
Prevent unsigned tagging (#1915)
* prevent creation of tags when tag-signing is configured Co-authored-by: extrawurst <776816+extrawurst@users.noreply.github.com>
-rw-r--r--CHANGELOG.md7
-rw-r--r--src/components/tag_commit.rs21
2 files changed, 21 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f70adb04..61e2589b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,8 +9,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
* `theme.ron` now supports customizing line break symbol ([#1894](https://github.com/extrawurst/gitui/issues/1894))
-* add confirmation for dialog for undo commit ([#1912](https://github.com/extrawurst/gitui/issues/1912))
-
+* add confirmation for dialog for undo commit [[@TeFiLeDo](https://github.com/TeFiLeDo)] ([#1912](https://github.com/extrawurst/gitui/issues/1912))
+
+### Changed
+* do not allow tag when `tag.gpgsign` enabled [[@TeFiLeDo](https://github.com/TeFiLeDo)] ([#1915](https://github.com/extrawurst/gitui/pull/1915))
+
## [0.24.3] - 2023-09-09
### Fixes
diff --git a/src/components/tag_commit.rs b/src/components/tag_commit.rs
index e3f6e435..3919141f 100644
--- a/src/components/tag_commit.rs
+++ b/src/components/tag_commit.rs
@@ -6,11 +6,13 @@ use super::{
use crate::{
keys::{key_match, SharedKeyConfig},
queue::{InternalEvent, NeedsUpdate, Queue},
- strings,
+ strings, try_or_popup,
ui::style::SharedTheme,
};
use anyhow::Result;
-use asyncgit::sync::{self, CommitId, RepoPathRef};
+use asyncgit::sync::{
+ self, get_config_string, CommitId, RepoPathRef,
+};
use crossterm::event::Event;
use ratatui::{backend::Backend, layout::Rect, Frame};
@@ -77,7 +79,7 @@ impl Component for TagCommitComponent {
if key_match(e, self.key_config.keys.enter)
&& self.is_valid_tag()
{
- self.tag();
+ try_or_popup!(self, "tag error:", self.tag());
} else if key_match(
e,
self.key_config.keys.tag_annotate,
@@ -167,8 +169,15 @@ impl TagCommitComponent {
}
}
- ///
- pub fn tag(&mut self) {
+ pub fn tag(&mut self) -> Result<()> {
+ let gpgsign =
+ get_config_string(&self.repo.borrow(), "tag.gpgsign")
+ .ok()
+ .flatten()
+ .and_then(|val| val.parse::<bool>().ok())
+ .unwrap_or_default();
+ anyhow::ensure!(!gpgsign, "config tag.gpgsign=true detected.\ngpg signing not supported.\ndeactivate in your repo/gitconfig to be able to tag without signing.");
+
let (tag_name, tag_annotation) = self.tag_info();
if let Some(commit_id) = self.commit_id {
@@ -199,5 +208,7 @@ impl TagCommitComponent {
}
}
}
+
+ Ok(())
}
}