7 #define MAX_DIRBUFFER 1000
\r
11 GetCurrentDirectory(MAX_DIRBUFFER,m_CurrentDir.GetBuffer(MAX_DIRBUFFER));
\r
20 int CGit::Run(CString cmd, CString* output)
\r
22 SECURITY_ATTRIBUTES sa;
\r
23 HANDLE hRead, hWrite;
\r
25 sa.nLength = sizeof(SECURITY_ATTRIBUTES);
\r
26 sa.lpSecurityDescriptor=NULL;
\r
27 sa.bInheritHandle=TRUE;
\r
28 if(!CreatePipe(&hRead,&hWrite,&sa,0))
\r
30 return GIT_ERROR_OPEN_PIP;
\r
34 PROCESS_INFORMATION pi;
\r
35 si.cb=sizeof(STARTUPINFO);
\r
36 GetStartupInfo(&si);
\r
38 si.hStdError=hWrite;
\r
39 si.hStdOutput=hWrite;
\r
40 si.wShowWindow=SW_HIDE;
\r
41 si.dwFlags=STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
\r
44 if(!CreateProcess(NULL,(LPWSTR)cmd.GetString(), NULL,NULL,TRUE,NULL,NULL,(LPWSTR)m_CurrentDir.GetString(),&si,&pi))
\r
47 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
\r
48 NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
\r
51 return GIT_ERROR_CREATE_PROCESS;
\r
54 CloseHandle(hWrite);
\r
57 while(ReadFile(hRead,buffer,4090,&readnumber,NULL))
\r
59 buffer[readnumber]=0;
\r
61 output->Append(A2W(buffer));
\r
65 CloseHandle(pi.hThread);
\r
66 CloseHandle(pi.hProcess);
\r
72 CString CGit::GetUserName(void)
\r
75 Run(_T("git.cmd config user.name"),&UserName);
\r
78 CString CGit::GetUserEmail(void)
\r
81 Run(_T("git.cmd config user.email"),&UserName);
\r
85 CString CGit::GetCurrentBranch(void)
\r
88 Run(_T("git.cmd branch"),&branch);
\r
89 if(branch.GetLength()>0)
\r
91 branch.Replace(_T('*'),_T(' '));
\r
98 int CGit::GetLog(CString& logOut)
\r
103 cmd=("git.cmd log -C --numstat --pretty=format:\"");
\r
104 log.Format(_T("#<%c>%%n"),LOG_REV_ITEM_BEGIN);
\r
106 log.Format(_T("#<%c>%%an%%n"),LOG_REV_AUTHOR_NAME);
\r
108 log.Format(_T("#<%c>%%ae%%n"),LOG_REV_AUTHOR_EMAIL);
\r
110 log.Format(_T("#<%c>%%ai%%n"),LOG_REV_AUTHOR_DATE);
\r
112 log.Format(_T("#<%c>%%cn%%n"),LOG_REV_COMMIT_NAME);
\r
114 log.Format(_T("#<%c>%%ce%%n"),LOG_REV_COMMIT_EMAIL);
\r
116 log.Format(_T("#<%c>%%ci%%n"),LOG_REV_COMMIT_DATE);
\r
118 log.Format(_T("#<%c>%%s%%n"),LOG_REV_COMMIT_SUBJECT);
\r
120 log.Format(_T("#<%c>%%b%%n"),LOG_REV_COMMIT_BODY);
\r
122 log.Format(_T("#<%c>%%H%%n"),LOG_REV_COMMIT_HASH);
\r
124 log.Format(_T("#<%c>%%P%%n"),LOG_REV_COMMIT_PARENT);
\r
126 log.Format(_T("#<%c>%%n"),LOG_REV_COMMIT_FILE);
\r
128 cmd += CString(_T("\""));
\r