+\r
+int GitRev::SafeFetchFullInfo(CGit *git)\r
+{\r
+ if(InterlockedExchange(&m_IsUpdateing,TRUE) == FALSE)\r
+ {\r
+ //GitRev rev;\r
+ BYTE_VECTOR onelog;\r
+ TCHAR oldmark=this->m_Mark;\r
+ \r
+ git->GetLog(onelog,m_CommitHash,NULL,1,CGit::LOG_INFO_STAT|CGit::LOG_INFO_FILESTATE|CGit::LOG_INFO_DETECT_COPYRENAME);\r
+ CString oldhash=m_CommitHash;\r
+ GIT_REV_LIST oldlist=this->m_ParentHash;\r
+ ParserFromLog(onelog);\r
+ \r
+ //ASSERT(oldhash==m_CommitHash);\r
+ if(oldmark!=0)\r
+ this->m_Mark=oldmark; //parser full log will cause old mark overwrited. \r
+ //So we need keep old bound mark.\r
+ this->m_ParentHash=oldlist;\r
+ InterlockedExchange(&m_IsUpdateing,FALSE);\r
+ InterlockedExchange(&m_IsFull,TRUE);\r
+ return 0;\r
+ }\r
+ return -1;\r
+}
\ No newline at end of file