fix(git_branch): correct variable name for remote branch (#3897)

This commit is contained in:
David Knaack 2022-04-26 20:02:01 +02:00 committed by GitHub
parent d4d84a592c
commit bd7957f01c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 50 additions and 14 deletions

View File

@ -461,7 +461,7 @@
"default": { "default": {
"always_show_remote": false, "always_show_remote": false,
"disabled": false, "disabled": false,
"format": "on [$symbol$branch]($style)(:[$remote]($style)) ", "format": "on [$symbol$branch(:$remote_branch)]($style) ",
"ignore_branches": [], "ignore_branches": [],
"only_attached": false, "only_attached": false,
"style": "bold purple", "style": "bold purple",
@ -2543,7 +2543,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"format": { "format": {
"default": "on [$symbol$branch]($style)(:[$remote]($style)) ", "default": "on [$symbol$branch(:$remote_branch)]($style) ",
"type": "string" "type": "string"
}, },
"symbol": { "symbol": {

View File

@ -1419,17 +1419,17 @@ The `git_branch` module shows the active branch of the repo in your current dire
### Options ### Options
| Option | Default | Description | | Option | Default | Description |
| -------------------- | -------------------------------- | ---------------------------------------------------------------------------------------- | | -------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| `always_show_remote` | `false` | Shows the remote tracking branch name, even if it is equal to the local branch name. | | `always_show_remote` | `false` | Shows the remote tracking branch name, even if it is equal to the local branch name. |
| `format` | `"on [$symbol$branch]($style) "` | The format for the module. Use `"$branch"` to refer to the current branch name. | | `format` | `"on [$symbol$branch(:$remote_branch)]($style) "` | The format for the module. Use `"$branch"` to refer to the current branch name. |
| `symbol` | `" "` | A format string representing the symbol of git branch. | | `symbol` | `" "` | A format string representing the symbol of git branch. |
| `style` | `"bold purple"` | The style for the module. | | `style` | `"bold purple"` | The style for the module. |
| `truncation_length` | `2^63 - 1` | Truncates a git branch to `N` graphemes. | | `truncation_length` | `2^63 - 1` | Truncates a git branch to `N` graphemes. |
| `truncation_symbol` | `"…"` | The symbol used to indicate a branch name was truncated. You can use `""` for no symbol. | | `truncation_symbol` | `"…"` | The symbol used to indicate a branch name was truncated. You can use `""` for no symbol. |
| `only_attached` | `false` | Only show the branch name when not in a detached `HEAD` state. | | `only_attached` | `false` | Only show the branch name when not in a detached `HEAD` state. |
| `ignore_branches` | `[]` | A list of names to avoid displaying. Useful for "master" or "main". | | `ignore_branches` | `[]` | A list of names to avoid displaying. Useful for "master" or "main". |
| `disabled` | `false` | Disables the `git_branch` module. | | `disabled` | `false` | Disables the `git_branch` module. |
### Variables ### Variables

View File

@ -18,7 +18,7 @@ pub struct GitBranchConfig<'a> {
impl<'a> Default for GitBranchConfig<'a> { impl<'a> Default for GitBranchConfig<'a> {
fn default() -> Self { fn default() -> Self {
GitBranchConfig { GitBranchConfig {
format: "on [$symbol$branch]($style)(:[$remote]($style)) ", format: "on [$symbol$branch(:$remote_branch)]($style) ",
symbol: "", symbol: "",
style: "bold purple", style: "bold purple",
truncation_length: std::i64::MAX, truncation_length: std::i64::MAX,

View File

@ -396,6 +396,42 @@ mod tests {
repo_dir.close() repo_dir.close()
} }
#[test]
fn test_remote() -> io::Result<()> {
let remote_dir = fixture_repo(FixtureProvider::Git)?;
let repo_dir = fixture_repo(FixtureProvider::Git)?;
create_command("git")?
.args(&["checkout", "-b", "test_branch"])
.current_dir(repo_dir.path())
.output()?;
create_command("git")?
.args(&["remote", "add", "--fetch", "remote_repo"])
.arg(remote_dir.path())
.current_dir(repo_dir.path())
.output()?;
create_command("git")?
.args(&["branch", "--set-upstream-to", "remote_repo/master"])
.current_dir(repo_dir.path())
.output()?;
let actual = ModuleRenderer::new("git_branch")
.path(&repo_dir.path())
.config(toml::toml! {
[git_branch]
format = "$branch(:$remote_name/$remote_branch)"
})
.collect();
let expected = Some("test_branch:remote_repo/master");
assert_eq!(expected, actual.as_deref());
repo_dir.close()?;
remote_dir.close()
}
// This test is not possible until we switch to `git status --porcelain` // This test is not possible until we switch to `git status --porcelain`
// where we can mock the env for the specific git process. This is because // where we can mock the env for the specific git process. This is because
// git2 does not care about our mocking and when we set the real `GIT_DIR` // git2 does not care about our mocking and when we set the real `GIT_DIR`