feature: supports issue tracker in commit message (#315)

This commit is contained in:
leo 2024-08-05 17:34:49 +08:00
parent fa1f4155da
commit f754b2c63a
No known key found for this signature in database
20 changed files with 563 additions and 85 deletions

View file

@ -1,4 +1,6 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using Avalonia.Collections;
using CommunityToolkit.Mvvm.ComponentModel;
namespace SourceGit.ViewModels
@ -41,6 +43,17 @@ namespace SourceGit.ViewModels
set => SetProperty(ref _httpProxy, value);
}
public AvaloniaList<IssueTrackerRule> IssueTrackerRules
{
get => _repo.IssueTrackerSetting.Rules;
}
public IssueTrackerRule SelectedIssueTrackerRule
{
get => _selectedIssueTrackerRule;
set => SetProperty(ref _selectedIssueTrackerRule, value);
}
public RepositoryConfigure(Repository repo)
{
_repo = repo;
@ -65,6 +78,39 @@ namespace SourceGit.ViewModels
HttpProxy = string.Empty;
}
public void AddSampleGithubIssueTracker()
{
foreach (var remote in _repo.Remotes)
{
if (remote.URL.Contains("github.com", System.StringComparison.Ordinal))
{
if (remote.TryGetVisitURL(out string url))
{
SelectedIssueTrackerRule = _repo.IssueTrackerSetting.AddGithub(url);
return;
}
}
}
SelectedIssueTrackerRule = _repo.IssueTrackerSetting.AddGithub(null);
}
public void AddSampleJiraIssueTracker()
{
SelectedIssueTrackerRule = _repo.IssueTrackerSetting.AddJira();
}
public void NewIssueTracker()
{
SelectedIssueTrackerRule = _repo.IssueTrackerSetting.Add();
}
public void RemoveSelectedIssueTracker()
{
if (_selectedIssueTrackerRule != null)
_repo.IssueTrackerSetting.Rules.Remove(_selectedIssueTrackerRule);
}
public void Save()
{
SetIfChanged("user.name", UserName);
@ -96,5 +142,6 @@ namespace SourceGit.ViewModels
private readonly Repository _repo = null;
private readonly Dictionary<string, string> _cached = null;
private string _httpProxy;
private IssueTrackerRule _selectedIssueTrackerRule = null;
}
}