dd-trace-dotnet
dd-trace-dotnet copied to clipboard
SourceLink revision detection fails when version contains build information
We set the build info part of the version ourselves to add additional information (e.g. via -p:Version=1.2.3-alpha+build.42) SourceLink will then turn it into 1.2.3-alpha+build.42.revisionFromSourceLink.
See the MSBuild target which adds a . if there already is a +:
https://github.com/dotnet/sdk/blob/df4091f0cc6803f81fa7681ed72c828525db701a/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.GenerateAssemblyInfo.targets#L67-L71
However this library will use the whole build info part which will return non-sense in front of the SourceLink revision in this case:
https://github.com/DataDog/dd-trace-dotnet/blob/259d478986bea1876a89a2220e43af1bda236fe3/tracer/src/Datadog.Trace/PDBs/SourceLinkInformationExtractor.cs#L116-L122
Easy fix would be to use parts[1].Split('.').Last()
Ideally we could check whether it’s a valid revision (but that might be hard if there are multiple supported VCS and formats), since one can turn off IncludeSourceRevisionInInformationalVersion or GenerateAssemblyVersionInformationalAttribute without turning off GenerateRepositoryUrlAttribute.