Compare commits

...
5 Commits
11 changed files with 131 additions and 91 deletions
+1 -1
View File
@@ -1 +1 @@
1.0.57 1.0.62
+2 -2
View File
@@ -107,9 +107,9 @@ namespace JiraTimeBot.JiraIntegration
{ {
issue = jira.Issues.Queryable.FirstOrDefault(f => f.Key == taskTimeItem.Branch); issue = jira.Issues.Queryable.FirstOrDefault(f => f.Key == taskTimeItem.Branch);
} }
catch (Exception) catch (Exception ex)
{ {
_log.Error($"Ошибка получения задачи из JIRA: {ex.Message} - {ex.InnerException?.Message}");
} }
if (issue == null) if (issue == null)
{ {
@@ -46,28 +46,28 @@ namespace JiraTimeBot.JiraIntegration
{ {
foreach (var comment in userComments.OrderBy(f=>f.CreatedDate)) foreach (var comment in userComments.OrderBy(f=>f.CreatedDate))
{ {
workTasks.Add(new TaskTimeItem var item = new TaskTimeItem(issue.Key.Value,
{ issue.Summary,
StartTime = issue.Updated.GetValueOrDefault(date.Value), issue.Project,
Description = issue.Summary, issue.Updated.GetValueOrDefault(date.Value),
Branch = issue.Key.Value, TimeSpan.Zero,
FilesAffected = 1, 1,
Commits = 1, 1,
Type = CommitType.Task CommitType.Task);
}); workTasks.Add(item);
} }
} }
else else
{ {
workTasks.Add(new TaskTimeItem var item = new TaskTimeItem(issue.Key.Value,
{ issue.Summary,
StartTime = issue.Updated.GetValueOrDefault(date.Value), issue.Project,
Description = issue.Summary, issue.Updated.GetValueOrDefault(date.Value),
Branch = issue.Key.Value, TimeSpan.Zero,
FilesAffected = 1, 1,
Commits = 1, 1,
Type = CommitType.Task CommitType.Task);
}); workTasks.Add(item);
} }
} }
+1
View File
@@ -92,6 +92,7 @@
<Compile Include="Mercurial\IMercurialLog.cs" /> <Compile Include="Mercurial\IMercurialLog.cs" />
<Compile Include="Mercurial\Modifiers\TechnicalInfoSkipper.cs" /> <Compile Include="Mercurial\Modifiers\TechnicalInfoSkipper.cs" />
<Compile Include="TasksProcessors\IAllTasksProcessors.cs" /> <Compile Include="TasksProcessors\IAllTasksProcessors.cs" />
<Compile Include="TaskTime\Objects\CommitType.cs" />
<Compile Include="TaskTime\TaskTimeSpread.cs" /> <Compile Include="TaskTime\TaskTimeSpread.cs" />
<Compile Include="UI\frmMain.cs"> <Compile Include="UI\frmMain.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
+17 -12
View File
@@ -48,6 +48,8 @@ namespace JiraTimeBot.Mercurial
continue; continue;
} }
var directoryInfo = new DirectoryInfo(repoDirectory);
var repo = new Repository(repoDirectory); var repo = new Repository(repoDirectory);
var logCommand = new LogCommand var logCommand = new LogCommand
{ {
@@ -72,24 +74,27 @@ namespace JiraTimeBot.Mercurial
} }
commitMessage = _technicalInfoSkipper.StripTechnicalInfo(commitMessage); commitMessage = _technicalInfoSkipper.StripTechnicalInfo(commitMessage);
var task = new TaskTimeItem var task = new TaskTimeItem(changeset.Branch,
{ commitMessage,
StartTime = changeset.Timestamp, directoryInfo.Name,
Description = commitMessage, changeset.Timestamp,
Branch = changeset.Branch, TimeSpan.Zero,
FilesAffected = changeset.PathActions.Count, 1,
Commits = 1, changeset.PathActions.Count,
TimeSpent = TimeSpan.Zero, GetCommitType(changeset.Branch));
Type = GetCommitType(changeset.Branch)
};
if (task.Type == CommitType.Release && task.Description.StartsWith("Merge with", StringComparison.CurrentCultureIgnoreCase)) if (task.Type == CommitType.Release && task.Description.StartsWith("Merge with", StringComparison.CurrentCultureIgnoreCase))
{ {
var branch = task.Description.Replace("Merge with", "").Replace(" ", ""); var description = task.Description;
if (description.Contains("\n"))
{
description = description.Split('\n')[0];
}
var branch = description.Replace("Merge with", "").Replace(" ", "");
var release = task.Branch.Replace("release", ""); var release = task.Branch.Replace("release", "");
task.Branch = branch; task.Branch = branch;
task.Description = $"Подготовка и публикация версии {release}."; task.Description = $"Подготовка и публикация версии {task.Project} {release}.";
} }
workTasks.Add(task); workTasks.Add(task);
_log?.Trace($" - Найден changeset: {changeset.Timestamp} - {changeset.Branch} - {changeset.AuthorEmailAddress} - {commitMessage}"); _log?.Trace($" - Найден changeset: {changeset.Timestamp} - {changeset.Branch} - {changeset.AuthorEmailAddress} - {commitMessage}");
+3 -3
View File
@@ -26,6 +26,6 @@ using System.Runtime.InteropServices;
// //
// You can specify all the values or you can default the Build and Revision Numbers // You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below: // by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.57")] [assembly: AssemblyVersion("1.0.62")]
[assembly: AssemblyFileVersion("1.0.57")] [assembly: AssemblyFileVersion("1.0.62")]
[assembly: AssemblyInformationalVersion("1.0.57")] [assembly: AssemblyInformationalVersion("1.0.62")]
@@ -0,0 +1,10 @@
using System;
namespace JiraTimeBot.TaskTime.Objects
{
[Flags]
public enum CommitType {
Task = 1,
Release = 2
}
}
@@ -11,10 +11,19 @@ namespace JiraTimeBot.TaskTime.Objects
public int Commits { get; set; } public int Commits { get; set; }
public int FilesAffected { get; set; } public int FilesAffected { get; set; }
public CommitType Type { get; set; } public CommitType Type { get; set; }
} public string Project { get; set; }
public enum CommitType { public TaskTimeItem(string branch, string description, string project, DateTime startTime, TimeSpan timeSpent, int commits,
Task = 0, int filesAffected = 1, CommitType type = CommitType.Task)
Release = 1 {
Branch = branch;
Description = description;
Project = project;
Commits = commits;
TimeSpent = timeSpent;
StartTime = startTime;
FilesAffected = filesAffected;
Type = type;
}
} }
} }
@@ -57,7 +57,19 @@ namespace JiraTimeBot.TaskTime
} }
var workTasks = _spreadHelper.SpreadTime(taskCommits, remainMinutes, settings.RoundToMinutes); var workTasks = _spreadHelper.SpreadTime(taskCommits, remainMinutes, settings.RoundToMinutes);
workTimeItems.AddRange(workTasks); foreach (var workTask in workTasks)
{
var existingItem = workTimeItems.FirstOrDefault(f => f.Branch == workTask.Branch);
if (existingItem != null)
{
existingItem.TimeSpent += workTask.TimeSpent;
existingItem.Description += "\r\n" + workTask.Description;
existingItem.Type |= CommitType.Task;
continue;
}
workTimeItems.Add(workTask);
}
workTimeItems = workTimeItems.OrderByDescending(f => f.TimeSpent).ToList(); workTimeItems = workTimeItems.OrderByDescending(f => f.TimeSpent).ToList();
remainMinutes = minutesPerWorkDay - (int) workTimeItems.Sum(f => f.TimeSpent.TotalMinutes); remainMinutes = minutesPerWorkDay - (int) workTimeItems.Sum(f => f.TimeSpent.TotalMinutes);
@@ -82,13 +94,14 @@ namespace JiraTimeBot.TaskTime
//Если указана задача контроля времени - то спишем туда 30 минут и вычеркнем их из общего рабочего времени. //Если указана задача контроля времени - то спишем туда 30 минут и вычеркнем их из общего рабочего времени.
if (!string.IsNullOrEmpty(timeControlTask)) if (!string.IsNullOrEmpty(timeControlTask))
{ {
return new TaskTimeItem return new TaskTimeItem(timeControlTask,
{ "Ведение учета времени",
TimeSpent = TimeSpan.FromMinutes(minutes), "Service",
Branch = timeControlTask, DateTime.Now,
Commits = 1, TimeSpan.FromMinutes(minutes),
Description = "Ведение учета времени" 1,
}; 1,
CommitType.Task);
} }
return null; return null;
+15 -13
View File
@@ -34,19 +34,21 @@ namespace JiraTimeBot.TaskTime
{ {
sb.AppendLine($"- {task.Description}"); sb.AppendLine($"- {task.Description}");
} }
var taskTimeItem = new TaskTimeItem
{ var timeSpent = appendTime
Branch = taskGroup.Key, ? TimeSpan.FromMinutes(taskGroup.Sum(f => f.TimeSpent.TotalMinutes)) +
TimeSpent = appendTime ? TimeSpan.FromMinutes(currentTaskTime)
TimeSpan.FromMinutes(taskGroup.Sum(f=>f.TimeSpent.TotalMinutes)) + TimeSpan.FromMinutes(currentTaskTime): : TimeSpan.FromMinutes(currentTaskTime);
TimeSpan.FromMinutes(currentTaskTime)
, var taskTimeItem = new TaskTimeItem(
Commits = taskGroup.Sum(f=>f.Commits), taskGroup.Key,
Description = sb.ToString(), sb.ToString(),
StartTime = taskGroup.Min(f=>f.StartTime), taskGroup.First().Project,
FilesAffected = taskGroup.Sum(f=>f.FilesAffected), taskGroup.Min(f => f.StartTime),
Type = taskGroup.First().Type timeSpent,
}; taskGroup.Sum(f => f.Commits),
taskGroup.Sum(f => f.FilesAffected),
taskGroup.First().Type);
newList.Add(taskTimeItem); newList.Add(taskTimeItem);
} }
@@ -23,13 +23,13 @@ namespace JiraTimeBot.TasksProcessors
{ {
_log.Trace($"На реальную дату {realDate:dd.MM.yyyy} распределение по задачам:"); _log.Trace($"На реальную дату {realDate:dd.MM.yyyy} распределение по задачам:");
foreach (var taskTime in taskTimes.Where(f=>f.Type == CommitType.Task).OrderByDescending(f => f.TimeSpent)) foreach (var taskTime in taskTimes.Where(f=>f.Type.HasFlag(CommitType.Task)).OrderByDescending(f => f.TimeSpent))
{ {
var taskName = _jiraApi.GetTaskName(taskTime.Branch, settings); var taskName = _jiraApi.GetTaskName(taskTime.Branch, settings);
_log.Trace($" - [{taskTime.Branch}, коммитов {taskTime.Commits}]: {taskName} - {taskTime.TimeSpent}"); _log.Trace($" - [{taskTime.Branch}, коммитов {taskTime.Commits}]: {taskName} - {taskTime.TimeSpent}");
} }
var releases = taskTimes.Where(f => f.Type == CommitType.Release).GroupBy(f=>f.Description); var releases = taskTimes.Where(f => f.Type.HasFlag(CommitType.Release)).GroupBy(f=>f.Description);
foreach (var release in releases) foreach (var release in releases)
{ {
var sum = release.Sum(f => (int) f.TimeSpent.TotalMinutes); var sum = release.Sum(f => (int) f.TimeSpent.TotalMinutes);