GitX 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.
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.
To 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
Staging 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.
The 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.
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.
The 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: smush.it 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(-)