Skip to content

Commit

Permalink
Update to fix Repo referecnes!
Browse files Browse the repository at this point in the history
  • Loading branch information
MrHinsh committed Aug 28, 2024
1 parent 7eaf4f7 commit e5b8171
Show file tree
Hide file tree
Showing 12 changed files with 84 additions and 120 deletions.
81 changes: 49 additions & 32 deletions appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,7 @@
"CommonTools": {
"FieldMappingTool": {
"Enabled": false,
"FieldMaps": [],
"FieldMapDefaults": {
}
"FieldMaps": []
},
"TfsChangeSetMappingTool": {
"Enabled": false,
Expand Down Expand Up @@ -148,6 +146,12 @@
}
},
"CommonToolSamples": {
"TfsGitRepositoryTool": {
"Enabled": true,
"Mappings": {
"RepoInSource": "RepoInTarget"
}
},
"FieldMappingTool": {
"Enabled": true,
"FieldMaps": [
Expand All @@ -159,13 +163,42 @@
"formatExpression": "{0} \n {1}"
},
{
"FieldMapType": "FieldLiteralMap",
"FieldMapType": "FieldValueMap",
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "System.State",
"targetField": "System.State",
"defaultValue": "New",
"valueMapping": {
"Active": "InProgress",
"Resolved": "InProgress",
"Closed": "Done"
}
},
{
"FieldMapType": "FieldToFieldMap",
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "Microsoft.VSTS.Common.BacklogPriority",
"targetField": "Microsoft.VSTS.Common.StackRank",
"defaultValue": 42
}
],
"FieldMapSamples": {
"FieldClearMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"targetField": "Custom.FieldC"
},
"FieldMergeMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceFields": [ "Custom.FieldA", "Custom.FieldB" ],
"targetField": "Custom.FieldC",
"formatExpression": "{0} \n {1}"
},
"FieldLiteralMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"targetField": "Custom.SomeField",
"value": "New field value"
},
{
"FieldMapType": "MultiValueConditionalMap",
"MultiValueConditionalMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceFieldsAndValues": {
"Field1": "Value1",
Expand All @@ -176,13 +209,11 @@
"Field2": "Value2"
}
},
{
"FieldMapType": "FieldSkipMap",
"targetFieldsAndValues": {
"ApplyTo": [ "SomeWorkItemType" ],
"targetField": "Custom.ReflectedWorkItemId"
},
{
"FieldMapType": "FieldValueMap",
"FieldValueMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "System.State",
"targetField": "System.State",
Expand All @@ -191,29 +222,25 @@
"StateA": "StateB"
}
},
{
"FieldMapType": "FieldToFieldMap",
"FieldToFieldMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "Microsoft.VSTS.Common.BacklogPriority",
"targetField": "Microsoft.VSTS.Common.StackRank",
"defaultValue": 42
},
{
"FieldMapType": "FieldToFieldMultiMap",
"FieldToFieldMultiMap": {
"ApplyTo": [ "SomeWorkItemType", "SomeOtherWorkItemType" ],
"SourceToTargetMappings": {
"SourceField1": "TargetField1",
"SourceField2": "TargetField2"
}
},
{
"FieldMapType": "FieldToTagMap",
"FieldToTagMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "System.State",
"formatExpression": "ScrumState:{0}"
},
{
"FieldMapType": "FieldToTagFieldMap",
"FieldToTagFieldMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceFields": [
"System.Description",
Expand All @@ -222,29 +249,25 @@
"targetField": "System.Description",
"formatExpression": "{0} <br/><br/><h3>Acceptance Criteria</h3>{1}"
},
{
"FieldMapType": "RegexFieldMap",
"RegexFieldMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "COMPANY.PRODUCT.Release",
"targetField": "COMPANY.DEVISION.MinorReleaseVersion",
"pattern": "PRODUCT \\d{4}.(\\d{1})",
"replacement": "$1"
},
{
"FieldMapType": "FieldValueToTagMap",
"FieldValueToTagMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"sourceField": "Microsoft.VSTS.CMMI.Blocked",
"pattern": "Yes",
"formatExpression": "{0}"
},
{
"FieldMapType": "TreeToTagMap",
"TreeToTagMap": {
"ApplyTo": [ "SomeWorkItemType" ],
"toSkip": 3,
"timeTravel": 1
}
]

}
},
"TfsChangeSetMappingTool": {
"Enabled": true,
Expand Down Expand Up @@ -330,12 +353,6 @@
},
"TfsEmbededImagesTool": {
"Enabled": true
},
"GitRepositoryTool": {
"Enabled": true,
"Mappings": {
"Repo1": "Repo2"
}
}
},
"ProcessorDefaults": {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 6 additions & 17 deletions docs/Reference/Generated/MigrationTools.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ public int Enrich(TfsProcessor processor, WorkItemData sourceWorkItem, WorkItem

Log.LogInformation("GitRepositoryEnricher: Enriching {Id} To fix Git Repo Links", targetWorkItem.Id);
var changeSetMappings = Services.GetService<TfsChangeSetMappingTool>();
var gitRepoMaps = Services.GetService<GitRepoMappingTool>();
List<ExternalLink> newEL = new List<ExternalLink>();
List<ExternalLink> removeEL = new List<ExternalLink>();
int count = 0;
Expand Down Expand Up @@ -110,7 +109,7 @@ public int Enrich(TfsProcessor processor, WorkItemData sourceWorkItem, WorkItem
{
var anyProjectSourceRepoInfo = TfsGitRepositoryInfo.Create(el, allSourceRepos, changeSetMappings, sourceWorkItem?.ProjectName);
// if repo is found in a different project and the repo Name is listed in repo mappings, use it
if (anyProjectSourceRepoInfo.GitRepo != null && gitRepoMaps.Mappings.ContainsKey(anyProjectSourceRepoInfo.GitRepo.Name))
if (anyProjectSourceRepoInfo.GitRepo != null && Options.Mappings.ContainsKey(anyProjectSourceRepoInfo.GitRepo.Name))
{
sourceRepoInfo = anyProjectSourceRepoInfo;
}
Expand All @@ -122,15 +121,15 @@ public int Enrich(TfsProcessor processor, WorkItemData sourceWorkItem, WorkItem

if (sourceRepoInfo.GitRepo != null)
{
string targetRepoName = GetTargetRepoName(gitRepoMaps.Mappings, sourceRepoInfo);
string targetRepoName = GetTargetRepoName(Options.Mappings, sourceRepoInfo);
string sourceProjectName = sourceRepoInfo?.GitRepo?.ProjectReference?.Name ?? _processor.Target.Options.Project;
string targetProjectName = _processor.Target.Options.Project;

TfsGitRepositoryInfo targetRepoInfo = TfsGitRepositoryInfo.Create(targetRepoName, sourceRepoInfo, targetRepos);
// if repo was not found in the target project, try to find it in the whole target project collection
if (targetRepoInfo.GitRepo == null)
{
if (gitRepoMaps.Mappings.Values.Contains(targetRepoName))
if (Options.Mappings.Values.Contains(targetRepoName))
{
var anyTargetRepoInCollectionInfo = TfsGitRepositoryInfo.Create(targetRepoName, sourceRepoInfo, allTargetRepos);
if (anyTargetRepoInCollectionInfo.GitRepo != null)
Expand Down Expand Up @@ -233,7 +232,7 @@ where gitWits.Contains(lq.ArtifactLinkType.Name)
return count;
}

private string GetTargetRepoName(ReadOnlyDictionary<string, string> gitRepoMappings, TfsGitRepositoryInfo repoInfo)
private string GetTargetRepoName(Dictionary<string, string> gitRepoMappings, TfsGitRepositoryInfo repoInfo)
{
if (gitRepoMappings.ContainsKey(repoInfo.GitRepo.Name))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ namespace MigrationTools.Tools
{
public class TfsGitRepositoryToolOptions : ToolOptions
{

/// <summary>
/// List of work item mappings.
/// </summary>
/// <default>{}</default>
public Dictionary<string, string> Mappings { get; set; }
}
}
4 changes: 2 additions & 2 deletions src/MigrationTools.ConsoleDataGenerator/ClassDataLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ private ClassData CreateClassDataFromOptions<TOptionsInterface>(List<Type> allTy
data.ConfigurationSamples.Add(new ConfigurationSample() { Name = "defaults", SampleFor = data.OptionsClassFullName, Code = json.Trim() });
} else
{
data.ConfigurationSamples.Add(new ConfigurationSample() { Name = "defaults", SampleFor = data.OptionsClassFullName, Code = "Default Unavailable" });
data.ConfigurationSamples.Add(new ConfigurationSample() { Name = "defaults", SampleFor = data.OptionsClassFullName, Code = "There are no defaults! Check the sample for options!" });
}
}
if (!string.IsNullOrEmpty(instanceOfOption.ConfigurationMetadata.PathToSample))
Expand All @@ -111,7 +111,7 @@ private ClassData CreateClassDataFromOptions<TOptionsInterface>(List<Type> allTy
}
else
{
data.ConfigurationSamples.Add(new ConfigurationSample() { Name = "sample", SampleFor = data.OptionsClassFullName, Code = "Sample Unavailable" });
data.ConfigurationSamples.Add(new ConfigurationSample() { Name = "sample", SampleFor = data.OptionsClassFullName, Code = "There is no sample, but you can check the classic below for a general feel." });
}
}
data.ConfigurationSamples.Add(new ConfigurationSample() { Name = "classic", SampleFor = data.OptionsClassFullName, Code = saveData.SeraliseDataToJson(instanceOfOption).Trim() });
Expand Down
10 changes: 5 additions & 5 deletions src/MigrationTools.ConsoleDataGenerator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@ static void Main(string[] args)
List<ClassData> classDataList = new List<ClassData>();

classDataList.AddRange(cdLoader.GetClassDataFromOptions<IProcessorOptions>(allMigrationTypes, "Processors"));
//classDataList.AddRange(cdLoader.GetClassDataFromOptions<IToolOptions>(allMigrationTypes, "Tools"));
//classDataList.AddRange(cdLoader.GetClassDataFromOptions<IFieldMapOptions>(allMigrationTypes, "FieldMaps"));
//classDataList.AddRange(cdLoader.GetClassDataFromOptions<IProcessorEnricherOptions>(allMigrationTypes, "ProcessorEnrichers"));
//classDataList.AddRange(cdLoader.GetClassDataFromOptions<IEndpointOptions>(allMigrationTypes, "Endpoints"));
//classDataList.AddRange(cdLoader.GetClassDataFromOptions<IEndpointEnricherOptions>(allMigrationTypes, "EndpointEnrichers"));
classDataList.AddRange(cdLoader.GetClassDataFromOptions<IToolOptions>(allMigrationTypes, "Tools"));
classDataList.AddRange(cdLoader.GetClassDataFromOptions<IFieldMapOptions>(allMigrationTypes, "FieldMaps"));
classDataList.AddRange(cdLoader.GetClassDataFromOptions<IProcessorEnricherOptions>(allMigrationTypes, "ProcessorEnrichers"));
classDataList.AddRange(cdLoader.GetClassDataFromOptions<IEndpointOptions>(allMigrationTypes, "Endpoints"));
classDataList.AddRange(cdLoader.GetClassDataFromOptions<IEndpointEnricherOptions>(allMigrationTypes, "EndpointEnrichers"));



Expand Down
4 changes: 2 additions & 2 deletions src/MigrationTools/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ public static void AddMigrationToolServices(this IServiceCollection context, ICo
case MigrationConfigSchema.v1:
context.AddSingleton<IStringManipulatorTool, StringManipulatorTool>().AddSingleton<IOptions<StringManipulatorToolOptions>>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15<StringManipulatorToolOptions>()));
context.AddSingleton<IWorkItemTypeMappingTool, WorkItemTypeMappingTool>().AddSingleton<IOptions<WorkItemTypeMappingToolOptions>>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15<WorkItemTypeMappingToolOptions>()));
context.AddSingleton<GitRepoMappingTool>().AddSingleton<IOptions<GitRepoMappingToolOptions>>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15<GitRepoMappingToolOptions>()));
//context.AddSingleton<GitRepoMappingTool>().AddSingleton<IOptions<GitRepoMappingToolOptions>>(Microsoft.Extensions.Options.Options.Create(configuration.GetSectionCommonEnrichers_v15<GitRepoMappingToolOptions>()));
break;
case MigrationConfigSchema.v160:
context.AddSingleton<IStringManipulatorTool, StringManipulatorTool>().AddMigrationToolsOptions<StringManipulatorToolOptions>(configuration);
context.AddSingleton<IWorkItemTypeMappingTool, WorkItemTypeMappingTool>().AddMigrationToolsOptions<WorkItemTypeMappingToolOptions>(configuration);
context.AddSingleton<GitRepoMappingTool>().AddMigrationToolsOptions<GitRepoMappingToolOptions>(configuration);
// context.AddSingleton<GitRepoMappingTool>().AddMigrationToolsOptions<GitRepoMappingToolOptions>(configuration);
break;
}
context.AddSingleton<ProcessorContainer>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ public abstract class FieldMapOptions : IFieldMapOptions
[JsonIgnore]
public ConfigurationMetadata ConfigurationMetadata => new ConfigurationMetadata
{
PathToInstance = $"MigrationTools:CommonTools:FieldMappingTool:FieldMaps:{OptionFor}",
IsCollection = true,
PathToInstance = $"MigrationTools:CommonTools:FieldMappingTool:FieldMaps",
ObjectName = $"FieldMapType",
OptionFor = OptionFor,
PathToDefault = $"MigrationTools::CommonToolDefaults:FieldMappingTool:FieldMaps:{OptionFor}",
PathToSample = $"MigrationTools::CommonToolSamples:FieldMappingTool:FieldMaps:{OptionFor}"
PathToDefault = $"MigrationTools:CommonTools:FieldMappingTool:FieldMapDefaults:{OptionFor}",
PathToSample = $"MigrationTools:CommonToolSamples:FieldMappingTool:FieldMapSamples:{OptionFor}"
};

protected FieldMapOptions()
Expand Down
33 changes: 0 additions & 33 deletions src/MigrationTools/Tools/GitRepoMappingTool.cs

This file was deleted.

Loading

0 comments on commit e5b8171

Please sign in to comment.