diff --git a/PBRefController.h b/PBRefController.h index 2c9ed59..c1d7175 100644 --- a/PBRefController.h +++ b/PBRefController.h @@ -24,6 +24,8 @@ } - (void) createBranch:(PBRefMenuItem *)sender; +- (void) copySHA:(PBRefMenuItem *)sender; +- (void) copyPatch:(PBRefMenuItem *)sender; - (NSArray *) menuItemsForRef:(PBGitRef *)ref; - (NSArray *) menuItemsForCommit:(PBGitCommit *)commit; diff --git a/PBRefController.m b/PBRefController.m index 781a656..c4e4e8d 100644 --- a/PBRefController.m +++ b/PBRefController.m @@ -46,6 +46,35 @@ } +#pragma mark Copy info + +- (void) copySHA:(PBRefMenuItem *)sender +{ + PBGitCommit *commit = nil; + if ([[sender refish] refishType] == kGitXCommitType) + commit = (PBGitCommit *)[sender refish]; + else + commit = [historyController.repository commitForRef:[sender refish]]; + + NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; + [pasteboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; + [pasteboard setString:[commit realSha] forType:NSStringPboardType]; +} + +- (void) copyPatch:(PBRefMenuItem *)sender +{ + PBGitCommit *commit = nil; + if ([[sender refish] refishType] == kGitXCommitType) + commit = (PBGitCommit *)[sender refish]; + else + commit = [historyController.repository commitForRef:[sender refish]]; + + NSPasteboard *pasteboard = [NSPasteboard generalPasteboard]; + [pasteboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil]; + [pasteboard setString:[commit patch] forType:NSStringPboardType]; +} + + - (void) removeRefSheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { if (returnCode == NSAlertDefaultReturn) { diff --git a/PBRefMenuItem.m b/PBRefMenuItem.m index 11b5a77..875948a 100644 --- a/PBRefMenuItem.m +++ b/PBRefMenuItem.m @@ -74,6 +74,10 @@ NSMutableArray *items = [NSMutableArray array]; [items addObject:[PBRefMenuItem itemWithTitle:@"Create Branch…" action:@selector(createBranch:) enabled:YES]]; + [items addObject:[PBRefMenuItem separatorItem]]; + + [items addObject:[PBRefMenuItem itemWithTitle:@"Copy SHA" action:@selector(copySHA:) enabled:YES]]; + [items addObject:[PBRefMenuItem itemWithTitle:@"Copy Patch" action:@selector(copyPatch:) enabled:YES]]; for (PBRefMenuItem *item in items) { [item setTarget:target];