hg: implement event logs for Mercurial

This commit is contained in:
Hylke Bons 2011-05-23 21:16:04 +01:00
parent 6779d3bdea
commit 1288494ae5

View file

@ -239,8 +239,8 @@ namespace SparkleLib {
entries.Add (last_entry); entries.Add (last_entry);
Regex regex = new Regex (@"([0-9]{4})-([0-9]{2})-([0-9]{2}).*([0-9]{2}):([0-9]{2}).*.([0-9]{4}).*" + Regex regex = new Regex (@"([0-9]{4})-([0-9]{2})-([0-9]{2}).*([0-9]{2}):([0-9]{2}).*.([0-9]{4})" +
"(.+).*<(.+)>.*([a-z0-9]{12})", RegexOptions.Compiled); "(.+)<(.+)>.*.([a-z0-9]{12})", RegexOptions.Compiled);
// TODO: Need to optimise for speed // TODO: Need to optimise for speed
foreach (string log_entry in entries) { foreach (string log_entry in entries) {
@ -249,52 +249,60 @@ namespace SparkleLib {
Match match = regex.Match (log_entry); Match match = regex.Match (log_entry);
if (match.Success) {Console.WriteLine ("f!!!!!!!!!!!!!!!!!!!!!"); if (!match.Success)
SparkleChangeSet change_set = new SparkleChangeSet (); continue;
change_set.Revision = match.Groups [9].Value; SparkleChangeSet change_set = new SparkleChangeSet () {
change_set.UserName = match.Groups [7].Value; Revision = match.Groups [9].Value,
change_set.UserEmail = match.Groups [8].Value; UserName = match.Groups [7].Value.Trim (),
change_set.IsMerge = is_merge_commit; UserEmail = match.Groups [8].Value,
IsMerge = is_merge_commit
};
change_set.Timestamp = new DateTime (int.Parse (match.Groups [1].Value), change_set.Timestamp = new DateTime (int.Parse (match.Groups [1].Value),
int.Parse (match.Groups [2].Value), int.Parse (match.Groups [3].Value), int.Parse (match.Groups [2].Value), int.Parse (match.Groups [3].Value),
int.Parse (match.Groups [4].Value), int.Parse (match.Groups [5].Value), 0); int.Parse (match.Groups [4].Value), int.Parse (match.Groups [5].Value), 0);
string [] entry_lines = log_entry.Split ("\n".ToCharArray ()); string [] entry_lines = log_entry.Split ("\n".ToCharArray ());
foreach (string entry_line in entry_lines) { foreach (string entry_line in entry_lines) {
if (entry_line.StartsWith ("\t* ")) { if (!entry_line.StartsWith ("\t* "))
continue;
if (entry_line.EndsWith ("new file.")) { if (entry_line.EndsWith ("new file.")) {
string files = entry_line.Substring (3, entry_line.Length - 13); string files = entry_line.Substring (3, entry_line.Length - 13);
string [] added_files = files.Split (",".ToCharArray()); string [] added_files = files.Split (",".ToCharArray ());
foreach (string added_file in added_files) foreach (string added_file in added_files) {
change_set.Added.Add (added_file.Trim().TrimEnd (":".ToCharArray())); string file = added_file.TrimEnd (": ".ToCharArray ());
change_set.Added.Add (file);
}
} else if (entry_line.EndsWith ("deleted file.")) { } else if (entry_line.EndsWith ("deleted file.")) {
string files = entry_line.Substring (3, entry_line.Length - 17); string files = entry_line.Substring (3, entry_line.Length - 17);
string [] deleted_files = files.Split (",".ToCharArray()); string [] deleted_files = files.Split (",".ToCharArray ());
foreach (string deleted_file in deleted_files) foreach (string deleted_file in deleted_files) {
change_set.Deleted.Add (deleted_file.Trim().TrimEnd (":".ToCharArray())); string file = deleted_file.TrimEnd (": ".ToCharArray ());
change_set.Deleted.Add (file);
}
} else { } else if (!"".Equals (entry_line.Trim ())){
string files = entry_line.Substring (3); string files = entry_line.Substring (3);
string [] edited_files = files.Split (",".ToCharArray()); files = files.TrimEnd (":".ToCharArray());
foreach (string file in edited_files){ string [] edited_files = files.Split (",".ToCharArray ());
string edited_file = file.Trim().TrimEnd (":".ToCharArray()); foreach (string edited_file in edited_files) {
Console.WriteLine ("[" + edited_file + "]"); if (!change_set.Added.Contains (edited_file) &&
if (!change_set.Added.Contains (edited_file) && !change_set.Deleted.Contains (edited_file)) !change_set.Deleted.Contains (edited_file)) {
change_set.Edited.Add (edited_file);
} change_set.Edited.Add (edited_file);
} }
} }
} }
change_sets.Add (change_set);
} }
change_sets.Add (change_set);
} }
return change_sets; return change_sets;