OSDN Git Service

Git Log Cache Basic working
[tortoisegit/TortoiseGitJp.git] / src / Git / Git.h
1 #pragma once\r
2 #include "GitType.h"\r
3 #include "GitRev.h"\r
4 #include "GitStatus.h"\r
5 #include "GitAdminDir.h"\r
6 \r
7 \r
8 class CGit\r
9 {\r
10 private:\r
11         GitAdminDir m_GitDir;\r
12 public:\r
13         static BOOL CheckMsysGitDir();\r
14 \r
15 //      static CString m_MsysGitPath;\r
16         CGit(void);\r
17         ~CGit(void);\r
18         \r
19         int Run(CString cmd, CString* output,int code);\r
20         int Run(CString cmd, BYTE_VECTOR *byte_array);\r
21 \r
22         int RunAsync(CString cmd,PROCESS_INFORMATION *pi, HANDLE* hRead, CString *StdioFile=NULL);\r
23         int RunLogFile(CString cmd, CString &filename);\r
24         CString GetUserName(void);\r
25         CString GetUserEmail(void);\r
26         CString GetCurrentBranch(void);\r
27 \r
28         bool SetCurrentDir(CString path)\r
29         {\r
30                 return m_GitDir.HasAdminDir(path,&m_CurrentDir);\r
31         }\r
32         CString m_CurrentDir;\r
33 \r
34         typedef enum\r
35         {\r
36                 BRANCH_LOCAL=0x1,\r
37                 BRANCH_REMOTE=0x2,\r
38                 BRANCH_ALL=BRANCH_LOCAL|BRANCH_REMOTE,\r
39         }BRANCH_TYPE;\r
40 \r
41         typedef enum\r
42         {\r
43                 LOG_INFO_STAT=0x1,\r
44                 LOG_INFO_FILESTATE=0x2,\r
45                 LOG_INFO_PATCH=0x4,\r
46                 LOG_INFO_FULLHISTORY=0x8,\r
47                 LOG_INFO_BOUNDARY=0x10,\r
48         LOG_INFO_ALL_BRANCH=0x20,\r
49                 LOG_INFO_ONLY_HASH=0x40,\r
50                 LOG_INFO_DETECT_RENAME=0x80,\r
51                 LOG_INFO_DETECT_COPYRENAME=0x100\r
52         }LOG_INFO_MASK;\r
53 \r
54         int GetRemoteList(STRING_VECTOR &list);\r
55         int GetBranchList(STRING_VECTOR &list, int *Current,BRANCH_TYPE type=BRANCH_LOCAL);\r
56         int GetTagList(STRING_VECTOR &list);\r
57         int GetMapHashToFriendName(MAP_HASH_NAME &map);\r
58         \r
59         //hash is empty means all. -1 means all\r
60         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
61 \r
62         git_revnum_t GetHash(CString &friendname);\r
63 \r
64         int BuildOutputFormat(CString &format,bool IsFull=TRUE);\r
65         //int GetShortLog(CString &log,CTGitPath * path=NULL, int count =-1);\r
66         static void StringAppend(CString *str,BYTE *p,int code=CP_UTF8,int length=-1);\r
67 \r
68         BOOL IsInitRepos();\r
69         \r
70 };\r
71 extern void GetTempPath(CString &path);\r
72 extern CString GetTempFile();\r
73 \r
74 \r
75 extern CGit g_Git;