diff --git a/Classes/Controllers/PBGitResetController.h b/Classes/Controllers/PBGitResetController.h new file mode 100644 index 000000000..c50a27590 --- /dev/null +++ b/Classes/Controllers/PBGitResetController.h @@ -0,0 +1,25 @@ +// +// PBGitResetController.h +// GitX +// +// Created by Tomasz Krasnyk on 10-11-27. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import +#import +#import "PBResetSheet.h" + +@class PBGitRepository; +@protocol PBGitRefish; + +@interface PBGitResetController : NSObject { + __unsafe_unretained PBGitRepository *repository; +} +- (id) initWithRepository:(PBGitRepository *) repo; + +// actions +- (void) resetToRefish: (id) spec type: (GTRepositoryResetType) type; +- (void) resetHardToHead; + +@end diff --git a/Classes/Controllers/PBGitResetController.m b/Classes/Controllers/PBGitResetController.m new file mode 100644 index 000000000..e79642de4 --- /dev/null +++ b/Classes/Controllers/PBGitResetController.m @@ -0,0 +1,32 @@ +// +// PBGitResetController.m +// GitX +// +// Created by Tomasz Krasnyk on 10-11-27. +// Copyright 2010 __MyCompanyName__. All rights reserved. +// + +#import "PBGitResetController.h" +#import "PBGitRepository.h" +#import "PBGitRefish.h" +#import "PBResetSheet.h" + + +@implementation PBGitResetController + +- (id) initWithRepository:(PBGitRepository *) repo { + if ((self = [super init])){ + repository = repo; + } + return self; +} + +- (void) resetHardToHead { + [self resetToRefish: [PBGitRef refFromString: @"HEAD"] type: GTRepositoryResetTypeMixed]; +} + +- (void) resetToRefish:(id) refish type:(GTRepositoryResetType)type { + [PBResetSheet beginResetSheetForRepository: repository refish: refish andType: type]; +} + +@end diff --git a/Classes/Controllers/PBRefController.h b/Classes/Controllers/PBRefController.h index a9c11f4c2..830d409ba 100644 --- a/Classes/Controllers/PBRefController.h +++ b/Classes/Controllers/PBRefController.h @@ -31,6 +31,7 @@ - (void) showConfirmPushRefSheet:(PBGitRef *)ref remote:(PBGitRef *)remoteRef; - (void) checkout:(PBRefMenuItem *)sender; +- (void) reset:(PBRefMenuItem *)sender; - (void) merge:(PBRefMenuItem *)sender; - (void) cherryPick:(PBRefMenuItem *)sender; - (void) rebaseHeadBranch:(PBRefMenuItem *)sender; diff --git a/Classes/Controllers/PBRefController.m b/Classes/Controllers/PBRefController.m index 9be1fd8cc..fcdcaa8a8 100644 --- a/Classes/Controllers/PBRefController.m +++ b/Classes/Controllers/PBRefController.m @@ -13,6 +13,7 @@ #import "PBCreateTagSheet.h" #import "PBGitDefaults.h" #import "PBDiffWindowController.h" +#include "PBGitResetController.h" #import @@ -149,6 +150,13 @@ - (void) checkout:(PBRefMenuItem *)sender [historyController.repository checkoutRefish:refish]; } +#pragma mark Reset + +- (void) reset:(PBRefMenuItem *)sender +{ + id refish = [sender refish]; + [historyController.repository.resetController resetToRefish: refish type: GTRepositoryResetTypeMixed]; +} #pragma mark Cherry Pick diff --git a/Classes/Views/PBRefMenuItem.m b/Classes/Views/PBRefMenuItem.m index fed45abe4..594ba2504 100644 --- a/Classes/Views/PBRefMenuItem.m +++ b/Classes/Views/PBRefMenuItem.m @@ -58,6 +58,10 @@ + (NSArray *) defaultMenuItemsForRef:(PBGitRef *)ref inRepository:(PBGitReposito [items addObject:[PBRefMenuItem itemWithTitle:checkoutTitle action:@selector(checkout:) enabled:!isHead]]; [items addObject:[PBRefMenuItem separatorItem]]; + NSString *resetTitle = [NSString stringWithFormat:@"Reset %@ to %@…", headRefName, targetRefName]; + [items addObject:[PBRefMenuItem itemWithTitle: resetTitle action:@selector(reset:) enabled:YES]]; + [items addObject:[PBRefMenuItem separatorItem]]; + // create branch NSString *createBranchTitle = [ref isRemoteBranch] ? [NSString stringWithFormat:@"Create branch that tracks %@…", targetRefName] : @"Create branch…"; [items addObject:[PBRefMenuItem itemWithTitle:createBranchTitle action:@selector(createBranch:) enabled:YES]]; @@ -153,6 +157,10 @@ + (NSArray *) defaultMenuItemsForCommit:(PBGitCommit *)commit target:(id)target [items addObject:[PBRefMenuItem itemWithTitle:@"Checkout Commit" action:@selector(checkout:) enabled:YES]]; [items addObject:[PBRefMenuItem separatorItem]]; + + NSString *resetTitle = [NSString stringWithFormat:@"Reset %@ to here…", headBranchName]; + [items addObject:[PBRefMenuItem itemWithTitle: resetTitle action:@selector(reset:) enabled:YES]]; + [items addObject:[PBRefMenuItem separatorItem]]; [items addObject:[PBRefMenuItem itemWithTitle:@"Create Branch…" action:@selector(createBranch:) enabled:YES]]; [items addObject:[PBRefMenuItem itemWithTitle:@"Create Tag…" action:@selector(createTag:) enabled:YES]]; diff --git a/Classes/Views/PBResetSheet.h b/Classes/Views/PBResetSheet.h new file mode 100644 index 000000000..f92f97df7 --- /dev/null +++ b/Classes/Views/PBResetSheet.h @@ -0,0 +1,37 @@ +// +// PBResetSheet.h +// GitX +// +// Created by Leszek Slazynski on 11-03-13. +// Copyright 2011 LSL. All rights reserved. +// + +#import +#import + +@protocol PBGitRefish; +@class PBGitRepository; + +typedef enum PBResetType { + PBResetTypeNone, + PBResetTypeSoft, + PBResetTypeMixed, + PBResetTypeHard, + PBResetTypeMerge, + PBResetTypeKeep +} PBResetType; + +@interface PBResetSheet : NSWindowController { + IBOutlet NSSegmentedControl* resetType; + IBOutlet NSTabView* resetDesc; + PBResetType defaultType; + id targetRefish; + PBGitRepository* repository; +} + ++ (void) beginResetSheetForRepository:(PBGitRepository*) repo refish:(id)refish andType:(GTRepositoryResetType)type; +- (IBAction)resetBranch:(id)sender; +- (IBAction)cancel:(id)sender; +- (GTRepositoryResetType) getSelectedResetType; + +@end diff --git a/Classes/Views/PBResetSheet.m b/Classes/Views/PBResetSheet.m new file mode 100644 index 000000000..2a51d7439 --- /dev/null +++ b/Classes/Views/PBResetSheet.m @@ -0,0 +1,129 @@ +// +// PBResetSheet.m +// GitX +// +// Created by Leszek Slazynski on 11-03-13. +// Copyright 2011 LSL. All rights reserved. +// + +#import "PBResetSheet.h" +#import "PBGitRefish.h" +#import "PBGitRepository.h" +#import "PBGitWindowController.h" +#include "PBGitCommit.h" + +#import + +@interface PBGitCommit () +@property (nonatomic, strong, readonly) GTCommit *gtCommit; +@end + +static const char* StringFromResetType(GTRepositoryResetType type) { + switch(type) + { + case GTRepositoryResetTypeSoft: + return "soft"; + case GTRepositoryResetTypeMixed: + return "mixed"; + case GTRepositoryResetTypeHard: + return "hard"; + } +} + +@implementation PBResetSheet + +static PBResetSheet* sheet; + +- (void) beginResetSheetForRepository:(PBGitRepository*) repo refish:(id)refish andType:(GTRepositoryResetType)type { + defaultType = type; + targetRefish = refish; + repository = repo; + [NSApp beginSheet: [self window] + modalForWindow: [[repository windowController] window] + modalDelegate: self + didEndSelector: nil + contextInfo: NULL]; +} + ++ (void) beginResetSheetForRepository:(PBGitRepository*) repo refish:(id)refish andType:(GTRepositoryResetType)type { + if (!sheet) { + sheet = [[self alloc] initWithWindowNibName: @"PBResetSheet"]; + } + [sheet beginResetSheetForRepository: repo refish: refish andType: type]; +} + +- (id) init { + if ( (self = [super initWithWindowNibName: @"PBResetSheet"]) ) { + defaultType = GTRepositoryResetTypeMixed; + } + return self; +} + +- (void) windowDidLoad { + [resetType setSelectedSegment: defaultType - 1]; + [resetDesc selectTabViewItemAtIndex: defaultType - 1]; +} + +- (GTRepositoryResetType) getSelectedResetType { + NSInteger selectedSegment = [resetType selectedSegment]; + + switch (selectedSegment) { + case 0: + return GTRepositoryResetTypeSoft; + case 1: + return GTRepositoryResetTypeMixed; + case 2: + return GTRepositoryResetTypeHard; + default: + NSAssert1(false, @"unknown reset method: %ld", selectedSegment); + return -1; + } +} + +- (IBAction)resetBranch:(id)sender { + [NSApp endSheet:[self window]]; + [[self window] orderOut:self]; + GTRepositoryResetType type = [self getSelectedResetType]; + + //TODO: show alert and then reset the branch + NSInteger alertRet = [[NSAlert alertWithMessageText:@"Reset" + defaultButton:nil + alternateButton:@"Cancel" + otherButton:nil + informativeTextWithFormat:@"Are you sure you want to perform a %s reset to %@?", + StringFromResetType(type), + [targetRefish refishName]] + runModal]; + + if(alertRet == NSAlertDefaultReturn) + { + GTRepository* repo = self->repository.gtRepo; + PBGitCommit* commit; + + //test if we already have a commit + //if not, resolve to a commit + //this is somewhat ugly, so maybe this can be replaced with better code + if([targetRefish refishType] == kGitXCommitType) + { + commit = targetRefish; + } + else + { + commit = [self->repository commitForRef:targetRefish]; + } + + NSAssert1(commit != nil, @"could not resolve commit for %@", [targetRefish refishName]); + BOOL success = [repo resetToCommit:commit.gtCommit withResetType:type error:NULL]; + + NSAssert(success, @"reset was not successful"); + + [self->repository reloadRefs]; + } +} + +- (IBAction)cancel:(id)sender { + [NSApp endSheet:[self window]]; + [[self window] orderOut:self]; +} + +@end diff --git a/Classes/git/PBGitRepository.h b/Classes/git/PBGitRepository.h index 2cda588f4..60ae8dff5 100644 --- a/Classes/git/PBGitRepository.h +++ b/Classes/git/PBGitRepository.h @@ -42,11 +42,13 @@ static NSString * PBStringFromBranchFilterType(PBGitXBranchFilterType type) { @class PBGitWindowController; @class PBGitCommit; +@class PBGitResetController; @class PBGitSHA; @class PBGitRepositoryWatcher; @interface PBGitRepository : NSDocument { __strong PBGitRepositoryWatcher *watcher; + __strong PBGitResetController *resetController; __strong PBGitRevSpecifier *_headRef; // Caching __strong PBGitSHA* _headSha; __strong GTRepository* _gtRepo; @@ -57,6 +59,7 @@ static NSString * PBStringFromBranchFilterType(PBGitXBranchFilterType type) { @property (assign) NSInteger currentBranchFilter; @property (readonly, strong) PBGitWindowController *windowController; +@property (readonly, strong) PBGitResetController *resetController; @property (readonly, getter = getIndexURL) NSURL* indexURL; @property (nonatomic, strong) PBGitHistoryList *revisionList; diff --git a/Classes/git/PBGitRepository.m b/Classes/git/PBGitRepository.m index 0342b8b12..229f99168 100644 --- a/Classes/git/PBGitRepository.m +++ b/Classes/git/PBGitRepository.m @@ -23,6 +23,7 @@ #import "PBGitRepositoryWatcher.h" #import "GitRepoFinder.h" #import "PBGitSubmodule.h" +#import "PBGitResetController.h" #import #import @@ -40,6 +41,7 @@ @implementation PBGitRepository @synthesize revisionList, branchesSet, currentBranch, refs, hasChanged, submodules; @synthesize currentBranchFilter; +@synthesize resetController; - (BOOL) isBareRepository { @@ -130,6 +132,7 @@ - (id) init self.branchesSet = [NSMutableOrderedSet orderedSet]; self.submodules = [NSMutableArray array]; currentBranchFilter = [PBGitDefaults branchFilter]; + resetController = [[PBGitResetController alloc] initWithRepository:self]; return self; } diff --git a/GitX.xcodeproj/project.pbxproj b/GitX.xcodeproj/project.pbxproj index 0df6150ac..6f3c0a380 100644 --- a/GitX.xcodeproj/project.pbxproj +++ b/GitX.xcodeproj/project.pbxproj @@ -226,6 +226,9 @@ D87127011229A21C00012334 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D87127001229A21C00012334 /* QuartzCore.framework */; }; D89E9B141218BA260097A90B /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D89E9AB21218A9DA0097A90B /* ScriptingBridge.framework */; }; D8E3B2B810DC9FB2001096A3 /* ScriptingBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D8E3B2B710DC9FB2001096A3 /* ScriptingBridge.framework */; }; + F4D7EF8C17B7A68C002B30A2 /* PBGitResetController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4D7EF8B17B7A68C002B30A2 /* PBGitResetController.m */; }; + F4D7EF9817B7A6AB002B30A2 /* PBResetSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = F4D7EF9717B7A6AB002B30A2 /* PBResetSheet.m */; }; + F4D7EF9A17B7A6E9002B30A2 /* PBResetSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4D7EF9917B7A6E9002B30A2 /* PBResetSheet.xib */; }; F56526240E03D85900F03B52 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F56526230E03D85900F03B52 /* WebKit.framework */; }; F5E4DBFB0EAB58D90013FAFC /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5E4DBFA0EAB58D90013FAFC /* SystemConfiguration.framework */; }; /* End PBXBuildFile section */ @@ -689,6 +692,11 @@ D87127001229A21C00012334 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; D89E9AB21218A9DA0097A90B /* ScriptingBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ScriptingBridge.framework; path = System/Library/Frameworks/ScriptingBridge.framework; sourceTree = SDKROOT; }; D8E3B2B710DC9FB2001096A3 /* ScriptingBridge.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ScriptingBridge.framework; path = /System/Library/Frameworks/ScriptingBridge.framework; sourceTree = ""; }; + F4D7EF8A17B7A68C002B30A2 /* PBGitResetController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitResetController.h; sourceTree = ""; }; + F4D7EF8B17B7A68C002B30A2 /* PBGitResetController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBGitResetController.m; sourceTree = ""; }; + F4D7EF9617B7A6AB002B30A2 /* PBResetSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBResetSheet.h; sourceTree = ""; }; + F4D7EF9717B7A6AB002B30A2 /* PBResetSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBResetSheet.m; sourceTree = ""; }; + F4D7EF9917B7A6E9002B30A2 /* PBResetSheet.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PBResetSheet.xib; sourceTree = ""; }; F56526230E03D85900F03B52 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = /System/Library/Frameworks/WebKit.framework; sourceTree = ""; }; F5D619ED0EAE62EA00341D73 /* html */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = folder; name = html; path = ../html; sourceTree = ""; }; F5E4DBFA0EAB58D90013FAFC /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = ""; }; @@ -927,6 +935,7 @@ 4A5D75B914A9A90500DF6C68 /* XIBs */ = { isa = PBXGroup; children = ( + F4D7EF9917B7A6E9002B30A2 /* PBResetSheet.xib */, 4A5D75BA14A9A90500DF6C68 /* OpenRecentPopup.xib */, 4A5D75BB14A9A90500DF6C68 /* PBCommitHookFailedSheet.xib */, 4A5D75BC14A9A90500DF6C68 /* PBDiffWindow.xib */, @@ -992,6 +1001,8 @@ 4A5D762514A9A9CC00DF6C68 /* Controllers */ = { isa = PBXGroup; children = ( + F4D7EF8A17B7A68C002B30A2 /* PBGitResetController.h */, + F4D7EF8B17B7A68C002B30A2 /* PBGitResetController.m */, 4A5D762614A9A9CC00DF6C68 /* ApplicationController.h */, 4A5D762714A9A9CC00DF6C68 /* ApplicationController.m */, 4A5D762814A9A9CC00DF6C68 /* DBPrefsWindowController.h */, @@ -1126,6 +1137,8 @@ 4A5D76B314A9A9CC00DF6C68 /* Views */ = { isa = PBXGroup; children = ( + F4D7EF9617B7A6AB002B30A2 /* PBResetSheet.h */, + F4D7EF9717B7A6AB002B30A2 /* PBResetSheet.m */, 4A5D76B414A9A9CC00DF6C68 /* GitXTextFieldCell.h */, 4A5D76B514A9A9CC00DF6C68 /* GitXTextFieldCell.m */, 4A5D76B614A9A9CC00DF6C68 /* GLFileView.h */, @@ -1499,6 +1512,7 @@ BC0444C617648EBE00353E6D /* TagHighlighted.png in Resources */, BC77578C176766B60048BB48 /* BranchTemplate@2x.png in Resources */, BC775797176766C60048BB48 /* RemoteBranchTemplate@2x.png in Resources */, + F4D7EF9A17B7A6E9002B30A2 /* PBResetSheet.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1642,6 +1656,8 @@ 643952741603E9BC00BB7AFF /* PBGitSubmodule.m in Sources */, 643952771603EF9B00BB7AFF /* PBGitSVSubmoduleItem.m in Sources */, 4AB057E31652652000DE751D /* GitRepoFinder.m in Sources */, + F4D7EF8C17B7A68C002B30A2 /* PBGitResetController.m in Sources */, + F4D7EF9817B7A6AB002B30A2 /* PBResetSheet.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1771,7 +1787,12 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(PROJECT_DIR)\"", + "\"$(SRCROOT)/objective-git/build/Debug\"", + "\"$(SRCROOT)/Sparkle/build/Debug\"", + "\"$(SRCROOT)/MGScopeBar/build/Debug\"", + ); GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -1790,7 +1811,12 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_ARC = YES; - FRAMEWORK_SEARCH_PATHS = "\"$(PROJECT_DIR)\""; + FRAMEWORK_SEARCH_PATHS = ( + "\"$(PROJECT_DIR)\"", + "\"$(SRCROOT)/objective-git/build/Release\"", + "\"$(SRCROOT)/Sparkle/build/Release\"", + "\"$(SRCROOT)/MGScopeBar/build/Release\"", + ); GCC_ENABLE_OBJC_EXCEPTIONS = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = GitX_Prefix.pch; @@ -1874,6 +1900,12 @@ 913D5E4B0E55644600CECEA2 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/objective-git/build/Debug\"", + "\"$(SRCROOT)/Sparkle/build/Debug\"", + "\"$(SRCROOT)/MGScopeBar/build/Debug\"", + ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = GitX_Prefix.pch; INSTALL_PATH = /usr/local/bin; @@ -1884,6 +1916,12 @@ 913D5E4C0E55644600CECEA2 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/objective-git/build/Release\"", + "\"$(SRCROOT)/Sparkle/build/Release\"", + "\"$(SRCROOT)/MGScopeBar/build/Release\"", + ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = GitX_Prefix.pch; INSTALL_PATH = /usr/local/bin; diff --git a/Resources/XIBs/PBResetSheet.xib b/Resources/XIBs/PBResetSheet.xib new file mode 100644 index 000000000..6cde10210 --- /dev/null +++ b/Resources/XIBs/PBResetSheet.xib @@ -0,0 +1,1026 @@ + + + + 1080 + 12E55 + 3084 + 1187.39 + 626.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 3084 + + + YES + NSButton + NSButtonCell + NSCustomObject + NSSegmentedCell + NSSegmentedControl + NSTabView + NSTabViewItem + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + PBResetSheet + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{196, 240}, {480, 205}} + 544736256 + Reset branch + NSWindow + + + + + 256 + + YES + + + 18 + {{16, 56}, {448, 78}} + + + + YES + + 1 + + + 256 + + YES + + + 274 + {{0, 45}, {428, 13}} + + + YES + + 67108928 + 1346635776 + Resets the head but does not touch the index file nor the working tree at all. + + LucidaGrande + 10 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{0, 21}, {428, 16}} + + + YES + + 68157504 + 272892928 + This leaves all your changes intact - as changes to be committed. + + LucidaGrande-Bold + 12 + 16 + + + + + + NO + + + {{10, 7}, {428, 58}} + + + soft + + + + + 2 + + + 256 + + YES + + + 274 + {{0, 45}, {428, 13}} + + + YES + + 67108928 + 272893952 + Resets the index but not the working tree and reports what has not been updated. + + + + + + NO + + + + 268 + {{0, 21}, {428, 16}} + + YES + + 68157504 + 272892928 + This preserves changes but they are not marked for commit. + + + + + + NO + + + {{10, 7}, {428, 58}} + + + mixed + + + + + + + 256 + + YES + + + 274 + {{0, 32}, {428, 26}} + + + YES + + 67108864 + 272891904 + Resets the index and working tree. Any changes to tracked files in the working tree are discarded. + + + + + + NO + + + + 268 + {{0, 8}, {437, 16}} + + + YES + + 68157504 + 272892928 + Warning! This discards all changes. It may be hard to recover them. + + + + + + NO + + + {{10, 7}, {428, 58}} + + + + hard + + + + + + + 256 + + YES + + + 274 + {{0, -95}, {428, 153}} + + YES + + 67108864 + 272891904 + Resets the index and updates the files in the working tree that are different between target and HEAD, but keeps those which are different between the index and working tree (i.e. which have changes which have not been added). If a file that is different between target and the index has unstaged changes, reset is aborted. + + + + + + NO + + + {{10, 7}, {428, 58}} + + + merge + + + + + + + 256 + + YES + + + 274 + {{0, -95}, {428, 153}} + + YES + + 67108864 + 272891904 + UmVzZXRzIHRoZSBpbmRleCwgdXBkYXRlcyBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlIHRoYXQgYXJl +IGRpZmZlcmVudCBiZXR3ZWVuIHRhcmdldCBhbmQgSEVBRCwgYnV0IGtlZXBzIHRob3NlIHdoaWNoIGFy +ZSBkaWZmZXJlbnQgYmV0d2VlbiBIRUFEIGFuZCB0aGUgd29ya2luZyB0cmVlIChpLmUuIHdoaWNoIGhh +dmUgbG9jYWwgY2hhbmdlcykuIElmIGEgZmlsZSB0aGF0IGlzIGRpZmZlcmVudCBiZXR3ZWVuIHRhcmdl +dCBhbmQgSEVBRCBoYXMgbG9jYWwgY2hhbmdlcywgcmVzZXQgaXMgYWJvcnRlZC4KA + + + + + + NO + + + {{10, 7}, {428, 58}} + + + keep + + + + + + + LucidaGrande + 13 + 1044 + + 4 + YES + YES + + YES + + + + + + 268 + {{100, 138}, {158, 25}} + + + YES + + 67108864 + 0 + + LucidaGrande + 13 + 16 + + + + YES + + soft + 0 + + + mixed + 1 + YES + 0 + + + hard + 0 + + + 1 + 4 + + NO + + + + 268 + {{17, 143}, {83, 17}} + + + YES + + 68157504 + 272630784 + Reset type: + + + YES + + + + NO + + + + 289 + {{370, 12}, {96, 32}} + + + YES + + 67108864 + 134217728 + Reset + + + -2038284288 + 129 + + DQ + 200 + 25 + + NO + + + + 289 + {{274, 12}, {96, 32}} + + + YES + + 67108864 + 134217728 + Cancel + + + -2038284288 + 129 + + Gw + 200 + 25 + + NO + + + + 268 + {{17, 168}, {446, 17}} + + + YES + + 68157504 + 272630784 + Are you sure you want to reset current branch? + + LucidaGrande-Bold + 13 + 16 + + + + + + NO + + + {480, 205} + + + + {{0, 0}, {1440, 878}} + {10000000000000, 10000000000000} + YES + + + + + YES + + + window + + + + 57 + + + + resetBranch: + + + + 58 + + + + cancel: + + + + 59 + + + + resetType + + + + 60 + + + + takeSelectedTabViewItemFromSender: + + + + 20 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + Reset branch + + + 2 + + + YES + + + + + + + + + + + 3 + + + YES + + + + + + + + Type Description + + + 4 + + + YES + + + + soft + + + 5 + + + YES + + + + mixed + + + 6 + + + YES + + + + + + + 7 + + + YES + + + + + View + + + 8 + + + YES + + + + hard + + + 9 + + + YES + + + + + + + 10 + + + YES + + + + merge + + + 11 + + + YES + + + + + + 12 + + + YES + + + + keep + + + 13 + + + YES + + + + + + 14 + + + YES + + + + Type Select + + + 15 + + + Segmented Cell - soft, mixed, hard, merge, keep + + + 16 + + + YES + + + + Type Label + + + 17 + + + + + 31 + + + YES + + + + Reset + + + 32 + + + + + 35 + + + YES + + + + Are you sure + + + 36 + + + + + 37 + + + YES + + + + + + 38 + + + + + 39 + + + YES + + + + + + 40 + + + + + 41 + + + YES + + + + + + 42 + + + + + 43 + + + YES + + + + + + 44 + + + + + 29 + + + YES + + + + + + 30 + + + + + 50 + + + YES + + + + + + 51 + + + + + 53 + + + YES + + + + + + 54 + + + + + 55 + + + YES + + + + + + 56 + + + + + 33 + + + YES + + + + Cancel + + + 34 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 1.IBPluginDependency + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 10.IBPluginDependency + 11.IBPluginDependency + 12.IBPluginDependency + 13.IBPluginDependency + 14.IBPluginDependency + 15.IBNSSegmentedControlInspectorSelectedSegmentMetadataKey + 15.IBPluginDependency + 16.IBPluginDependency + 17.IBPluginDependency + 2.IBPluginDependency + 29.IBPluginDependency + 3.IBAttributePlaceholdersKey + 3.IBPluginDependency + 30.IBPluginDependency + 31.IBPluginDependency + 32.IBPluginDependency + 33.IBPluginDependency + 33.IBViewIntegration.shadowBlurRadius + 33.IBViewIntegration.shadowColor + 33.IBViewIntegration.shadowOffsetHeight + 33.IBViewIntegration.shadowOffsetWidth + 34.IBPluginDependency + 35.IBPluginDependency + 36.IBPluginDependency + 37.IBPluginDependency + 38.IBPluginDependency + 39.IBPluginDependency + 4.IBPluginDependency + 40.IBPluginDependency + 41.IBPluginDependency + 42.IBPluginDependency + 43.IBPluginDependency + 44.IBPluginDependency + 5.IBPluginDependency + 50.IBPluginDependency + 51.IBPluginDependency + 53.IBPluginDependency + 54.IBPluginDependency + 55.IBPluginDependency + 56.IBPluginDependency + 6.IBPluginDependency + 7.IBPluginDependency + 7.notes + 7.showNotes + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{357, 418}, {480, 270}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + InitialTabViewItem + + InitialTabViewItem + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + aaa + + + YES + + YES + NSFont + NSParagraphStyle + + + YES + + Helvetica + 12 + 16 + + + 4 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + + + + YES + + + + + 60 + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + +