GitX 0.7GitX 0.7 was just released today. This is the latest release since 0.6.3 and the first real feature release for some time, although we don’t make that distinction to strictly. After the jump I’ll outline the cool new features and how to make use of them.

GitX mailing-list

We’ve been using our Lighthouse tracker to respond to bugs and to discuss features for quite a while now. Email exchanges between Pieter and other contributors were getting more common, so we decided to open a mailing-list for GitX. We already got some nice patches through the list, which has the great advantage that patches can easily be reviewed inline and discussed. The use of the GitHub-wiki is discouraged, as is the Pull-request functionality.

GitX survey

GitX surveyTo accompany this release, and to improve the input from our users, we have created a small (< 5 min) survey for GitX. We’d be happy if you took the time to go through it. Link to the GitX user survey

The juicy details after the jump:

Operations on hunks/lines

GitXStaging and unstaging hunks has been possible for some time. What’s new is the “Discard Hunk” button which simply gets rid of that change, i.e. uses apply –reverse. As usual, the warning-box that shows up can be silenced by Alt-Clicking the button.

GitX 0.7The most obvious change is the ability to stage specific lines from a hunk, using the left mouse-button to drag-select a few lines and then hit “Stage lines”. This is by far the most advanced method to stage stuff in a git-gui up until now.


Two small changes that should make life easier are the orange color for you current branch in the rev-list and the menu-title, which displays your current HEAD as well.GitX

The panes which hold the list of commits and the individual diffs can now be collapsed/uncollapsed using double-click or the keystroke “Command-Shift-Up/Down”. This gives you the ability to quickly maximize complicated history or diffs.


GitXThe commit-view gained a “Sign-Off” button. Commits keep their author information when amending. And the (Un)staged-changes list gained a “Show in Finder” menu item. The diff now shows the committer, who can be someone other than the author of a patch. Commit-hooks now get executed upon committing.


A small preference called “Show white-space differences” shows you diffs with white-space-only changes. We also tried to make most of the alert-messages run non-modal, which means they won’t block other instances of GitX. The tree-view doesn’t try to display the content of binary-files anymore. Furthermore we updated a few passages of the UserManual to reflect the current state of GitX.


The big heap of stuff were bugfixes, some trivial, very few regressions, some simply annoying and some features to protect users from doing harm to themselves. A few of those fixes were performance-related, and with the new Safari 4 the diff-view should suffer less.

What’s in the pipeline for GitX 0.8

One of the changes that almost made it to GitX 0.7 is the auto-refresh feature, which monitors the repository and reloads GitX automatically when something is changed. We’re confident that this feature will be in 0.8, if not earlier.



Benjamin Kramer (9):
      HistoryView: Factor out email formatting
      HistoryView: Show committer if his name differs from the author's
      HistoryView: Show commit date
      HistoryView: Make table header large enough so the text doesn't shift
      Don't compile plain ObjC files as ObjC++
      Get rid of some unnecessary casts
      Remove a .DS_Store
      Fix an obvious typo
      Fix checkbox scaling warnings

Benoit Cerrina (1):
      PBGitRepository: Fix opening of large directories due to bug in NSFileWrapper.

Charles O'Rourke (2):
      Ticket #142: Add Show in Finder to Unstaged and Staged table views.
      Tickets #151 and #155: check for illegal branch names before creating.

Gerd Knops (1):
      Fix build with external build products directory

JD Smith (4):
      commit view: Ensure buttons display on top of text ... but beneath title line.
      diffHighlighter.js: Record the line index as attribute.
      commit.js: Refactor hunk retrieval. To work with subhunks, allow passing a header line explicitly to search for.
      commit.js: Interface for selecting lines to (un-)stage.

Joe Fiorini (3):
      Write commit message to file
      Enable arguments to be passed to executeHook.
      Trigger commit-msg hook when committing

