Compare commits

...
7 Commits
6 changed files with 86 additions and 84 deletions
+1 -1
View File
@@ -1 +1 @@
1.0.72
1.0.78
+34 -51
View File
@@ -2,13 +2,11 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using JiraTimeBot.Configuration;
using JiraTimeBot.Mercurial.Modifiers;
using JiraTimeBot.TaskTime.Objects;
using LibGit2Sharp;
using LibGit2Sharp.Handlers;
namespace JiraTimeBot.Mercurial
{
@@ -73,15 +71,31 @@ namespace JiraTimeBot.Mercurial
_log?.Trace($" - Не получается сделать pull для репозитория: {directoryInfo.Name} - {ex.Message}");
}
}
var filter = new CommitFilter { SortBy = CommitSortStrategies.Time };
foreach (Commit commit in repo.Commits.QueryBy(filter).Take(200))
var allCommits = new List<Commit>();
var reflog = repo.Refs.Log(repo.Refs.Head);
foreach (var reflogItem in reflog)
{
if (reflogItem.Committer.When.Date != date.Value.Date || reflogItem.Committer.Email != settings.MercurialAuthorEmail)
{
continue;
}
var commit = repo.Lookup<LibGit2Sharp.Commit>(reflogItem.To.Sha);
if (commit != null && allCommits.All(f => f.Sha != commit.Sha))
{
allCommits.Add(commit);
}
}
foreach (Commit commit in allCommits)
{
if (cancellationToken.IsCancellationRequested)
{
return new List<TaskTimeItem>();
}
if (commit.Author.When.DateTime.Date != date || commit.Author.Email != settings.MercurialAuthorEmail)
if (commit.Author.When.DateTime.Date != date.Value.Date || commit.Author.Email != settings.MercurialAuthorEmail)
{
continue;
}
@@ -94,11 +108,15 @@ namespace JiraTimeBot.Mercurial
}
var commitMessage = commit.MessageShort;
commitMessage = _technicalInfoSkipper.StripBranchPrefix(branch, commitMessage);
if (_commitSkipper.IsNeedToSkip(branch, commitMessage))
{
continue;
}
commitMessage = _technicalInfoSkipper.StripTechnicalInfo(commitMessage);
var files = FilesToMerge(commit, repo);
var task = new TaskTimeItem(branch,
commitMessage,
@@ -106,51 +124,13 @@ namespace JiraTimeBot.Mercurial
commit.Committer.When.DateTime,
TimeSpan.Zero,
1,
1, //changeset.PathActions.Count,
files.Length, //changeset.PathActions.Count,
"",
GetCommitType(branch));
workTasks.Add(task);
_log?.Trace($" - Найден commit: {commit.Committer.When.DateTime} - {branch} - {commit.Author.Email} - {commitMessage}");
}
//foreach (var changeset in log)
//{
// var commitMessage = FixEncoding(changeset.CommitMessage);
// if (_commitSkipper.IsNeedToSkip(changeset.Branch, commitMessage))
// {
// continue;
// }
// commitMessage = _technicalInfoSkipper.StripTechnicalInfo(commitMessage);
// var task = new TaskTimeItem(changeset.Branch,
// commitMessage,
// directoryInfo.Name,
// changeset.Timestamp,
// TimeSpan.Zero,
// 1,
// changeset.PathActions.Count,
// "",
// GetCommitType(changeset.Branch));
// if (task.Type == CommitType.Release && task.Description.StartsWith("Merge with", StringComparison.CurrentCultureIgnoreCase))
// {
// 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", "");
// task.Branch = branch;
// task.Description = $"Подготовка и публикация версии {task.Project} {release}.";
// task.ReleaseVersion = release;
// }
// workTasks.Add(task);
// _log?.Trace($" - Найден changeset: {changeset.Timestamp} - {changeset.Branch} - {changeset.AuthorEmailAddress} - {commitMessage}");
//}
}
if (!workTasks.Any())
{
@@ -165,15 +145,18 @@ namespace JiraTimeBot.Mercurial
return branch.StartsWith("release") ? CommitType.Release : CommitType.Task;
}
private string FixEncoding(string source)
public String[] FilesToMerge(Commit commit, Repository repo)
{
//перекодируем сообщение - ибо оно криво забирается в 1252
Encoding srcEncodingFormat = Encoding.GetEncoding("windows-1252");
byte[] originalByteString = srcEncodingFormat.GetBytes(source);
var commitMessage = Encoding.UTF8.GetString(originalByteString);
return commitMessage;
var fileList = new List<String>();
foreach (var parent in commit.Parents)
{
foreach (TreeEntryChanges change in repo.Diff.Compare<TreeChanges>(parent.Tree, commit.Tree))
{
fileList.Add(change.Path);
}
}
return fileList.ToArray();
}
private IEnumerable<Branch> ListBranchesContaininingCommit(Repository repo, string commitSha)
{
@@ -19,6 +19,7 @@ namespace JiraTimeBot.Mercurial.Modifiers
//Пропускаем Close и Merge коммиты
if (commitMessage.StartsWith($"Close {branch}", StringComparison.InvariantCultureIgnoreCase) ||
commitMessage.StartsWith($"Merge with", StringComparison.InvariantCultureIgnoreCase) ||
commitMessage.StartsWith($"Merged", StringComparison.InvariantCultureIgnoreCase) ||
commitMessage.StartsWith($"Merge branch", StringComparison.InvariantCultureIgnoreCase))
{
return true;
@@ -2,6 +2,7 @@
{
public interface ITechnicalInfoSkipper
{
string StripBranchPrefix(string branch, string commitMessage);
string StripTechnicalInfo(string commitMessage);
}
}
@@ -1,9 +1,26 @@
using System.Text;
using System;
using System.Text;
namespace JiraTimeBot.Mercurial.Modifiers
{
public class TechnicalInfoSkipper : ITechnicalInfoSkipper
{
public string StripBranchPrefix(string branch, string commitMessage)
{
if (commitMessage.StartsWith(branch, StringComparison.InvariantCultureIgnoreCase))
{
return commitMessage.TrimStart(branch.ToCharArray()).Trim();
}
var quotedBranch = $"[{branch}]";
if (commitMessage.StartsWith(quotedBranch, StringComparison.InvariantCultureIgnoreCase))
{
return commitMessage.TrimStart(quotedBranch.ToCharArray()).Trim();
}
return commitMessage;
}
public string StripTechnicalInfo(string commitMessage)
{
if (!commitMessage.Contains("Signed-by:"))
+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
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.72")]
[assembly: AssemblyFileVersion("1.0.72")]
[assembly: AssemblyInformationalVersion("1.0.72")]
[assembly: AssemblyVersion("1.0.78")]
[assembly: AssemblyFileVersion("1.0.78")]
[assembly: AssemblyInformationalVersion("1.0.78")]