mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-11 04:15:48 +02:00
Add commitPrefix for defining a prefix for any project
This commit is contained in:
parent
af0897f18f
commit
01ff18dd92
7 changed files with 86 additions and 4 deletions
|
@ -549,6 +549,15 @@ Example:
|
||||||
- Branch name: feature/AB-123
|
- Branch name: feature/AB-123
|
||||||
- Commit message: [AB-123] Adding feature
|
- Commit message: [AB-123] Adding feature
|
||||||
|
|
||||||
|
```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
|
```yaml
|
||||||
git:
|
git:
|
||||||
commitPrefixes:
|
commitPrefixes:
|
||||||
|
|
|
@ -222,6 +222,8 @@ type GitConfig struct {
|
||||||
// If true, do not allow force pushes
|
// If true, do not allow force pushes
|
||||||
DisableForcePushing bool `yaml:"disableForcePushing"`
|
DisableForcePushing bool `yaml:"disableForcePushing"`
|
||||||
// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
|
// 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"`
|
CommitPrefixes map[string]CommitPrefixConfig `yaml:"commitPrefixes"`
|
||||||
// If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
|
// If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
|
||||||
// (This should really be under 'gui', not 'git')
|
// (This should really be under 'gui', not 'git')
|
||||||
|
|
|
@ -220,9 +220,9 @@ func (self *WorkingTreeHelper) prepareFilesForCommit() error {
|
||||||
|
|
||||||
func (self *WorkingTreeHelper) commitPrefixConfigForRepo() *config.CommitPrefixConfig {
|
func (self *WorkingTreeHelper) commitPrefixConfigForRepo() *config.CommitPrefixConfig {
|
||||||
cfg, ok := self.c.UserConfig.Git.CommitPrefixes[self.c.Git().RepoPaths.RepoName()]
|
cfg, ok := self.c.UserConfig.Git.CommitPrefixes[self.c.Git().RepoPaths.RepoName()]
|
||||||
if !ok {
|
if ok {
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
return &cfg
|
return &cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return self.c.UserConfig.Git.CommitPrefix
|
||||||
|
}
|
||||||
|
|
47
pkg/integration/tests/commit/commit_with_global_prefix.go
Normal file
47
pkg/integration/tests/commit/commit_with_global_prefix.go
Normal file
|
@ -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"))
|
||||||
|
},
|
||||||
|
})
|
|
@ -6,7 +6,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var CommitWithPrefix = NewIntegrationTest(NewIntegrationTestArgs{
|
var CommitWithPrefix = NewIntegrationTest(NewIntegrationTestArgs{
|
||||||
Description: "Commit with defined config commitPrefix",
|
Description: "Commit with defined config commitPrefixes",
|
||||||
ExtraCmdArgs: []string{},
|
ExtraCmdArgs: []string{},
|
||||||
Skip: false,
|
Skip: false,
|
||||||
SetupConfig: func(testConfig *config.AppConfig) {
|
SetupConfig: func(testConfig *config.AppConfig) {
|
||||||
|
|
|
@ -72,6 +72,7 @@ var tests = []*components.IntegrationTest{
|
||||||
commit.CommitMultiline,
|
commit.CommitMultiline,
|
||||||
commit.CommitSwitchToEditor,
|
commit.CommitSwitchToEditor,
|
||||||
commit.CommitWipWithPrefix,
|
commit.CommitWipWithPrefix,
|
||||||
|
commit.CommitWithGlobalPrefix,
|
||||||
commit.CommitWithPrefix,
|
commit.CommitWithPrefix,
|
||||||
commit.CreateAmendCommit,
|
commit.CreateAmendCommit,
|
||||||
commit.CreateTag,
|
commit.CreateTag,
|
||||||
|
|
|
@ -539,6 +539,29 @@
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"description": "If true, do not allow force pushes"
|
"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": {
|
"commitPrefixes": {
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue