Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 4836c5a

Browse files
Merge pull request #522 from github-for-unity/fixes/git-log-entry-default
Changes to support a default for GitLogEntry
2 parents 151000d + d2ae777 commit 4836c5a

File tree

6 files changed

+332
-430
lines changed

6 files changed

+332
-430
lines changed

src/GitHub.Api/Git/GitLogEntry.cs

Lines changed: 102 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,54 @@ public struct GitLogEntry
1111
private const string Today = "Today";
1212
private const string Yesterday = "Yesterday";
1313

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, DateTimeOffset.MinValue, DateTimeOffset.MinValue, 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()
2837
{
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;
3062
}
3163

3264
public string PrettyTimeString
@@ -49,37 +81,78 @@ public DateTimeOffset Time
4981
{
5082
if (!timeValue.HasValue)
5183
{
52-
timeValue = DateTimeOffset.Parse(TimeString);
84+
DateTimeOffset result;
85+
if (DateTimeOffset.TryParseExact(TimeString, Constants.Iso8601Format, CultureInfo.InvariantCulture,DateTimeStyles.None, out result))
86+
{
87+
timeValue = result;
88+
}
89+
else
90+
{
91+
Time = DateTimeOffset.MinValue;
92+
}
5393
}
54-
94+
5595
return timeValue.Value;
5696
}
97+
private set
98+
{
99+
timeString = value.ToString(Constants.Iso8601Format);
100+
timeValue = value;
101+
}
57102
}
58103

59104
[NonSerialized] private DateTimeOffset? commitTimeValue;
60-
public DateTimeOffset? CommitTime
105+
public DateTimeOffset CommitTime
61106
{
62107
get
63108
{
64-
if (!timeValue.HasValue && !string.IsNullOrEmpty(CommitTimeString))
109+
if (!commitTimeValue.HasValue)
65110
{
66-
commitTimeValue = DateTimeOffset.Parse(CommitTimeString);
111+
DateTimeOffset result;
112+
if (DateTimeOffset.TryParseExact(CommitTimeString, Constants.Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
113+
{
114+
commitTimeValue = result;
115+
}
116+
else
117+
{
118+
CommitTime = DateTimeOffset.MinValue;
119+
}
67120
}
68121

69-
return commitTimeValue;
122+
return commitTimeValue.Value;
123+
}
124+
private set
125+
{
126+
commitTimeString = value.ToString(Constants.Iso8601Format);
127+
commitTimeValue = value;
70128
}
71129
}
72130

73-
public void Clear()
74-
{
75-
CommitID = MergeA = MergeB = AuthorName = AuthorEmail = Summary = Description = "";
131+
public string ShortID => CommitID.Length < 7 ? CommitID : CommitID.Substring(0, 7);
76132

77-
timeValue = DateTimeOffset.MinValue;
78-
TimeString = timeValue.Value.ToString(DateTimeFormatInfo.CurrentInfo);
133+
public string CommitID => commitID;
79134

80-
commitTimeValue = null;
81-
CommitTimeString = null;
82-
}
135+
public string MergeA => mergeA;
136+
137+
public string MergeB => mergeB;
138+
139+
public string AuthorName => authorName;
140+
141+
public string AuthorEmail => authorEmail;
142+
143+
public string CommitEmail => commitEmail;
144+
145+
public string CommitName => commitName;
146+
147+
public string Summary => summary;
148+
149+
public string Description => description;
150+
151+
public string TimeString => timeString;
152+
153+
public string CommitTimeString => commitTimeString;
154+
155+
public List<GitStatusEntry> Changes => changes;
83156

84157
public override string ToString()
85158
{

src/GitHub.Api/OutputProcessors/LogEntryOutputProcessor.cs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -317,21 +317,16 @@ private void ReturnGitLogEntry()
317317

318318
if (time.HasValue)
319319
{
320-
RaiseOnEntry(new GitLogEntry()
321-
{
322-
AuthorName = authorName,
323-
CommitName = committerName,
324-
MergeA = mergeA,
325-
MergeB = mergeB,
326-
Changes = changes,
327-
AuthorEmail = authorEmail,
328-
CommitEmail = committerEmail,
329-
Summary = summary,
330-
Description = description,
331-
CommitID = commitId,
332-
TimeString = time.Value.ToString(Constants.Iso8601Format),
333-
CommitTimeString = committerTime.Value.ToString(Constants.Iso8601Format)
334-
});
320+
var gitLogEntry = new GitLogEntry(commitId,
321+
authorName, authorEmail,
322+
committerName, committerEmail,
323+
summary,
324+
description,
325+
time.Value, committerTime.Value,
326+
changes,
327+
mergeA, mergeB);
328+
329+
RaiseOnEntry(gitLogEntry);
335330
}
336331

337332
Reset();

src/tests/IntegrationTests/Process/ProcessManagerIntegrationTests.cs

Lines changed: 22 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -42,42 +42,29 @@ public async Task LogEntriesTest()
4242

4343
logEntries.AssertEqual(new[]
4444
{
45-
new GitLogEntry
46-
{
47-
AuthorEmail = "[email protected]",
48-
CommitEmail = "[email protected]",
49-
AuthorName = "Author Person",
50-
CommitName = "Author Person",
51-
Changes = new List<GitStatusEntry>
45+
new GitLogEntry("018997938335742f8be694240a7c2b352ec0835f",
46+
"Author Person", "[email protected]", "Author Person",
47+
48+
"Moving project files where they should be kept",
49+
"Moving project files where they should be kept", firstCommitTime,
50+
firstCommitTime, new List<GitStatusEntry>
5251
{
5352
new GitStatusEntry("Assets/TestDocument.txt".ToNPath(),
5453
TestRepoMasterCleanUnsynchronized + "/Assets/TestDocument.txt".ToNPath(), "Assets/TestDocument.txt".ToNPath(),
5554
GitFileStatus.Renamed, "TestDocument.txt")
56-
},
57-
CommitID = "018997938335742f8be694240a7c2b352ec0835f",
58-
Description = "Moving project files where they should be kept",
59-
Summary = "Moving project files where they should be kept",
60-
TimeString = firstCommitTime.ToString(Constants.Iso8601Format),
61-
CommitTimeString = firstCommitTime.ToString(Constants.Iso8601Format),
62-
},
63-
new GitLogEntry
64-
{
65-
AuthorEmail = "[email protected]",
66-
CommitEmail = "[email protected]",
67-
AuthorName = "Author Person",
68-
CommitName = "Author Person",
69-
Changes = new List<GitStatusEntry>
55+
}),
56+
57+
new GitLogEntry("03939ffb3eb8486dba0259b43db00842bbe6eca1",
58+
"Author Person", "[email protected]", "Author Person",
59+
60+
"Initial Commit",
61+
"Initial Commit", secondCommitTime,
62+
secondCommitTime, new List<GitStatusEntry>
7063
{
7164
new GitStatusEntry("TestDocument.txt".ToNPath(),
7265
TestRepoMasterCleanUnsynchronized + "/TestDocument.txt".ToNPath(), "TestDocument.txt".ToNPath(),
7366
GitFileStatus.Added),
74-
},
75-
CommitID = "03939ffb3eb8486dba0259b43db00842bbe6eca1",
76-
Description = "Initial Commit",
77-
Summary = "Initial Commit",
78-
TimeString = secondCommitTime.ToString(Constants.Iso8601Format),
79-
CommitTimeString = secondCommitTime.ToString(Constants.Iso8601Format),
80-
},
67+
}),
8168
});
8269
}
8370

@@ -95,24 +82,17 @@ public async Task RussianLogEntriesTest()
9582

9683
logEntries.AssertEqual(new[]
9784
{
98-
new GitLogEntry
99-
{
100-
AuthorEmail = "[email protected]",
101-
CommitEmail = "[email protected]",
102-
AuthorName = "Author Person",
103-
CommitName = "Author Person",
104-
Changes = new List<GitStatusEntry>
85+
new GitLogEntry("06d6451d351626894a30e9134f551db12c74254b",
86+
"Author Person", "[email protected]", "Author Person",
87+
88+
"Я люблю github",
89+
"Я люблю github", commitTime,
90+
commitTime, new List<GitStatusEntry>
10591
{
10692
new GitStatusEntry(@"Assets\A new file.txt".ToNPath(),
10793
TestRepoMasterCleanUnsynchronizedRussianLanguage + "/Assets/A new file.txt".ToNPath(), "Assets/A new file.txt".ToNPath(),
10894
GitFileStatus.Added),
109-
},
110-
CommitID = "06d6451d351626894a30e9134f551db12c74254b",
111-
Description = "Я люблю github",
112-
Summary = "Я люблю github",
113-
TimeString = commitTime.ToString(Constants.Iso8601Format),
114-
CommitTimeString = commitTime.ToString(Constants.Iso8601Format),
115-
}
95+
}),
11696
});
11797
}
11898

0 commit comments

Comments
 (0)