Johannes Gilger (31):
      GitX: Make toolbar in history and commit view equal height
      Info.plist: Fix handling of directories
      PBGitCommit: Call git show with --no-color to be safe
      PBGitRepository: Display branch-name in window title
      PBGitRepository: Correctly indicate bare/non-bare repos
      history.js: Fix display of mode-change and rename
      PBGitCommitController: Fix unstaging of files
      PBWebChanges: Allow discarding of hunks
      PBGitRepository: Add method to remove branch
      PBGitWindowController: Use beginSheetModalForWindow instead of runModal
      keyboardNavigation: Fix keys 'c' and 'v' from webView
      PBGitCommit: Add "Sign-Off" button/method
      PBGitCommitController: Don't allow duplicate Sign-Offs
      PBGitHistory: Add "Show in Finder" to files
      PBGitIndexController: Renamed "Revert" to "Discard"
      Add PBCollapsibleSplitView as subclass of PBNiceSplitView
      PBCollapsibleSplitView: Enable collapse/uncollapse using keys
      Statusbar: Bring View-Mode buttons to front
      Keep window-title up-to-date in commit view
      commit.js: Fix discardHunk functionality
      This fixes a CSS-bug which makes the gitx-website display the same font with Firefox and Safari instead of using a serif with FF.
      Add empty line at end of previous release notes
      UserManual: Add disclaimer as to what GitX is
      GitX 0.7 Release-Notes
      UserManual: Add disclaimer as to what GitX is
      UserManual: Rewrite most parts for GitX 0.7
      About-Panel: Show git-describe using Info.plist
      Site: W3C-Valid and CSS/HTML corrections
      ReleaseNotes for v0.7 with author information
      Site: Get rid of auto-refresh description
      PBGitTree: Don't try to print binary-file contents

Mike Czepiel (1):
      Added very basic tag info menu item and alert.

Nicholas Riley (6):
      Reduce font size of staged/unstaged changes lists.
      Don't disturb editing state when inserting "Signed-off-by" line.
      Remove extraneous space in "Are you sure you wish to revert changes?" message.
      Set keyboard focus reasonably when switching between views.
      Clean up UI and add keyboard support for create branch sheet.
      Truncate the middle of pathnames in the Unstaged/Staged Changes lists.

Pieter de Bie (51):
      Update diffHighlighter test
      HistoryView: speed up diff display
      Allow executing of hooks
      Trigger pre and post-commit hooks when committing
      CommitController: Don't rewrap commit message when amending
      Allow a user to select which columns to display
      HistoryView: Autosave column information
      GitRevList: fix crash when loading 0 commits
      GitRevList -- Try to read the encoding of the commit message
      GitRevList: cache the values of string encodings
      GitRevList: Use std::map.find() rather than count()
      GitCommitController: clean up index functions
      CommitController: Use a dictionary lookup when refreshing index
      GitCommitController: Also use dictionary lookup for untracked files
      PBChangedFile: remove shouldBeDeleted boolean
      Rename 'CachedChanges" to "StagedChanges" for greater consistency
      Add an example of how drag-selection for staging lines could work.
      HistoryView: Resize the detail webview
      Site: add link to Twitter
      PBEasyPipe: Add method that allows you to specify the environment stuff
      PBGitRepository: Specify environment when calling hooks
      PBGitRepository: Add support for changing the environment when executing commands
      NSSTring_RegEx: Add support for regular expressions to NSString
      PBGitCommitController: retain author information of previous commit
      Preferences: Resize views
      Add preference to ignore whitespace differences in history view
      CommitController: don't mutate array we enumerate when refreshing index
      HistoryView: only add parents if parents array exists
      Site: update links to reflect move to mailing list
      Remove use of deprecated stringWithCString
      PBGitConfig: Add missing sentinel
      CommitController: Notify observers when adding files
      History fileview: select current item on rightclick
      Display context menu in the history tree to show related commits
      HistoryController: Add some marks
      WebHistoryController: Refactor menu search to be recursive
      HistoryController: Use a programatically created context menu
      WebHistoryView: Also use the tree context menu
      HistoryController: Add "Open Files" menu item
      CommitController: Reject merges
      PBGitRepository: Clean up the readFromURL: method
      CommitController: Don't turn of off automatic rearranging
      Site: images
      Also set blobMode / blobSha for unstaged changes.
      PBChangedFile: Add assert to make sure we're not doing something stupid
      IndexController: re-add ellipsis to "Discard Changes" menu item
      DiffHighlighter: Remove weird end line
      HistoryView: Add "SHA" Column and make it hidden by default
      Update releasenotes, as autorefresh won't make it into 0.7
      Add a few more release points
      Add a link to the user survey

Steven Michalske (1):
      HistoryView: Change the way the HEAD is displayed

Stonewall Ballard (1):
      Add preferences for opening things at launch.

dbr (1):
      When selecting a folder in tree-view, display the path rather than the <PBGitTree: 0x...> object.

The shortstat has this to say:

84 files changed, 5474 insertions(+), 1470 deletions(-)