mirror of
https://github.com/kennethreitz-archive/gitx.git
synced 2026-06-05 23:40:18 +00:00
Merge branch 'master' of https://github.com/laullon/gitx
This commit is contained in:
@@ -36,6 +36,11 @@
|
||||
+(BOOL)isStartDiff:(NSString *)line;
|
||||
+(BOOL)isStartBlock:(NSString *)line;
|
||||
|
||||
+(NSArray *)getFilesNames:(NSString *)line;
|
||||
+(BOOL)isBinaryFile:(NSString *)line;
|
||||
+(NSString*)mimeTypeForFileName:(NSString*)file;
|
||||
+(BOOL)isImage:(NSString*)file;
|
||||
|
||||
@property(retain) NSMutableArray *groups;
|
||||
@property(retain) NSString *logFormat;
|
||||
|
||||
|
||||
+35
-12
@@ -181,7 +181,6 @@
|
||||
|
||||
- (void)scopeBar:(MGScopeBar *)theScopeBar selectedStateChanged:(BOOL)selected forItem:(NSString *)identifier inGroup:(int)groupNumber
|
||||
{
|
||||
NSLog(@"startFile=%@ identifier=%@ groupNumber=%d",startFile,identifier,groupNumber);
|
||||
if((groupNumber==0) && (startFile!=identifier)){
|
||||
NSString *path = [NSString stringWithFormat:@"html/views/%@", identifier];
|
||||
NSString *html = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:path];
|
||||
@@ -238,11 +237,10 @@
|
||||
NSArray *lines = [txt componentsSeparatedByString:@"\n"];
|
||||
NSMutableString *res=[NSMutableString string];
|
||||
[res appendString:@"<table id='filelist'>"];
|
||||
int i;
|
||||
for (i=1; i<[lines count]; i++) {
|
||||
NSString *line=[lines objectAtIndex:i];
|
||||
NSArray *fields=[line componentsSeparatedByString:@" "];
|
||||
NSArray *fileStatus=[[fields objectAtIndex:4] componentsSeparatedByString:@"\t"];
|
||||
for (NSString *line in lines) {
|
||||
if([line length]<98) continue;
|
||||
line=[line substringFromIndex:97];
|
||||
NSArray *fileStatus=[line componentsSeparatedByString:@"\t"];
|
||||
NSString *status=[[fileStatus objectAtIndex:0] substringToIndex:1]; // ignore the score
|
||||
NSString *file=[fileStatus objectAtIndex:1];
|
||||
NSString *txt=file;
|
||||
@@ -331,17 +329,19 @@
|
||||
}else if(inDiff){
|
||||
[res appendString:[NSString stringWithFormat:@"<p>%@</p>",line]];
|
||||
if([self isBinaryFile:line]){
|
||||
NSLog(@"line='%@'",line);
|
||||
[res appendString:@"</td></tr></thead><tbody>"];
|
||||
NSArray *files=[self getFilesNames:line];
|
||||
NSLog(@"files='%@'",files);
|
||||
if(![[files objectAtIndex:0] isAbsolutePath]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'>%@</td></tr>",[files objectAtIndex:0]]];
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'><img src='GitX://{SHA}:/prev/%@'/></td></tr>",[files objectAtIndex:0]]];
|
||||
if([GLFileView isImage:[files objectAtIndex:0]]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'><img src='GitX://{SHA}:/prev/%@'/></td></tr>",[files objectAtIndex:0]]];
|
||||
}
|
||||
}
|
||||
if(![[files objectAtIndex:1] isAbsolutePath]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'>%@</td></tr>",[files objectAtIndex:1]]];
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'><img src='GitX://{SHA}/%@'/></td></tr>",[files objectAtIndex:1]]];
|
||||
if([GLFileView isImage:[files objectAtIndex:1]]){
|
||||
[res appendString:[NSString stringWithFormat:@"<tr><td colspan='3'><img src='GitX://{SHA}/%@'/></td></tr>",[files objectAtIndex:1]]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -362,7 +362,6 @@
|
||||
{
|
||||
NSString *a;
|
||||
NSString *b;
|
||||
NSLog(@"line='%@'",line);
|
||||
NSScanner *scanner=[NSScanner scannerWithString:line];
|
||||
if([scanner scanString:@"Binary files " intoString:NULL]){
|
||||
[scanner scanUpToString:@" and" intoString:&a];
|
||||
@@ -375,10 +374,34 @@
|
||||
if (![b isAbsolutePath]) {
|
||||
b=[b substringFromIndex:2];
|
||||
}
|
||||
|
||||
|
||||
return [NSArray arrayWithObjects:a,b,nil];
|
||||
}
|
||||
|
||||
+(NSString*)mimeTypeForFileName:(NSString*)name
|
||||
{
|
||||
NSString *mimeType = nil;
|
||||
NSInteger i=[name rangeOfString:@"." options:NSBackwardsSearch].location;
|
||||
if(i!=NSNotFound){
|
||||
NSString *ext=[name substringFromIndex:i+1];
|
||||
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (CFStringRef)ext, NULL);
|
||||
if(UTI){
|
||||
CFStringRef registeredType = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType);
|
||||
if(registeredType){
|
||||
mimeType = NSMakeCollectable(registeredType);
|
||||
}
|
||||
CFRelease(UTI);
|
||||
}
|
||||
}
|
||||
return mimeType;
|
||||
}
|
||||
|
||||
+(BOOL)isImage:(NSString*)file
|
||||
{
|
||||
NSString *mimeType=[GLFileView mimeTypeForFileName:file];
|
||||
return (mimeType!=nil) && ([mimeType rangeOfString:@"image/" options:NSCaseInsensitiveSearch].location!=NSNotFound);
|
||||
}
|
||||
|
||||
+(BOOL)isBinaryFile:(NSString *)line
|
||||
{
|
||||
return (([line length]>12) && [[line substringToIndex:12] isEqualToString:@"Binary files"]);
|
||||
|
||||
+1
-1
@@ -287,7 +287,7 @@
|
||||
|
||||
- (BOOL) haveRefsBeenModified
|
||||
{
|
||||
[repository reloadRefs];
|
||||
//[repository reloadRefs];
|
||||
|
||||
NSMutableSet *currentRefSHAs = [NSMutableSet setWithArray:[repository.refs allKeys]];
|
||||
[currentRefSHAs minusSet:lastRefSHAs];
|
||||
|
||||
+1
-1
@@ -129,7 +129,7 @@ static NSString * PBStringFromBranchFilterType(PBGitXBranchFilterType type) {
|
||||
- (void)findInModeScriptCommand:(NSScriptCommand *)command;
|
||||
|
||||
-(NSNumber *)countCommintsOf:(NSString *)branchs;
|
||||
+(bool)isLocalBranch:(NSString *)name;
|
||||
+(bool)isLocalBranch:(NSString *)branch branchNameInto:(NSString **)name;
|
||||
|
||||
|
||||
@property (assign) BOOL hasChanged;
|
||||
|
||||
+15
-8
@@ -269,9 +269,10 @@ NSString* PBGitRepositoryErrorDomain = @"GitXErrorDomain";
|
||||
PBGitRef *newRef = [PBGitRef refFromString:[components objectAtIndex:0]];
|
||||
PBGitRevSpecifier *revSpec = [[PBGitRevSpecifier alloc] initWithRef:newRef];
|
||||
|
||||
if([PBGitRepository isLocalBranch:[components objectAtIndex:0]]){
|
||||
[revSpec setAhead:[self countCommintsOf:[NSString stringWithFormat:@"origin..%@",[components objectAtIndex:0]]]];
|
||||
[revSpec setBehind:[self countCommintsOf:[NSString stringWithFormat:@"%@..origin",[components objectAtIndex:0]]]];
|
||||
NSString *bName;
|
||||
if([PBGitRepository isLocalBranch:[components objectAtIndex:0] branchNameInto:&bName]){
|
||||
[revSpec setAhead:[self countCommintsOf:[NSString stringWithFormat:@"origin/%@..%@",bName,bName]]];
|
||||
[revSpec setBehind:[self countCommintsOf:[NSString stringWithFormat:@"%@..origin/%@",bName,bName]]];
|
||||
}
|
||||
[self addBranch:revSpec];
|
||||
[self addRef:newRef fromParameters:components];
|
||||
@@ -288,17 +289,23 @@ NSString* PBGitRepositoryErrorDomain = @"GitXErrorDomain";
|
||||
[[[self windowController] window] setTitle:[self displayName]];
|
||||
}
|
||||
|
||||
+(bool)isLocalBranch:(NSString *)name
|
||||
+(bool)isLocalBranch:(NSString *)branch branchNameInto:(NSString **)name
|
||||
{
|
||||
NSScanner *scanner=[NSScanner scannerWithString:name];
|
||||
return [scanner scanString:@"refs/heads/" intoString:NULL];
|
||||
NSScanner *scanner=[NSScanner scannerWithString:branch];
|
||||
bool is=[scanner scanString:@"refs/heads/" intoString:NULL];
|
||||
if(is && (name)){
|
||||
*name=[branch substringFromIndex:[scanner scanLocation]];
|
||||
}
|
||||
return is;
|
||||
}
|
||||
|
||||
-(NSNumber *)countCommintsOf:(NSString *)branchs
|
||||
{
|
||||
NSLog(@"branchs:'%@'",branchs);
|
||||
NSArray *args = [NSArray arrayWithObjects:@"rev-list", branchs, nil];
|
||||
NSString *o = [self outputForArguments:args];
|
||||
if ([o length]==0) {
|
||||
int ret;
|
||||
NSString *o = [self outputForArguments:args retValue:&ret];
|
||||
if ((ret!=0) || ([o length]==0)) {
|
||||
return NULL;
|
||||
}
|
||||
NSArray *commits = [o componentsSeparatedByString:@"\n"];
|
||||
|
||||
@@ -223,8 +223,8 @@
|
||||
|
||||
- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(PBSourceViewCell *)cell forTableColumn:(NSTableColumn *)tableColumn item:(PBSourceViewItem *)item
|
||||
{
|
||||
cell.isCheckedOut = [item.revSpecifier isEqual:[repository headRef]];
|
||||
if(item.revSpecifier!=NULL){
|
||||
cell.isCheckedOut = [item.revSpecifier isEqual:[repository headRef]];
|
||||
cell.behind=[item.revSpecifier behind];
|
||||
cell.ahead=[item.revSpecifier ahead];
|
||||
}else{
|
||||
|
||||
Reference in New Issue
Block a user