#include "GitStatus.h"\r
#include "GitAdminDir.h"\r
\r
+class CGitCall\r
+{\r
+public:\r
+ CGitCall(){}\r
+ CGitCall(CString cmd):m_Cmd(cmd){}\r
+\r
+ CString GetCmd()const{return m_Cmd;}\r
+ void SetCmd(CString cmd){m_Cmd=cmd;}\r
+\r
+ //This function is called when command output data is available.\r
+ //When this function returns 'true' the git command should be aborted.\r
+ //This behavior is not implemented yet.\r
+ virtual bool OnOutputData(const BYTE* data, size_t size)=0;\r
+ virtual void OnEnd(){}\r
+\r
+private:\r
+ CString m_Cmd;\r
+\r
+};\r
+\r
+class CTGitPath;\r
\r
class CGit\r
{\r
\r
int Run(CString cmd, CString* output,int code);\r
int Run(CString cmd, BYTE_VECTOR *byte_array);\r
+ int Run(CGitCall* pcall);\r
\r
int RunAsync(CString cmd,PROCESS_INFORMATION *pi, HANDLE* hRead, CString *StdioFile=NULL);\r
int RunLogFile(CString cmd, CString &filename);\r
CString GetUserName(void);\r
CString GetUserEmail(void);\r
CString GetCurrentBranch(void);\r
+ // read current branch name from HEAD file, returns 0 on success, -1 on failure, 1 detached (branch name "HEAD" returned)\r
+ int GetCurrentBranchFromFile(const CString &sProjectRoot, CString &sBranchOut);\r
+ BOOL CheckCleanWorkTree();\r
+ int Revert(CTGitPath &path,bool keep=true);\r
+ int Revert(CTGitPathList &list,bool keep=true);\r
\r
bool SetCurrentDir(CString path)\r
{\r
int GetMapHashToFriendName(MAP_HASH_NAME &map);\r
\r
//hash is empty means all. -1 means all\r
- int GetLog(BYTE_VECTOR& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME);\r
+\r
+ int GetLog(CGitCall* pgitCall, CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME,\r
+ CString *from=NULL,CString *to=NULL);\r
+ int GetLog(BYTE_VECTOR& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME,\r
+ CString *from=NULL,CString *to=NULL);\r
+\r
+ BOOL EnumFiles(const char *pszProjectPath, const char *pszSubPath, unsigned int nFlags, WGENUMFILECB *pEnumCb, void *pUserData);\r
\r
git_revnum_t GetHash(CString &friendname);\r
\r
static void StringAppend(CString *str,BYTE *p,int code=CP_UTF8,int length=-1);\r
\r
BOOL IsInitRepos();\r
+ int ListConflictFile(CTGitPathList &list,CTGitPath *path=NULL);\r
\r
};\r
extern void GetTempPath(CString &path);\r
\r
extern CGit g_Git;\r
\r
-extern LPBYTE wgGetRevisionID_safe(const char *pszProjectPath, const char *pszName);\r
-extern BOOL wgEnumFiles_safe(const char *pszProjectPath, const char *pszSubPath, unsigned int nFlags, WGENUMFILECB *pEnumCb, void *pUserData);\r
+inline static BOOL wgEnumFiles(const char *pszProjectPath, const char *pszSubPath, unsigned int nFlags, WGENUMFILECB *pEnumCb, void *pUserData) { return g_Git.EnumFiles(pszProjectPath, pszSubPath, nFlags, pEnumCb, pUserData); }\r