- filters for All, Local/Remote, and the selected branch
- "Local" includes both branches and tags
- "Remote" includes all branches from the same remote as the selected remote branch (i.e. not other remotes)
Changes to make the above work:
- add a history list class between the repository and rev list
- store a project rev list with all the commits from the project
- use the project rev list to graph the history for individual branches when there have been no changes
- use a different rev list to show non-simple revs (history of a file, revs from the gitx tool)
- update the commits in chunks to a mutable array so the table view's array controller has less work to do
- only update the project rev list from git when actually necessary
- don't add the All Branches and Local Branches revs to the branches array
- some changes related to forcing the project's rev list to update when changes are made
- some changes related to not causing updates too often
- store the selected filter in user defaults
- when the graphing is done select the commit for the branch
It was no longer opening the tree view because the index in setTreeView: was wrong.
Removing the raw view was started in 34394d056b. Finish removing the raw view stuff and clean things up.
- remove the rawCommit property
- fix the incorrect index of the tree view setter
- define symbols for the indexes
- rename the selectedTab property to indicate what is being selected
- rename realCommit to selectedCommit to better indicate what it's for
- define a key for the defaults
- add Create Branch and Create Tag buttons
- icons are modified versions of Kim Does's icons (from ca7816b523) made a bit smaller to fit in the buttons better
- add Merge, Cherry Pick, and Rebase buttons
- icons by Nathan Kinsinger
- add an action menu for the selected ref in the source view
- add Add Remote, Fetch, Pull and Push buttons to the bottom bar
- Add Remote icon by Nathan Kinsinger
- Fetch, Pull and Push icons are modified versions of André Berg's icons (from 4396081c07) made a bit smaller to fit in the UI better.
- move the status message for both the history view and the commit/stage view
- all PBViewControllers now have status and isBusy properties and can use those to put a message in the bottom bar when they are the active content controller of the window
The new cell handles:
- showing contextual menus
- drawing a badge for the checked out branch
Needed to add the reference to the ref controller to the history controller.
- remove the separate window toolbars from the history and commit views and create a new window toolbar in the repository window
- add new toolbars inside the history view
- new class to draw a gradient in the background of a view
- moved the search field from the main toolbar to the scope bar
Remove the sidebar from the history controller and put it under the control of the window controller.
- the window controller is the delegate of the split view and controls resizing so the source list stays the same width as the window resizes
- the sidebar controller tells the window controller which content view to show
- removed the view selector from the toolbars of the history and commit xibs (the menu and keyboard shortcuts command-1 and command-2 still switch between the views)
- added horizontal lines to the history and commit xibs to delineate the bottom toolbar area
- In PBGitSidebarView.xib
- change indentation to 12
- change font size to 11
- disable the editable behavior
- disable autoresizing
- disable user resizing (column should resize with view)
- remove the window
- remove the shared user defaults controller (not being used)
- add a project item with the project's name
- a "Stage" item to go to what has been called the commit view
- new icons for branches, remote branches and tags (created by Nathan Kinsinger)
- remove the old tiff icons, PBSourceViewRemote.h/m and PBSourceViewAction.h/m from the xcode project
- uses system icon for folder
- uses Network icon for remotes
- capitalize group names
- rename the Custom group to Other (you can't really customize items in the traditional sense)
- create a class for each item type that takes care of it's image (instead of trying to guess the image from it or it's parent's name)
- remove the branch menu toolbar item from the history view, it's redundant now
Update the methods for creating a branch.
- create new class and xib PBCreateBranchSheet
- remove old addRef: methods and iVars from PBRefController
- remove old sheet from PBHistoryView.xib
- put the implementation method in PBGitRepository
- add a contextual menu item for commits
- shows an error sheet
- ask the commitController to rearrangeObjects to make sure the new branch is shown
- switch from using "update-ref" to "branch" so that branches starting at a remote branch will track automatically (or not depending on the repo's settings)
This patch prevents the plaintext display of files with binary content
in tree-view by connecting the content to the textContents attribute.
PBGitTree is extended with the method textContents, which returns the
textual representation of a PBGitTree-object. The methods first checks
the output of "git check-attr binary <file>" to see if the user
set/unset the binary attribute manually. Then it checks for common
binary file-extensions. If this method can't determine whether the file
is binary, the file-content is loaded and Unix "file" is run on the
first 100 bytes of the file to make a decision.
It also adds the -[PBGitTree fileSize] method to check the size
of the file before actually loading its contents.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
Edited-by: Pieter de Bie <pdebie@ai.rug.nl>
When resizing the GitX-window to small widths the buttons for switching
the view-mode would eventually "disappear" behind the label for loaded
commits. This fixes that behaviour, so that the buttons always go in
front of it, and therefore remain usable.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
This adds a subclass to PBNiceSplitView which has collapsible subviews
as well as an uncollapse-method. The initWithTopMin method is used to
set the minimum sizes for the subviews.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
* commit 'origin/master':
CommitController: Don't turn of off automatic rearranging
PBGitRepository: Clean up the readFromURL: method
PBGitRepository: Fix opening of large directories due to bug in NSFileWrapper.
PBGitIndexController: Renamed "Revert" to "Discard"
CommitController: Reject merges
HistoryController: Add "Open Files" menu item
WebHistoryView: Also use the tree context menu
HistoryController: Use a programatically created context menu
WebHistoryController: Refactor menu search to be recursive
HistoryController: Add some marks
PBGitHistory: Add "Show in Finder" to files
Display context menu in the history tree to show related commits
History fileview: select current item on rightclick
PBGitConfig: Add missing sentinel
Remove use of deprecated stringWithCString
HistoryView: only add parents if parents array exists
keyboardNavigation: Fix keys 'c' and 'v' from webView
Site: add link to Twitter
Conflicts:
PBGitHistoryView.xib
PBGitIndexController.m
Maps Return to OK and Escape/Command-Period to Cancel.
Renames OK to Create (a verb is better).
Fixes autoresizing masks so the layout doesn't break when you resize
the sheet.
This allows us to differentiate between one or multiple files,
and will also come in use when we want to create a context menu
from the webview later on
We now use representedObjects to store the selected paths.
That should make it possible to reuse the menu's from somewhere else.
This adds the "Show in Finder" menu-entry and logic to files in the
tree-view of the history. Also the button "Show commits touching paths"
was renamed to "Show history of files".
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
* stable:
GitRevList -- Try to read the encoding of the commit message
GitRevList: fix crash when loading 0 commits
Tickets #151 and #155: check for illegal branch names before creating.
This fixes ticket #123, it restricts the branch-selector in history-view
to a maximum-height of 25pixels, which is the height of the button to
select history/commit-mode.
Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
This wasn't used anyway. A good idea would be to create a new
branchcontroller that takes care of all these revs, rather than
letting PBGitRepository take care of that
That's why it's there, after all. This also makes the system
more robust and catches some more errors.
The next thing this enables is to also allow right-clicking
on refs in the commit list.
This should make the GUI more responsive by allowing the diff
to be read in the background. This assumes that
[PBGitCommit details] is threadsafe, so we should keep it that
way.
Previously, we would try to copy the view selector from within
the RepositoryWindow, so we could reuse it and change it if we
need to.
However, that causes problems if you have another window open:
if we try to add an item using the insertItemWithIdentifier:atIndex:
method, the item will be added to _all_ toolbars with the same
identifier, even if those toolbars already have the item!
As I see no easy way to fix that, we completely avoid the issue
by not inserting any objects and just copying the view selector
from view to view.