Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: gitui-org/gitui
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.26.0
Choose a base ref
...
head repository: gitui-org/gitui
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Loading
Showing with 4,452 additions and 1,234 deletions.
  1. 0 .cargo/{config → config.toml}
  2. +23 −5 .github/workflows/cd.yml
  3. +35 −0 .github/workflows/ci.yml
  4. +11 −5 .github/workflows/nightly.yml
  5. +70 −2 CHANGELOG.md
  6. +1,764 −481 Cargo.lock
  7. +20 −17 Cargo.toml
  8. +1 −1 LICENSE.md
  9. +18 −4 Makefile
  10. +1 −1 NIGHTLIES.md
  11. +7 −6 README.md
  12. +4 −4 THEMES.md
  13. BIN assets/add-remote.png
  14. BIN assets/gitui-signing.png
  15. BIN assets/logo.png
  16. BIN assets/syntax-highlighting-blame.png
  17. +11 −7 asyncgit/Cargo.toml
  18. +5 −5 asyncgit/src/asyncjob/mod.rs
  19. +4 −6 asyncgit/src/blame.rs
  20. +2 −2 asyncgit/src/commit_files.rs
  21. +4 −4 asyncgit/src/diff.rs
  22. +24 −0 asyncgit/src/error.rs
  23. +5 −4 asyncgit/src/lib.rs
  24. +1 −1 asyncgit/src/pull.rs
  25. +1 −1 asyncgit/src/push.rs
  26. +1 −1 asyncgit/src/push_tags.rs
  27. +161 −5 asyncgit/src/revlog.rs
  28. +2 −2 asyncgit/src/status.rs
  29. +1 −1 asyncgit/src/sync/blame.rs
  30. +1 −1 asyncgit/src/sync/branch/merge_ff.rs
  31. +8 −8 asyncgit/src/sync/branch/merge_rebase.rs
  32. +2 −2 asyncgit/src/sync/branch/mod.rs
  33. +5 −8 asyncgit/src/sync/commit.rs
  34. +6 −8 asyncgit/src/sync/commit_details.rs
  35. +2 −1 asyncgit/src/sync/commit_filter.rs
  36. +1 −1 asyncgit/src/sync/commits_info.rs
  37. +0 −1 asyncgit/src/sync/config.rs
  38. +70 −31 asyncgit/src/sync/cred.rs
  39. +1 −1 asyncgit/src/sync/diff.rs
  40. +4 −8 asyncgit/src/sync/hooks.rs
  41. +1 −1 asyncgit/src/sync/hunks.rs
  42. +115 −6 asyncgit/src/sync/logwalker.rs
  43. +117 −114 asyncgit/src/sync/mod.rs
  44. +143 −1 asyncgit/src/sync/remotes/mod.rs
  45. +52 −70 asyncgit/src/sync/remotes/push.rs
  46. +1 −1 asyncgit/src/sync/repository.rs
  47. +1 −2 asyncgit/src/sync/reword.rs
  48. +2 −0 asyncgit/src/sync/sign.rs
  49. +1 −1 asyncgit/src/sync/staging/stage_tracked.rs
  50. +2 −5 asyncgit/src/sync/stash.rs
  51. +1 −1 asyncgit/src/sync/submodules.rs
  52. +1 −1 asyncgit/src/sync/tags.rs
  53. +3 −3 asyncgit/src/sync/tree.rs
  54. +5 −8 asyncgit/src/sync/utils.rs
  55. +15 −2 build.rs
  56. +34 −11 deny.toml
  57. +3 −2 filetreelist/Cargo.toml
  58. +3 −6 filetreelist/src/filetree.rs
  59. +2 −3 filetreelist/src/filetreeitems.rs
  60. +6 −3 filetreelist/src/lib.rs
  61. +2 −2 git2-hooks/Cargo.toml
  62. +2 −6 git2-hooks/src/error.rs
  63. +45 −4 git2-hooks/src/hookspath.rs
  64. +4 −4 git2-hooks/src/lib.rs
  65. +2 −2 git2-testing/src/lib.rs
  66. +2 −6 scopetime/src/lib.rs
  67. +65 −10 src/app.rs
  68. +18 −0 src/clipboard.rs
  69. +5 −5 src/components/changes.rs
  70. +16 −12 src/components/commit_details/details.rs
  71. +2 −2 src/components/commit_details/mod.rs
  72. +5 −6 src/components/commitlist.rs
  73. +4 −6 src/components/diff.rs
  74. +1 −1 src/components/mod.rs
  75. +4 −4 src/components/revision_files.rs
  76. +1 −1 src/components/status_tree.rs
  77. +5 −5 src/components/textinput.rs
  78. +1 −1 src/components/utils/logitems.rs
  79. +1 −1 src/components/utils/statustree.rs
  80. +1 −1 src/input.rs
  81. +11 −1 src/keys/key_list.rs
  82. +17 −17 src/keys/symbols.rs
  83. +3 −2 src/main.rs
  84. +6 −7 src/popups/blame_file.rs
  85. +114 −115 src/popups/branchlist.rs
  86. +2 −1 src/popups/commit.rs
  87. +1 −1 src/popups/compare_commits.rs
  88. +5 −1 src/popups/confirm.rs
  89. +214 −0 src/popups/create_remote.rs
  90. +1 −1 src/popups/externaleditor.rs
  91. +1 −1 src/popups/fetch.rs
  92. +4 −8 src/popups/file_revlog.rs
  93. +2 −2 src/popups/fuzzy_find.rs
  94. +11 −2 src/popups/help.rs
  95. +1 −1 src/popups/inspect_commit.rs
  96. +2 −2 src/popups/log_search.rs
  97. +8 −0 src/popups/mod.rs
  98. +3 −3 src/popups/msg.rs
  99. +1 −1 src/popups/options.rs
  100. +14 −11 src/popups/pull.rs
  101. +3 −3 src/popups/push.rs
  102. +3 −3 src/popups/push_tags.rs
  103. +475 −0 src/popups/remotelist.rs
  104. +176 −0 src/popups/rename_remote.rs
  105. +1 −1 src/popups/submodules.rs
  106. +8 −9 src/popups/taglist.rs
  107. +152 −0 src/popups/update_remote_url.rs
  108. +11 −0 src/queue.rs
  109. +149 −0 src/strings.rs
  110. +7 −6 src/tabs/revlog.rs
  111. +1 −1 src/tabs/stashing.rs
  112. +4 −4 src/tabs/stashlist.rs
  113. +21 −16 src/tabs/status.rs
  114. +6 −6 src/ui/reflow.rs
  115. +2 −2 src/ui/scrollbar.rs
  116. +4 −6 src/ui/scrolllist.rs
  117. +14 −22 src/ui/stateful_paragraph.rs
  118. +14 −6 src/ui/style.rs
  119. +10 −17 src/ui/syntax_text.rs
