OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / src / Git / GitRev.h
1 #pragma once\r
2 #include "gittype.h"\r
3 #include "GitStatus.h"\r
4 #include "AtlTime.h"\r
5 #include "GitHash.h"\r
6 #include "GitDll.h"\r
7 \r
8 typedef std::vector<CGitHash> GIT_REV_LIST;\r
9 \r
10 #define LOG_REV_AUTHOR_NAME     _T('0')\r
11 #define LOG_REV_AUTHOR_EMAIL    _T('1')\r
12 #define LOG_REV_AUTHOR_DATE     _T('2')\r
13 #define LOG_REV_COMMIT_NAME     _T('3')\r
14 #define LOG_REV_COMMIT_EMAIL    _T('4')\r
15 #define LOG_REV_COMMIT_DATE             _T('5')\r
16 #define LOG_REV_COMMIT_SUBJECT  _T('6')\r
17 #define LOG_REV_COMMIT_BODY             _T('7')\r
18 #define LOG_REV_COMMIT_HASH             _T('8')\r
19 #define LOG_REV_COMMIT_PARENT   _T('9')\r
20 #define LOG_REV_COMMIT_FILE             _T('A')\r
21 #define LOG_REV_ITEM_BEGIN              _T('B')\r
22 #define LOG_REV_ITEM_END                _T('C')\r
23 \r
24 class CGit;\r
25 \r
26 class GitRev\r
27 {\r
28 public:\r
29         GitRev(void);\r
30 //      GitRev(GitRev &rev);\r
31 //      GitRev &operator=(GitRev &rev);\r
32         ~GitRev(void);\r
33         \r
34         enum\r
35         {\r
36                 REV_HEAD = -1,                  ///< head revision\r
37                 REV_BASE = -2,                  ///< base revision\r
38                 REV_WC = -3,                    ///< revision of the working copy\r
39                 REV_UNSPECIFIED = -4,   ///< unspecified revision\r
40         };\r
41         \r
42         int CopyFrom(GitRev &rev,bool OmitParentAndMark=false);\r
43 \r
44         static CString GetHead(){return CString(_T("HEAD"));};\r
45         static CString GetWorkingCopy(){return CString(GIT_REV_ZERO);};\r
46         \r
47         CString m_AuthorName;\r
48         CString m_AuthorEmail;\r
49         CTime   m_AuthorDate;\r
50         CString m_CommitterName;\r
51         CString m_CommitterEmail;\r
52         CTime m_CommitterDate;\r
53         CString m_Subject;\r
54         CString m_Body;\r
55         CGitHash m_CommitHash;\r
56         GIT_REV_LIST m_ParentHash;\r
57         CTGitPathList m_Files;\r
58         int     m_Action;\r
59         TCHAR m_Mark;\r
60         CString m_Ref;\r
61         CString m_RefAction;\r
62 \r
63         BOOL IsBoundary(){return m_Mark == _T('-');}\r
64 \r
65         void Clear();\r
66         int ParserFromLog(BYTE_VECTOR &log,int start=0);\r
67         CTime ConverFromString(CString input);\r
68         inline int ParentsCount(){return m_ParentHash.size();}\r
69         \r
70         //Show version tree Graphic\r
71         std::vector<int> m_Lanes;\r
72 \r
73         volatile LONG m_IsFull;\r
74         volatile LONG m_IsUpdateing;\r
75         \r
76         int SafeFetchFullInfo(CGit *git);\r
77 \r
78         int ParserFromCommit(GIT_COMMIT *commit);\r
79         int ParserParentFromCommit(GIT_COMMIT *commit);\r
80 \r
81         int GetCommitFromHash(CGitHash &hash);\r
82         int GetCommit(CString &Rev);\r
83 \r
84 public:\r
85         void DbgPrint();\r
86 private:\r
87         TIME_ZONE_INFORMATION m_TimeZone;\r
88 };\r