// // PBGitRepository.h // GitTest // // Created by Pieter de Bie on 13-06-08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import #import "PBGitHistoryList.h" #import "PBGitRevSpecifier.h" #import "PBGitConfig.h" #import "PBGitRefish.h" extern NSString* PBGitRepositoryErrorDomain; typedef enum branchFilterTypes { kGitXAllBranchesFilter = 0, kGitXLocalRemoteBranchesFilter, kGitXSelectedBranchFilter } PBGitXBranchFilterType; static NSString * PBStringFromBranchFilterType(PBGitXBranchFilterType type) { switch (type) { case kGitXAllBranchesFilter: return @"All"; break; case kGitXLocalRemoteBranchesFilter: return @"Local"; break; case kGitXSelectedBranchFilter: return @"Selected"; break; default: break; } return @"Not a branch filter type"; } @class PBGitWindowController; @class PBGitCommit; @class PBGitResetController; @class PBStashController; @class PBSubmoduleController; @interface PBGitRepository : NSDocument { PBGitHistoryList* revisionList; PBGitConfig *config; BOOL hasChanged; NSMutableArray *branches; PBGitRevSpecifier *currentBranch; NSInteger currentBranchFilter; NSMutableDictionary *refs; PBGitRevSpecifier *_headRef; // Caching NSString* _headSha; PBStashController *stashController; PBSubmoduleController *submoduleController; PBGitResetController *resetController; } @property (nonatomic, retain, readonly) PBStashController *stashController; @property (nonatomic, retain, readonly) PBSubmoduleController *submoduleController; @property (nonatomic, retain, readonly) PBGitResetController *resetController; - (void) cloneRepositoryToPath:(NSString *)path bare:(BOOL)isBare; - (void) beginAddRemote:(NSString *)remoteName forURL:(NSString *)remoteURL; - (void) beginFetchFromRemoteForRef:(PBGitRef *)ref; - (void) beginPullFromRemote:(PBGitRef *)remoteRef forRef:(PBGitRef *)ref; - (void) beginPushRef:(PBGitRef *)ref toRemote:(PBGitRef *)remoteRef; - (BOOL) checkoutRefish:(id )ref; - (BOOL) checkoutFiles:(NSArray *)files fromRefish:(id )ref; - (BOOL) mergeWithRefish:(id )ref; - (BOOL) cherryPickRefish:(id )ref; - (BOOL) rebaseBranch:(id )branch onRefish:(id )upstream; - (BOOL) createBranch:(NSString *)branchName atRefish:(id )ref; - (BOOL) createTag:(NSString *)tagName message:(NSString *)message atRefish:(id )commitSHA; - (BOOL) deleteRemote:(PBGitRef *)ref; - (BOOL) deleteRef:(PBGitRef *)ref; - (BOOL) hasSvnRemote; - (NSArray*) svnRemotes; - (BOOL) svnFetch:(NSString*)remoteName; - (BOOL) svnRebase:(NSString*)remoteName; - (BOOL) svnDcommit:(NSString*)commitURL; - (NSFileHandle*) handleForCommand:(NSString*) cmd; - (NSFileHandle*) handleForArguments:(NSArray*) args; - (NSFileHandle*) handleInWorkDirForArguments:(NSArray *)args; - (NSFileHandle *) handleInWorkDirForArguments:(NSArray *)args; - (NSString*) outputForCommand:(NSString*) cmd; - (NSString *)outputForCommand:(NSString *)str retValue:(int *)ret; - (NSString *)outputForArguments:(NSArray *)arguments inputString:(NSString *)input retValue:(int *)ret; - (NSString *)outputForArguments:(NSArray *)arguments inputString:(NSString *)input byExtendingEnvironment:(NSDictionary *)dict retValue:(int *)ret; - (NSString*) outputForArguments:(NSArray*) args; - (NSString*) outputForArguments:(NSArray*) args retValue:(int *)ret; - (NSString *)outputInWorkdirForArguments:(NSArray*) arguments; - (NSString *)outputInWorkdirForArguments:(NSArray*) arguments retValue:(int *)ret; - (BOOL)executeHook:(NSString *)name output:(NSString **)output; - (BOOL)executeHook:(NSString *)name withArgs:(NSArray*) arguments output:(NSString **)output; - (NSString *)workingDirectory; - (NSString *) projectName; - (NSString *)gitIgnoreFilename; - (BOOL)isBareRepository; - (void) reloadRefs; - (void) addRef:(PBGitRef *)ref fromParameters:(NSArray *)params; - (void) lazyReload; - (PBGitRevSpecifier*)headRef; - (NSString *)headSHA; - (PBGitCommit *)headCommit; - (NSString *)shaForRef:(PBGitRef *)ref; - (PBGitCommit *)commitForRef:(PBGitRef *)ref; - (PBGitCommit *)commitForSHA:(NSString *)sha; - (BOOL)isOnSameBranch:(NSString *)baseSHA asSHA:(NSString *)testSHA; - (BOOL)isSHAOnHeadBranch:(NSString *)testSHA; - (BOOL)isRefOnHeadBranch:(PBGitRef *)testRef; - (BOOL)checkRefFormat:(NSString *)refName; - (BOOL)refExists:(PBGitRef *)ref; - (PBGitRef *)refForName:(NSString *)name; - (NSArray *) remotes; - (BOOL) hasRemotes; - (PBGitRef *) remoteRefForBranch:(PBGitRef *)branch error:(NSError **)error; - (NSString *) infoForRemote:(NSString *)remoteName; - (NSArray*) URLsForRemote:(NSString*)remoteName; - (void) readCurrentBranch; - (PBGitRevSpecifier*) addBranch: (PBGitRevSpecifier*) rev; - (BOOL)removeBranch:(PBGitRevSpecifier *)rev; - (NSString*) parseSymbolicReference:(NSString*) ref; - (NSString*) parseReference:(NSString*) ref; + (NSURL*)gitDirForURL:(NSURL*)repositoryURL; + (NSURL*)baseDirForURL:(NSURL*)repositoryURL; - (id) initWithURL: (NSURL*) path; - (void) setup; - (void) forceUpdateRevisions; // for the scripting bridge - (void)findInModeScriptCommand:(NSScriptCommand *)command; - (NSMenu *) menu; +(bool)isLocalBranch:(NSString *)branch branchNameInto:(NSString **)name; @property (assign) BOOL hasChanged; @property (readonly) PBGitWindowController *windowController; @property (readonly) PBGitConfig *config; @property (retain) PBGitHistoryList *revisionList; @property (assign) NSMutableArray* branches; @property (assign) PBGitRevSpecifier *currentBranch; @property (assign) NSInteger currentBranchFilter; @property (retain) NSMutableDictionary* refs; @end