File renamed without changes.
28 changes: 23 additions & 5 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@ on:
push:
tags:
- '*'
workflow_dispatch:

jobs:
release:
@@ -34,6 +35,8 @@ jobs:

- name: Build
if: matrix.os != 'ubuntu-22.04'
env:
GITUI_RELEASE: 1
run: cargo build
- name: Run tests
if: matrix.os != 'ubuntu-22.04'
@@ -68,16 +71,31 @@ jobs:
- name: Build Release Mac
if: matrix.os == 'macos-latest'
run: GITUI_RELEASE=1 make release-mac
env:
GITUI_RELEASE: 1
run: make release-mac
- name: Build Release Mac x86
if: matrix.os == 'macos-latest'
env:
GITUI_RELEASE: 1
run: |
rustup target add x86_64-apple-darwin
make release-mac-x86
- name: Build Release Linux
if: matrix.os == 'ubuntu-latest'
run: GITUI_RELEASE=1 make release-linux-musl
env:
GITUI_RELEASE: 1
run: make release-linux-musl
- name: Build Release Win
if: matrix.os == 'windows-latest'
run: GITUI_RELEASE=1 make release-win
env:
GITUI_RELEASE: 1
run: make release-win
- name: Build Release Linux ARM
if: matrix.os == 'ubuntu-22.04'
run: GITUI_RELEASE=1 make release-linux-arm
env:
GITUI_RELEASE: 1
run: make release-linux-arm

