mirror of
https://github.com/kennethreitz-archive/gitx.git
synced 2026-06-05 23:40:18 +00:00
PBGitCommit: Don't store refs
We already keep this dictionary in our repository. Rather than adding a pointer to it on every commit in our rev walk, just look it up lazily in the dictionary when we need to. That cuts down some time in the initial revwalk and also removes some stupid code :)
This commit is contained in:
+1
-1
@@ -21,7 +21,7 @@
|
||||
NSString* details;
|
||||
NSString *_patch;
|
||||
NSArray* parents;
|
||||
NSMutableArray* refs;
|
||||
|
||||
int timestamp;
|
||||
char sign;
|
||||
id lineInfo;
|
||||
|
||||
+14
-4
@@ -11,7 +11,7 @@
|
||||
|
||||
@implementation PBGitCommit
|
||||
|
||||
@synthesize repository, subject, timestamp, author, parentShas, nParents, sign, lineInfo, refs;
|
||||
@synthesize repository, subject, timestamp, author, parentShas, nParents, sign, lineInfo;
|
||||
|
||||
- (NSArray *) parents
|
||||
{
|
||||
@@ -107,9 +107,19 @@
|
||||
if (!self.refs)
|
||||
return;
|
||||
|
||||
[refs removeObject:ref];
|
||||
if ([refs count] == 0)
|
||||
refs = NULL;
|
||||
[self.refs removeObject:ref];
|
||||
if ([self.refs count] == 0)
|
||||
self.refs = NULL;
|
||||
}
|
||||
|
||||
- (NSMutableArray *)refs
|
||||
{
|
||||
return [[repository refs] objectForKey:[self realSha]];
|
||||
}
|
||||
|
||||
- (void) setRefs:(NSMutableArray *)refs
|
||||
{
|
||||
[[repository refs] setObject:[self realSha] forKey:[self realSha]];
|
||||
}
|
||||
|
||||
- (void)finalize
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
PBGraphCellInfo *previous;
|
||||
void *pl;
|
||||
int curLane;
|
||||
|
||||
NSDictionary *refs;
|
||||
}
|
||||
|
||||
- (id) initWithRepository:(PBGitRepository *)repo;
|
||||
|
||||
@@ -21,7 +21,6 @@ using namespace std;
|
||||
|
||||
- (id) initWithRepository: (PBGitRepository*) repo
|
||||
{
|
||||
refs = repo.refs;
|
||||
pl = new std::list<PBGitLane *>;
|
||||
|
||||
PBGitLane::resetColors();
|
||||
|
||||
+1
-1
@@ -62,5 +62,5 @@ extern NSString* PBGitRepositoryErrorDomain;
|
||||
@property (retain) PBGitRevList* revisionList;
|
||||
@property (assign) NSMutableArray* branches;
|
||||
@property (assign) PBGitRevSpecifier *currentBranch;
|
||||
@property (assign) NSMutableDictionary* refs;
|
||||
@property (retain) NSMutableDictionary* refs;
|
||||
@end
|
||||
|
||||
@@ -228,8 +228,6 @@ NSString* PBGitRepositoryErrorDomain = @"GitXErrorDomain";
|
||||
[self addRef:newRef fromParameters:components];
|
||||
}
|
||||
|
||||
self.refs = refs;
|
||||
|
||||
// Add an "All branches" option in the branches list
|
||||
[self addBranch:[PBGitRevSpecifier allBranchesRevSpec]];
|
||||
[self addBranch:[PBGitRevSpecifier localBranchesRevSpec]];
|
||||
|
||||
+1
-6
@@ -71,7 +71,6 @@ using namespace std;
|
||||
NSDate *start = [NSDate date];
|
||||
NSMutableArray* revisions = [NSMutableArray array];
|
||||
PBGitGrapher* g = [[PBGitGrapher alloc] initWithRepository: repository];
|
||||
NSDictionary* refs = [repository refs];
|
||||
|
||||
NSMutableArray* arguments;
|
||||
BOOL showSign = [rev hasLeftRight];
|
||||
@@ -170,11 +169,7 @@ using namespace std;
|
||||
|
||||
[revisions addObject: newCommit];
|
||||
[g decorateCommit: newCommit];
|
||||
|
||||
// 0.1 second on linux-2.6
|
||||
if (refs && [refs objectForKey:[newCommit realSha]])
|
||||
newCommit.refs = [refs objectForKey:[newCommit realSha]];
|
||||
|
||||
|
||||
if (++num % 1000 == 0)
|
||||
[self performSelectorOnMainThread:@selector(setCommits:) withObject:revisions waitUntilDone:NO];
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ var commit;
|
||||
var Commit = function(obj) {
|
||||
this.object = obj;
|
||||
|
||||
this.refs = obj.refs;
|
||||
this.refs = obj.refs();
|
||||
this.author_name = obj.author;
|
||||
this.sha = obj.realSha();
|
||||
this.parents = obj.parents;
|
||||
|
||||
Reference in New Issue
Block a user