+}\r
+\r
+int CGit::GetTagList(CStringList &list)\r
+{\r
+ int ret;\r
+ CString cmd,output;\r
+ cmd=_T("git.exe tag -l");\r
+ int i=0;\r
+ ret=g_Git.Run(cmd,&output);\r
+ if(!ret)\r
+ { \r
+ int pos=0;\r
+ CString one;\r
+ while( pos>=0 )\r
+ {\r
+ i++;\r
+ one=output.Tokenize(_T("\n"),pos);\r
+ list.AddTail(one);\r
+ }\r
+ }\r
+ return ret;\r
+}\r
+\r
+int CGit::GetBranchList(CStringList &list,int *current,BRANCH_TYPE type)\r
+{\r
+ int ret;\r
+ CString cmd,output;\r
+ cmd=_T("git.exe branch");\r
+\r
+ if(type==(BRANCH_LOCAL|BRANCH_REMOTE))\r
+ cmd+=_T(" -a");\r
+ else if(type==BRANCH_REMOTE)\r
+ cmd+=_T(" -r");\r
+\r
+ int i=0;\r
+ ret=g_Git.Run(cmd,&output);\r
+ if(!ret)\r
+ { \r
+ int pos=0;\r
+ CString one;\r
+ while( pos>=0 )\r
+ {\r
+ i++;\r
+ one=output.Tokenize(_T("\n"),pos);\r
+ list.AddTail(one.Right(one.GetLength()-2));\r
+ if(one[0] == _T('*'))\r
+ if(current)\r
+ *current=i;\r
+ }\r
+ }\r
+ return ret;\r
+}\r
+\r
+int CGit::GetRemoteList(CStringList &list)\r
+{\r
+ int ret;\r
+ CString cmd,output;\r
+ cmd=_T("git.exe config --get-regexp remote.*.url");\r
+ ret=g_Git.Run(cmd,&output);\r
+ if(!ret)\r
+ {\r
+ int pos=0;\r
+ CString one;\r
+ while( pos>=0 )\r
+ {\r
+ one=output.Tokenize(_T("\n"),pos);\r
+ int start=one.Find(_T("."),0);\r
+ if(start>0)\r
+ {\r
+ CString url;\r
+ url=one.Right(one.GetLength()-start-1);\r
+ one=url;\r
+ one=one.Left(one.Find(_T("."),0));\r
+ list.AddTail(one);\r
+ }\r
+ }\r
+ }\r
+ return ret;\r
+}\r
+\r
+int CGit::GetMapHashToFriendName(MAP_HASH_NAME &map)\r
+{\r
+ int ret;\r
+ CString cmd,output;\r
+ cmd=_T("git show-ref");\r
+ ret=g_Git.Run(cmd,&output);\r
+ if(!ret)\r
+ {\r
+ int pos=0;\r
+ CString one;\r
+ while( pos>=0 )\r
+ {\r
+ one=output.Tokenize(_T("\n"),pos);\r
+ int start=one.Find(_T(" "),0);\r
+ if(start>0)\r
+ {\r
+ CString name;\r
+ name=one.Right(one.GetLength()-start-1);\r
+\r
+ CString hash;\r
+ hash=one.Left(start);\r
+\r
+ map[hash].push_back(name);\r
+ }\r
+ }\r
+ }\r
+ return ret;\r