- name: Set SHA
if: matrix.os == 'macos-latest'
@@ -102,7 +120,7 @@ jobs:
./release/*.msi
- name: Bump homebrew-core formula
uses: mislav/bump-homebrew-formula-action@v2
uses: mislav/bump-homebrew-formula-action@v3
if: "matrix.os == 'macos-latest' && !contains(github.ref, '-')" # skip prereleases
env:
COMMITTER_TOKEN: ${{ secrets.BREW_TOKEN }}
35 changes: 35 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -41,6 +41,9 @@ jobs:
toolchain: ${{ matrix.rust }}
components: clippy

- name: Rustup Show
run: rustup show

- name: Build Debug
run: |
cargo build
@@ -171,6 +174,38 @@ jobs:
make build-linux-arm-release
ls -l ./target/aarch64-unknown-linux-gnu/release/gitui || ls -l ./target/armv7-unknown-linux-gnueabihf/release/gitui || ls -l ./target/arm-unknown-linux-gnueabihf/release/gitui
build-apple-x86:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
rust: [nightly, stable, '1.70']
continue-on-error: ${{ matrix.rust == 'nightly' }}
steps:
- uses: actions/checkout@v4

- name: Restore cargo cache
uses: Swatinem/rust-cache@v2
env:
cache-name: ci
with:
key: apple-x86-${{ env.cache-name }}-${{ matrix.rust }}

- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- name: Setup target
run: rustup target add x86_64-apple-darwin

- name: Build Debug
run: |
make build-apple-x86-debug
- name: Build Release
run: |
make build-apple-x86-release
ls -l ./target/x86_64-apple-darwin/release/gitui
linting:
name: Lints
runs-on: ubuntu-latest
16 changes: 11 additions & 5 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Build Nightly Releases

on:
on:
schedule:
- cron: '0 3 * * *'
workflow_dispatch:
@@ -34,7 +34,7 @@ jobs:
with:
components: clippy

# ideally we trigger the nightly build/deploy only if the normal nightly CI finished successfully
# ideally we trigger the nightly build/deploy only if the normal nightly CI finished successfully
- name: Run tests
if: matrix.os != 'ubuntu-22.04'
run: make test
@@ -69,6 +69,11 @@ jobs:
- name: Build Release Mac
if: matrix.os == 'macos-latest'
run: make release-mac
- name: Build Release Mac x86
if: matrix.os == 'macos-latest'
run: |
rustup target add x86_64-apple-darwin
make release-mac-x86
- name: Build Release Linux
if: matrix.os == 'ubuntu-latest'
run: make release-linux-musl
@@ -89,7 +94,7 @@ jobs:
aws s3 cp ./release/gitui-linux-armv7.tar.gz $AWS_BUCKET_NAME
aws s3 cp ./release/gitui-linux-arm.tar.gz $AWS_BUCKET_NAME
aws s3 cp ./release/gitui-linux-aarch64.tar.gz $AWS_BUCKET_NAME
- name: Ubuntu Latest Upload Artifact
if: matrix.os == 'ubuntu-latest'
env:
@@ -100,16 +105,17 @@ jobs:
aws s3 cp ./release/gitui-linux-x86_64.tar.gz $AWS_BUCKET_NAME
- name: MacOS Upload Artifact
if: matrix.os == 'macos-latest'
if: matrix.os == 'macos-latest'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_KEY_SECRET }}
AWS_DEFAULT_REGION: ${{ secrets.AWS_REGION }}
run: |
aws s3 cp ./release/gitui-mac.tar.gz $AWS_BUCKET_NAME
aws s3 cp ./release/gitui-mac-x86.tar.gz $AWS_BUCKET_NAME
- name: Windows Upload Artifact
if: matrix.os == 'windows-latest'
if: matrix.os == 'windows-latest'
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_KEY_SECRET }}
72 changes: 70 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -7,7 +7,74 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased

## [0.26.0] - 2024-04-14
### Changed
* improve syntax highlighting file detection [[@acuteenvy](https://github.com/acuteenvy)] ([#2524](https://github.com/extrawurst/gitui/pull/2524))
* After commit: jump back to unstaged area [[@tommady](https://github.com/tommady)] ([#2476](https://github.com/extrawurst/gitui/issues/2476))

## [0.27.0] - 2024-01-14

**new: manage remotes**

![add-remote](assets/add-remote.png)

### Breaking Changes
* use default shell instead of bash on Unix-like OS [[@yerke](https://github.com/yerke)] ([#2343](https://github.com/extrawurst/gitui/pull/2343))

### Added
* add popups for viewing, adding, updating and removing remotes [[@robin-thoene](https://github.com/robin-thoene)] ([#2172](https://github.com/extrawurst/gitui/issues/2172))
* support for `Copy Path` action in WSL [[@johnDeSilencio](https://github.com/johnDeSilencio)] ([#2413](https://github.com/extrawurst/gitui/pull/2413))
* help popup scrollbar [[@wugeer](https://github.com/wugeer)] ([#2388](https://github.com/extrawurst/gitui/pull/2388))

### Fixes
* respect env vars like `GIT_CONFIG_GLOBAL` ([#2298](https://github.com/extrawurst/gitui/issues/2298))
* Set `CREATE_NO_WINDOW` flag when executing Git hooks on Windows ([#2371](https://github.com/extrawurst/gitui/pull/2371))

## [0.26.3] - 2024-06-02

### Breaking Changes

#### Theme file format

**note:** this actually applied to the previous release already: `0.26.2`

Ratatui (upstream terminal rendering crate) changed its serialization format for Colors. So the theme files have to be adjusted.

`selection_fg: Some(White)` -> `selection_fg: Some("White")`

but this also allows us now to define colors in the common hex format:

`selection_fg: Some(Rgb(0,255,0))` -> `selection_fg: Some("#00ff00")`

Checkout [THEMES.md](./THEMES.md) for more info.

### Added
* due to github runner changes, the regular mac build is now arm64, so we added support for intel x86 apple build in nightlies and releases (via separat artifact)
* support `BUILD_GIT_COMMIT_ID` enabling builds from `git archive` generated source tarballs or other outside a git repo [[@alerque](https://github.com/alerque)] ([#2187](https://github.com/extrawurst/gitui/pull/2187))

### Fixes
* update yanked dependency to `libc` to fix building with `--locked`.
* document breaking change in theme file format.

## [0.26.2] - 2024-04-17

**note:** this release introduced a breaking change documented in the following release: `0.26.3`

### Fixes
* fix `cargo install` without `--locked` ([#2098](https://github.com/extrawurst/gitui/issues/2098))
* respect configuration for remote when fetching (also applies to pulling) [[@cruessler](https://github.com/cruessler)] ([#1093](https://github.com/extrawurst/gitui/issues/1093))
* add `:` character to sign-off trailer to comply with Conventinoal Commits standard [@semioticrobotic](https://github.com/semioticrobotic) ([#2196](https://github.com/extrawurst/gitui/issues/2196))

### Added
* support overriding `build_date` for [reproducible builds](https://reproducible-builds.org/) [[@bmwiedemann](https://github.com/bmwiedemann)] ([#2202](https://github.com/extrawurst/gitui/pull/2202))

## [0.26.0+1] - 2024-04-14

**0.26.1**
this release has no changes to `0.26.0` but provides windows binaries that were missing before.

**commit signing**

![signing](assets/gitui-signing.png)

### Added
* sign commits using openpgp [[@hendrikmaus](https://github.com/hendrikmaus)] ([#97](https://github.com/extrawurst/gitui/issues/97))
@@ -16,14 +83,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
* more version info in `gitui -V` and `help popup` (including git hash)
* support `core.commitChar` filtering [[@concelare](https://github.com/concelare)] ([#2136](https://github.com/extrawurst/gitui/issues/2136))
* allow reset in branch popup ([#2170](https://github.com/extrawurst/gitui/issues/2170))
* respect configuration for remote when pushing [[@cruessler](https://github.com/cruessler)]
* respect configuration for remote when pushing [[@cruessler](https://github.com/cruessler)] ([#2156](https://github.com/extrawurst/gitui/issues/2156))

### Changed
* Make info and error message popups scrollable [[@MichaelAug](https://github.com/MichaelAug)] ([#1138](https://github.com/extrawurst/gitui/issues/1138))
* clarify `x86_64` linux binary in artifact names: `gitui-linux-x86_64.tar.gz` (formerly known as `musl`) ([#2148](https://github.com/extrawurst/gitui/issues/2148))

### Fixes
* add syntax highlighting support for more file types, e.g. Typescript, TOML, etc. [[@martihomssoler](https://github.com/martihomssoler)] ([#2005](https://github.com/extrawurst/gitui/issues/2005))
* windows release deployment was broken (reason for release `0.26.1`) [218d739](https://github.com/extrawurst/gitui/commit/218d739b035a034b7bf547629d24787909f467bf)

## [0.25.2] - 2024-03-22

Loading