#pragma once\r
+#include "GitType.h"\r
#include "GitRev.h"\r
#include "GitStatus.h"\r
#include "GitAdminDir.h"\r
-enum\r
-{\r
- GIT_SUCCESS=0,\r
- GIT_ERROR_OPEN_PIP,\r
- GIT_ERROR_CREATE_PROCESS,\r
- GIT_ERROR_GET_EXIT_CODE\r
-};\r
\r
-typedef std::vector<CString> STRING_VECTOR;\r
-typedef std::map<CString, STRING_VECTOR> MAP_HASH_NAME;\r
\r
class CGit\r
{\r
private:\r
GitAdminDir m_GitDir;\r
public:\r
- static CString m_MsysGitPath;\r
+ static BOOL CheckMsysGitDir();\r
+ static CString ms_LastMsysGitDir; // the last msysgitdir added to the path, blank if none\r
+\r
+// static CString m_MsysGitPath;\r
CGit(void);\r
~CGit(void);\r
- int Run(CString cmd, CString* output);\r
- int RunAsync(CString cmd,PROCESS_INFORMATION *pi, HANDLE* hRead);\r
+ \r
+ int Run(CString cmd, CString* output,int code);\r
+ int Run(CString cmd, BYTE_VECTOR *byte_array);\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
BRANCH_ALL=BRANCH_LOCAL|BRANCH_REMOTE,\r
}BRANCH_TYPE;\r
\r
- int GetRemoteList(CStringList &list);\r
- int GetBranchList(CStringList &list, int *Current,BRANCH_TYPE type=BRANCH_LOCAL);\r
- int GetTagList(CStringList &list);\r
+ typedef enum\r
+ {\r
+ LOG_INFO_STAT=0x1,\r
+ LOG_INFO_FILESTATE=0x2,\r
+ LOG_INFO_PATCH=0x4,\r
+ LOG_INFO_FULLHISTORY=0x8,\r
+ LOG_INFO_BOUNDARY=0x10,\r
+ LOG_INFO_ALL_BRANCH=0x20,\r
+ LOG_INFO_ONLY_HASH=0x40,\r
+ LOG_INFO_DETECT_RENAME=0x80,\r
+ LOG_INFO_DETECT_COPYRENAME=0x100,\r
+ LOG_INFO_FIRST_PARENT = 0x200,\r
+ LOG_INFO_NO_MERGE = 0x400,\r
+ LOG_INFO_FOLLOW = 0x800\r
+ }LOG_INFO_MASK;\r
+\r
+ int GetRemoteList(STRING_VECTOR &list);\r
+ int GetBranchList(STRING_VECTOR &list, int *Current,BRANCH_TYPE type=BRANCH_LOCAL);\r
+ int GetTagList(STRING_VECTOR &list);\r
int GetMapHashToFriendName(MAP_HASH_NAME &map);\r
\r
- int GetLog(CString& logOut);\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
git_revnum_t GetHash(CString &friendname);\r
+\r
+ int BuildOutputFormat(CString &format,bool IsFull=TRUE);\r
+ //int GetShortLog(CString &log,CTGitPath * path=NULL, int count =-1);\r
+ static void StringAppend(CString *str,BYTE *p,int code=CP_UTF8,int length=-1);\r
+\r
+ BOOL IsInitRepos();\r
+ static BOOL IsVista();\r
\r
};\r
extern void GetTempPath(CString &path);\r
extern CString GetTempFile();\r
\r
\r
-extern CGit g_Git;
\ No newline at end of file
+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