@@ -11,22 +11,91 @@ public struct GitLogEntry
11
11
private const string Today = "Today" ;
12
12
private const string Yesterday = "Yesterday" ;
13
13
14
- public string CommitID ;
15
- public string MergeA ;
16
- public string MergeB ;
17
- public string AuthorName ;
18
- public string AuthorEmail ;
19
- public string CommitEmail ;
20
- public string CommitName ;
21
- public string Summary ;
22
- public string Description ;
23
- public string TimeString ;
24
- public string CommitTimeString ;
25
- public List < GitStatusEntry > Changes ;
26
-
27
- public string ShortID
14
+ public static GitLogEntry Default = new GitLogEntry ( String . Empty , String . Empty , String . Empty , String . Empty , String . Empty , String . Empty , String . Empty , String . Empty , String . Empty , new List < GitStatusEntry > ( ) , String . Empty , String . Empty ) ;
15
+
16
+ public string commitID ;
17
+ public string mergeA ;
18
+ public string mergeB ;
19
+ public string authorName ;
20
+ public string authorEmail ;
21
+ public string commitEmail ;
22
+ public string commitName ;
23
+ public string summary ;
24
+ public string description ;
25
+ public string timeString ;
26
+ public string commitTimeString ;
27
+ public List < GitStatusEntry > changes ;
28
+
29
+ public GitLogEntry ( string commitID ,
30
+ string authorName , string authorEmail ,
31
+ string commitName , string commitEmail ,
32
+ string summary ,
33
+ string description ,
34
+ DateTimeOffset time , DateTimeOffset commitTime ,
35
+ List < GitStatusEntry > changes ,
36
+ string mergeA = null , string mergeB = null ) : this ( )
28
37
{
29
- get { return CommitID . Length < 7 ? CommitID : CommitID . Substring ( 0 , 7 ) ; }
38
+ Guard . ArgumentNotNull ( commitID , "commitID" ) ;
39
+ Guard . ArgumentNotNull ( authorName , "authorName" ) ;
40
+ Guard . ArgumentNotNull ( authorEmail , "authorEmail" ) ;
41
+ Guard . ArgumentNotNull ( commitEmail , "commitEmail" ) ;
42
+ Guard . ArgumentNotNull ( commitName , "commitName" ) ;
43
+ Guard . ArgumentNotNull ( summary , "summary" ) ;
44
+ Guard . ArgumentNotNull ( description , "description" ) ;
45
+ Guard . ArgumentNotNull ( changes , "changes" ) ;
46
+
47
+ this . commitID = commitID ;
48
+ this . authorName = authorName ;
49
+ this . authorEmail = authorEmail ;
50
+ this . commitEmail = commitEmail ;
51
+ this . commitName = commitName ;
52
+ this . summary = summary ;
53
+ this . description = description ;
54
+
55
+ Time = time ;
56
+ CommitTime = commitTime ;
57
+
58
+ this . changes = changes ;
59
+
60
+ this . mergeA = mergeA ?? string . Empty ;
61
+ this . mergeB = mergeB ?? string . Empty ;
62
+ }
63
+
64
+ public GitLogEntry ( string commitID ,
65
+ string authorName , string authorEmail ,
66
+ string commitName , string commitEmail ,
67
+ string summary ,
68
+ string description ,
69
+ string timeString , string commitTimeString ,
70
+ List < GitStatusEntry > changes ,
71
+ string mergeA = null , string mergeB = null ) : this ( )
72
+ {
73
+ Guard . ArgumentNotNull ( commitID , "commitID" ) ;
74
+ Guard . ArgumentNotNull ( authorName , "authorName" ) ;
75
+ Guard . ArgumentNotNull ( authorEmail , "authorEmail" ) ;
76
+ Guard . ArgumentNotNull ( commitEmail , "commitEmail" ) ;
77
+ Guard . ArgumentNotNull ( commitName , "commitName" ) ;
78
+ Guard . ArgumentNotNull ( summary , "summary" ) ;
79
+ Guard . ArgumentNotNull ( description , "description" ) ;
80
+ Guard . ArgumentNotNull ( timeString , "timeString" ) ;
81
+ Guard . ArgumentNotNull ( commitTimeString , "commitTimeString" ) ;
82
+ Guard . ArgumentNotNull ( changes , "changes" ) ;
83
+
84
+ this . commitID = commitID ;
85
+ this . authorName = authorName ;
86
+ this . authorEmail = authorEmail ;
87
+ this . commitEmail = commitEmail ;
88
+ this . commitName = commitName ;
89
+ this . summary = summary ;
90
+ this . description = description ;
91
+
92
+ this . timeString = timeString ;
93
+ this . commitTimeString = commitTimeString ;
94
+
95
+ this . changes = changes ;
96
+
97
+ this . mergeA = mergeA ?? string . Empty ;
98
+ this . mergeB = mergeB ?? string . Empty ;
30
99
}
31
100
32
101
public string PrettyTimeString
@@ -49,37 +118,62 @@ public DateTimeOffset Time
49
118
{
50
119
if ( ! timeValue . HasValue )
51
120
{
52
- timeValue = DateTimeOffset . Parse ( TimeString ) ;
121
+ timeValue = DateTimeOffset . ParseExact ( TimeString , Constants . Iso8601Format , CultureInfo . InvariantCulture , DateTimeStyles . None ) ;
53
122
}
54
-
123
+
55
124
return timeValue . Value ;
56
125
}
126
+ private set
127
+ {
128
+ timeString = value . ToString ( Constants . Iso8601Format ) ;
129
+ timeValue = value ;
130
+ }
57
131
}
58
132
59
133
[ NonSerialized ] private DateTimeOffset ? commitTimeValue ;
60
- public DateTimeOffset ? CommitTime
134
+ public DateTimeOffset CommitTime
61
135
{
62
136
get
63
137
{
64
- if ( ! timeValue . HasValue && ! string . IsNullOrEmpty ( CommitTimeString ) )
138
+ if ( ! commitTimeValue . HasValue )
65
139
{
66
- commitTimeValue = DateTimeOffset . Parse ( CommitTimeString ) ;
140
+ commitTimeValue = DateTimeOffset . ParseExact ( CommitTimeString , Constants . Iso8601Format , CultureInfo . InvariantCulture , DateTimeStyles . None ) ;
67
141
}
68
142
69
- return commitTimeValue ;
143
+ return commitTimeValue . Value ;
144
+ }
145
+ private set
146
+ {
147
+ commitTimeString = value . ToString ( Constants . Iso8601Format ) ;
148
+ commitTimeValue = value ;
70
149
}
71
150
}
72
151
73
- public void Clear ( )
74
- {
75
- CommitID = MergeA = MergeB = AuthorName = AuthorEmail = Summary = Description = "" ;
152
+ public string ShortID => CommitID . Length < 7 ? CommitID : CommitID . Substring ( 0 , 7 ) ;
76
153
77
- timeValue = DateTimeOffset . MinValue ;
78
- TimeString = timeValue . Value . ToString ( DateTimeFormatInfo . CurrentInfo ) ;
154
+ public string CommitID => commitID ;
79
155
80
- commitTimeValue = null ;
81
- CommitTimeString = null ;
82
- }
156
+ public string MergeA => mergeA ;
157
+
158
+ public string MergeB => mergeB ;
159
+
160
+ public string AuthorName => authorName ;
161
+
162
+ public string AuthorEmail => authorEmail ;
163
+
164
+ public string CommitEmail => commitEmail ;
165
+
166
+ public string CommitName => commitName ;
167
+
168
+ public string Summary => summary ;
169
+
170
+ public string Description => description ;
171
+
172
+ public string TimeString => timeString ;
173
+
174
+ public string CommitTimeString => commitTimeString ;
175
+
176
+ public List < GitStatusEntry > Changes => changes ;
83
177
84
178
public override string ToString ( )
85
179
{
0 commit comments