diff --git a/GitX.xcodeproj/project.pbxproj b/GitX.xcodeproj/project.pbxproj index fa3c9fd..e117e66 100644 --- a/GitX.xcodeproj/project.pbxproj +++ b/GitX.xcodeproj/project.pbxproj @@ -64,6 +64,9 @@ D85B939310E3D8B4007F3C28 /* PBCreateBranchSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = D85B939210E3D8B4007F3C28 /* PBCreateBranchSheet.xib */; }; D889EB3110E6BCBB00F08413 /* PBCreateTagSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = D889EB3010E6BCBB00F08413 /* PBCreateTagSheet.xib */; }; D8A4BB6F11337D5C00E92D51 /* PBGitGradientBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = D8A4BB6E11337D5C00E92D51 /* PBGitGradientBarView.m */; }; + D8A4BD071134AD2900E92D51 /* CherryPickTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = D8A4BD041134AD2900E92D51 /* CherryPickTemplate.png */; }; + D8A4BD081134AD2900E92D51 /* MergeTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = D8A4BD051134AD2900E92D51 /* MergeTemplate.png */; }; + D8A4BD091134AD2900E92D51 /* RebaseTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = D8A4BD061134AD2900E92D51 /* RebaseTemplate.png */; }; D8E3B2B810DC9FB2001096A3 /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8E3B2B710DC9FB2001096A3 /* ScriptingBridge.framework */; }; D8E3B34D10DCA958001096A3 /* PBCreateTagSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = D8E3B34C10DCA958001096A3 /* PBCreateTagSheet.m */; }; D8FDD9F711432A12005647F6 /* PBCloneRepositoryPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = D8FDD9F511432A12005647F6 /* PBCloneRepositoryPanel.xib */; }; @@ -271,6 +274,9 @@ D85B93F610E51279007F3C28 /* PBGitRefish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitRefish.h; sourceTree = ""; }; D8A4BB6D11337D5C00E92D51 /* PBGitGradientBarView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitGradientBarView.h; sourceTree = ""; }; D8A4BB6E11337D5C00E92D51 /* PBGitGradientBarView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBGitGradientBarView.m; sourceTree = ""; }; + D8A4BD041134AD2900E92D51 /* CherryPickTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = CherryPickTemplate.png; path = Images/CherryPickTemplate.png; sourceTree = ""; }; + D8A4BD051134AD2900E92D51 /* MergeTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = MergeTemplate.png; path = Images/MergeTemplate.png; sourceTree = ""; }; + D8A4BD061134AD2900E92D51 /* RebaseTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = RebaseTemplate.png; path = Images/RebaseTemplate.png; sourceTree = ""; }; D8C1B77210E875CF009B7F8B /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/PBRemoteProgressSheet.xib; sourceTree = ""; }; D8E3B2B710DC9FB2001096A3 /* ScriptingBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ScriptingBridge.framework; path = /System/Library/Frameworks/ScriptingBridge.framework; sourceTree = ""; }; D8E3B34B10DCA958001096A3 /* PBCreateTagSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBCreateTagSheet.h; sourceTree = ""; }; @@ -520,6 +526,9 @@ D828A5F01128AE7200F09D11 /* PullTemplate.png */, D828A5F11128AE7200F09D11 /* PushTemplate.png */, 3BC07F4A0ED5A5C5009A7768 /* HistoryViewTemplate.png */, + D8A4BD041134AD2900E92D51 /* CherryPickTemplate.png */, + D8A4BD051134AD2900E92D51 /* MergeTemplate.png */, + D8A4BD061134AD2900E92D51 /* RebaseTemplate.png */, 3BC07F4B0ED5A5C5009A7768 /* CommitViewTemplate.png */, F56ADDD70ED19F9E002AC78F /* AddBranchTemplate.png */, F56ADDD80ED19F9E002AC78F /* AddLabelTemplate.png */, @@ -1009,6 +1018,9 @@ D828A5F31128AE7200F09D11 /* PullTemplate.png in Resources */, D828A5F41128AE7200F09D11 /* PushTemplate.png in Resources */, D8FDDBF41143F318005647F6 /* AddRemote.png in Resources */, + D8A4BD071134AD2900E92D51 /* CherryPickTemplate.png in Resources */, + D8A4BD081134AD2900E92D51 /* MergeTemplate.png in Resources */, + D8A4BD091134AD2900E92D51 /* RebaseTemplate.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Images/AddBranchTemplate.png b/Images/AddBranchTemplate.png index bd58596..03161a0 100644 Binary files a/Images/AddBranchTemplate.png and b/Images/AddBranchTemplate.png differ diff --git a/Images/AddLabelTemplate.png b/Images/AddLabelTemplate.png index 5823711..085e760 100644 Binary files a/Images/AddLabelTemplate.png and b/Images/AddLabelTemplate.png differ diff --git a/Images/CherryPickTemplate.png b/Images/CherryPickTemplate.png new file mode 100644 index 0000000..7a49968 Binary files /dev/null and b/Images/CherryPickTemplate.png differ diff --git a/Images/MergeTemplate.png b/Images/MergeTemplate.png new file mode 100644 index 0000000..f3d24c9 Binary files /dev/null and b/Images/MergeTemplate.png differ diff --git a/Images/RebaseTemplate.png b/Images/RebaseTemplate.png new file mode 100644 index 0000000..87d8390 Binary files /dev/null and b/Images/RebaseTemplate.png differ diff --git a/PBGitHistoryController.h b/PBGitHistoryController.h index 1d059c3..2ace6c5 100644 --- a/PBGitHistoryController.h +++ b/PBGitHistoryController.h @@ -24,7 +24,12 @@ IBOutlet NSOutlineView* fileBrowser; IBOutlet NSTableView* commitList; IBOutlet PBCollapsibleSplitView *historySplitView; + IBOutlet PBGitGradientBarView *upperToolbarView; + IBOutlet NSButton *mergeButton; + IBOutlet NSButton *cherryPickButton; + IBOutlet NSButton *rebaseButton; + IBOutlet PBGitGradientBarView *scopeBarView; IBOutlet id webView; @@ -63,6 +68,9 @@ - (IBAction) createBranch:(id)sender; - (IBAction) createTag:(id)sender; - (IBAction) showAddRemoteSheet:(id)sender; +- (IBAction) merge:(id)sender; +- (IBAction) cherryPick:(id)sender; +- (IBAction) rebase:(id)sender; - (void) copyCommitInfo; diff --git a/PBGitHistoryController.m b/PBGitHistoryController.m index 3157f3d..79b77c3 100644 --- a/PBGitHistoryController.m +++ b/PBGitHistoryController.m @@ -80,7 +80,12 @@ case 0: self.webCommit = realCommit; break; case 1: self.gitTree = realCommit.tree; break; } -} + + BOOL isOnHeadBranch = [realCommit isOnHeadBranch]; + [mergeButton setEnabled:!isOnHeadBranch]; + [cherryPickButton setEnabled:!isOnHeadBranch]; + [rebaseButton setEnabled:!isOnHeadBranch]; +} - (void) setSelectedTab: (int) number @@ -379,4 +384,25 @@ [PBAddRemoteSheet beginAddRemoteSheetForRepository:self.repository]; } +- (IBAction) merge:(id)sender +{ + if (realCommit) + [repository mergeWithRefish:realCommit]; +} + +- (IBAction) cherryPick:(id)sender +{ + if (realCommit) + [repository cherryPickRefish:realCommit]; +} + +- (IBAction) rebase:(id)sender +{ + if (realCommit) { + PBGitRef *headRef = [[repository headRef] ref]; + [repository rebaseBranch:headRef onRefish:realCommit]; + } +} + + @end diff --git a/PBGitHistoryView.xib b/PBGitHistoryView.xib index 6a67914..56e35fd 100644 --- a/PBGitHistoryView.xib +++ b/PBGitHistoryView.xib @@ -21,7 +21,7 @@ YES - + YES @@ -217,6 +217,136 @@ 266 YES + + + 269 + + YES + + + 268 + {{110, 3}, {37, 25}} + + YES + + -2080244224 + 134217728 + Rebase + + + -2033958657 + 163 + + NSImage + RebaseTemplate + + + + 400 + 75 + + + + + 268 + {{65, 3}, {37, 25}} + + YES + + -2080244224 + 134217728 + Cherry Pick + + + -2033958657 + 163 + + NSImage + CherryPickTemplate + + + + 400 + 75 + + + + + 268 + {{20, 3}, {37, 25}} + + YES + + -2080244224 + 134217728 + Merge + + + -2033958657 + 163 + + NSImage + MergeTemplate + + + + 400 + 75 + + + + {{342, 0}, {167, 30}} + + NSView + + + + 268 + {{55, 3}, {37, 25}} + + YES + + -2080244224 + 134217728 + Create Tag + + + -2033958657 + 163 + + NSImage + AddLabelTemplate + + + + 400 + 75 + + + + + 268 + {{10, 3}, {37, 25}} + + YES + + -2080244224 + 134217728 + Create Branch + + + -2033958657 + 163 + + NSImage + AddBranchTemplate + + + + 400 + 75 + + 10 @@ -1615,6 +1745,70 @@ 329 + + + createTag: + + + + 334 + + + + createBranch: + + + + 335 + + + + merge: + + + + 349 + + + + cherryPick: + + + + 350 + + + + rebase: + + + + 351 + + + + mergeButton + + + + 352 + + + + cherryPickButton + + + + 353 + + + + rebaseButton + + + + 354 + @@ -2017,6 +2211,9 @@ YES + + + History Upper Toolbar @@ -2031,6 +2228,87 @@ + + 330 + + + YES + + + + + + 331 + + + + + 332 + + + YES + + + + + + 333 + + + + + 336 + + + YES + + + + + + + + 337 + + + YES + + + + + + 338 + + + + + 340 + + + YES + + + + + + 341 + + + + + 343 + + + YES + + + + + + 344 + + + @@ -2089,7 +2367,23 @@ 32.ImportedFromIB2 327.IBPluginDependency 33.IBPluginDependency + 330.IBAttributePlaceholdersKey + 330.IBPluginDependency + 331.IBPluginDependency + 332.IBAttributePlaceholdersKey + 332.IBPluginDependency + 333.IBPluginDependency + 336.IBPluginDependency + 337.IBAttributePlaceholdersKey + 337.IBPluginDependency + 338.IBPluginDependency 34.IBPluginDependency + 340.IBAttributePlaceholdersKey + 340.IBPluginDependency + 341.IBPluginDependency + 343.IBAttributePlaceholdersKey + 343.IBPluginDependency + 344.IBPluginDependency 35.CustomClassName 35.IBPluginDependency 35.ImportedFromIB2 @@ -2171,6 +2465,57 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Create Branch + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Create Tag + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Merge + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Cherry Pick + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + Rebase + + + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin PBGitRevisionCell com.apple.InterfaceBuilder.CocoaPlugin @@ -2216,7 +2561,7 @@ - 329 + 354 @@ -2282,10 +2627,13 @@ YES YES + cherryPick: createBranch: createTag: + merge: openFilesAction: openSelectedFile: + rebase: refresh: setDetailedView: setRawView: @@ -2309,16 +2657,22 @@ id id id + id + id + id YES YES + cherryPickButton commitController commitList fileBrowser historySplitView + mergeButton + rebaseButton refController scopeBarView searchField @@ -2328,10 +2682,13 @@ YES + NSButton NSArrayController NSTableView NSOutlineView PBCollapsibleSplitView + NSButton + NSButton PBRefController PBGitGradientBarView NSSearchField @@ -3275,8 +3632,25 @@ GitX.xcodeproj 3 - NSQuickLookTemplate - {19, 11} + YES + + YES + AddBranchTemplate + AddLabelTemplate + CherryPickTemplate + MergeTemplate + NSQuickLookTemplate + RebaseTemplate + + + YES + {20, 12} + {23, 12} + {18.5143, 12.3429} + {16.4571, 12.3429} + {19, 11} + {16.4571, 13.3714} +