Skip to content

v1.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 29 Oct 20:37

Git Manager 1.3.0

This release adds worktrees and a branch filter for repositories with many branches, lets you resize commit messages, makes big repositories faster, and fixes several glitches in History and the diff.

Git 2.23 or newer is now required. With an older Git the app shows a banner at startup. Most things still work, but branches checked out in other worktrees are not marked.

New

  • Worktrees: check out several branches at once, each in a folder of its own.
    • The new Worktrees section in the sidebar lists them. Double-click one to open it; it appears in Repositories under its main repository.
    • New worktree works from an existing branch, a new branch (it tracks the remote branch you start it from), or a commit in History. Open it from the section's +, Repository → New Worktree…, Check out in new worktree… on a branch, or New worktree here… on a commit. The folder defaults to <repository>-<branch> next to the repository.
    • A worktree's menu opens it or its folder, locks or unlocks it, and removes it. A worktree with uncommitted changes asks a second time before they are deleted. Prune missing worktrees clears the ones whose folders are gone.
    • A branch checked out in another worktree shows a mark. Checking it out offers to open that worktree instead of failing, and it can't be deleted while it is checked out there.
  • Filter branches: a box above the branch lists searches local and remote branches together as you type.
    • Words can be in any order, and * and ? work as wildcards (feature/*). Matches are highlighted, and the section headers show how many match.
    • Ctrl+Shift+B (⌘⇧B on macOS) jumps to it.
  • Branch folders: branches are grouped into folders at each / (feature/, bugfix/), and remote branches under one folder per remote. The folders holding your current branch open by themselves, and the app remembers which folders you open in each repository.
  • Resizable commit messages:
    • In the History inspector, a long commit message is no longer limited to three lines: drag the bar under it to show more.
    • In Changes, the message box grows as you type, and the bar above the commit form sets its size.
    • Both sizes are remembered.

Improvements

  • Fetch no longer blocks the app: while a fetch, pull or push waits on the network, you can still browse History. Clicking a commit during a stalled fetch now shows it in about half a second instead of waiting for the fetch.
  • Faster startup: with 20 saved repositories, the list now appears in under a second instead of about 4 seconds.
  • Less background work:
    • Refreshes count ahead/behind only for branches that moved: with 60 tracking branches, a refresh takes about 0.2 s instead of 0.8–0.9 s.
    • Staging all files starts 12 Git processes instead of 30.
    • Saving a file in the repository starts half as many Git processes as before.
  • Stop a stuck action: a local action still running after 10 seconds, such as a commit hook that waits for input, shows Stop. Stop ends Git and the helpers it started, and removes a lock file Git left behind. Quitting the app also stops any Git still running.
  • Huge commits: commit details list up to 20,000 files and comparisons up to 5,000, with a note for the rest.

Fixes

  • History could stay empty after switching between repositories while a page was loading.
  • Adding or deleting a tag or branch reloaded History from the top. It now keeps your scroll position and selected commit.
  • Moving between commits blanked the detail and diff while the next one loaded. They now stay on screen, dimmed.
  • Staging a hunk or line jumped the diff back to the top.
  • Hunk actions could act on a diff that was about to be replaced.
  • Commit messages showed garbled characters when Git was set to a different i18n.logOutputEncoding.
  • A saved repository list with a damaged entry dropped that repository. It is now repaired.
  • Shift+F10 on a file that first had to scroll into view could close its menu right away.
  • A divider that disappeared while being dragged (the view changed) could leave the resize cursor stuck.