diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2024-05-01 19:12:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-01 19:12:53 +0200 |
commit | 618fe533f8c6113392eea981d03c65e6da5860bb (patch) | |
tree | fda620709d1f60c87ed4ed72287c7a6aeff6240e | |
parent | af0897f18fc58ecab71c1334823887177cc8bc1f (diff) | |
parent | 01ff18dd925f68e7ebfd21b52803cf5fc05cf2d3 (diff) |
- **PR Description**
Adds a new option `git.comitPrefix` to act similarly to
`git.commitPrefixes`, except, if defined, it applies to any repo that
doesn't have an entry in `git.commitPrefixes`.
- **Please check if the PR fulfills these requirements**
* [x] Cheatsheets are up-to-date (run `go generate ./...`)
* [x] Code has been formatted (see
[here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#code-formatting))
* [x] Tests have been added/updated (see
[here](https://github.com/jesseduffield/lazygit/blob/master/pkg/integration/README.md)
for the integration test guide)
* [x] Text is internationalised (see
[here](https://github.com/jesseduffield/lazygit/blob/master/CONTRIBUTING.md#internationalisation))
* [x] Docs (specifically `docs/Config.md`) have been updated if
necessary
* [x] You've read through your own file changes for silly mistakes etc
-rw-r--r-- | docs/Config.md | 9 | ||||
-rw-r--r-- | pkg/config/user_config.go | 2 | ||||
-rw-r--r-- | pkg/gui/controllers/helpers/working_tree_helper.go | 6 | ||||
-rw-r--r-- | pkg/integration/tests/commit/commit_with_global_prefix.go | 47 | ||||
-rw-r--r-- | pkg/integration/tests/commit/commit_with_prefix.go | 2 | ||||
-rw-r--r-- | pkg/integration/tests/test_list.go | 1 | ||||
-rw-r--r-- | schema/config.json | 23 |
7 files changed, 86 insertions, 4 deletions
diff --git a/docs/Config.md b/docs/Config.md index 077637ae8..d85637429 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -551,6 +551,15 @@ Example: ```yaml git: + commitPrefix: + pattern: "^\\w+\\/(\\w+-\\w+).*" + replace: '[$1] ' +``` + +If you want repository-specific prefixes, you can map them with `commitPrefixes`. If you have both `commitPrefixes` defined and an entry in `commitPrefixes` for the current repo, the `commitPrefixes` entry is given higher precedence. Repository folder names must be an exact match. + +```yaml +git: commitPrefixes: my_project: # This is repository folder name pattern: "^\\w+\\/(\\w+-\\w+).*" diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index c1562fcde..c22594461 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -222,6 +222,8 @@ type GitConfig struct { // If true, do not allow force pushes DisableForcePushing bool `yaml:"disableForcePushing"` // See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix + CommitPrefix *CommitPrefixConfig `yaml:"commitPrefix"` + // See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix CommitPrefixes map[string]CommitPrefixConfig `yaml:"commitPrefixes"` // If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 // (This should really be under 'gui', not 'git') diff --git a/pkg/gui/controllers/helpers/working_tree_helper.go b/pkg/gui/controllers/helpers/working_tree_helper.go index edd7005e9..a97639795 100644 --- a/pkg/gui/controllers/helpers/working_tree_helper.go +++ b/pkg/gui/controllers/helpers/working_tree_helper.go @@ -220,9 +220,9 @@ func (self *WorkingTreeHelper) prepareFilesForCommit() error { func (self *WorkingTreeHelper) commitPrefixConfigForRepo() *config.CommitPrefixConfig { cfg, ok := self.c.UserConfig.Git.CommitPrefixes[self.c.Git().RepoPaths.RepoName()] - if !ok { - return nil + if ok { + return &cfg } - return &cfg + return self.c.UserConfig.Git.CommitPrefix } diff --git a/pkg/integration/tests/commit/commit_with_global_prefix.go b/pkg/integration/tests/commit/commit_with_global_prefix.go new file mode 100644 index 000000000..80835682e --- /dev/null +++ b/pkg/integration/tests/commit/commit_with_global_prefix.go @@ -0,0 +1,47 @@ +package commit + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var CommitWithGlobalPrefix = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Commit with defined config commitPrefix", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(testConfig *config.AppConfig) { + testConfig.UserConfig.Git.CommitPrefix = &config.CommitPrefixConfig{Pattern: "^\\w+\\/(\\w+-\\w+).*", Replace: "[$1]: "} + }, + SetupRepo: func(shell *Shell) { + shell.NewBranch("feature/TEST-001") + shell.CreateFile("test-commit-prefix", "This is foo bar") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + IsEmpty() + + t.Views().Files(). + IsFocused(). + PressPrimaryAction(). + Press(keys.Files.CommitChanges) + + t.ExpectPopup().CommitMessagePanel(). + Title(Equals("Commit summary")). + InitialText(Equals("[TEST-001]: ")). + Type("my commit message"). + Cancel() + + t.Views().Files(). + IsFocused(). + Press(keys.Files.CommitChanges) + + t.ExpectPopup().CommitMessagePanel(). + Title(Equals("Commit summary")). + InitialText(Equals("[TEST-001]: my commit message")). + Type(". Added something else"). + Confirm() + + t.Views().Commits().Focus() + t.Views().Main().Content(Contains("[TEST-001]: my commit message. Added something else")) + }, +}) diff --git a/pkg/integration/tests/commit/commit_with_prefix.go b/pkg/integration/tests/commit/commit_with_prefix.go index fe53327e4..53a6904f4 100644 --- a/pkg/integration/tests/commit/commit_with_prefix.go +++ b/pkg/integration/tests/commit/commit_with_prefix.go @@ -6,7 +6,7 @@ import ( ) var CommitWithPrefix = NewIntegrationTest(NewIntegrationTestArgs{ - Description: "Commit with defined config commitPrefix", + Description: "Commit with defined config commitPrefixes", ExtraCmdArgs: []string{}, Skip: false, SetupConfig: func(testConfig *config.AppConfig) { diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index cdbcc7871..1c94e3bbd 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -72,6 +72,7 @@ var tests = []*components.IntegrationTest{ commit.CommitMultiline, commit.CommitSwitchToEditor, commit.CommitWipWithPrefix, + commit.CommitWithGlobalPrefix, commit.CommitWithPrefix, commit.CreateAmendCommit, commit.CreateTag, diff --git a/schema/config.json b/schema/config.json index 41a8859a4..05a2db151 100644 --- a/schema/config.json +++ b/schema/config.json @@ -539,6 +539,29 @@ "type": "boolean", "description": "If true, do not allow force pushes" }, + "commitPrefix": { + "properties": { + "pattern": { + "type": "string", + "minLength": 1, + "description": "pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use \"^\\\\w+\\\\/(\\\\w+-\\\\w+).*\"", + "examples": [ + "^\\w+\\/(\\w+-\\w+).*" + ] + }, + "replace": { + "type": "string", + "minLength": 1, + "description": "Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use \"[$1] \"", + "examples": [ + "[$1] " + ] + } + }, + "additionalProperties": false, + "type": "object", + "description": "See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix" + }, "commitPrefixes": { "additionalProperties": { "properties": { |