Skip to content

Suppress changelog link when versions are not git tags#75

Merged
Malcolmnixon merged 2 commits intomainfrom
copilot/suppress-changelog-if-not-tagged
Feb 16, 2026
Merged

Suppress changelog link when versions are not git tags#75
Malcolmnixon merged 2 commits intomainfrom
copilot/suppress-changelog-if-not-tagged

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Feb 16, 2026

Pull Request

Description

Changelog links are currently generated for all builds, even when versions don't correspond to actual git tags in the repository. This produces invalid comparison links for PR and main-branch builds.

Changes:

  • Added BranchTagNames to LookupData record to track tags on current branch
  • Modified GenerateGitHubChangelogLink to validate both oldTag and newTag exist in branch tags before generating link
  • Returns null when either version is not a tagged commit

Example:

// Suppresses changelog for untagged versions
var branchTags = new HashSet<string> { "v1.0.0" };
var link = GenerateGitHubChangelogLink("owner", "repo", "v1.0.0", "v2.0.0-dev", branchTags);
// Returns null since v2.0.0-dev is not in branchTags

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Code quality improvement

Related Issues

Pre-Submission Checklist

Before submitting this pull request, ensure you have completed the following:

Build and Test

  • Code builds successfully: dotnet build --configuration Release
  • All tests pass: dotnet test --configuration Release
  • Code produces zero warnings

Code Quality

  • Code formatting is correct: dotnet format --verify-no-changes
  • New code has appropriate XML documentation comments
  • Static analyzer warnings have been addressed

Quality Checks

Please run the following checks before submitting:

  • Spell checker passes: cspell "**/*.{md,cs}"
  • Markdown linter passes: markdownlint "**/*.md"
  • YAML linter passes: yamllint '**/*.{yml,yaml}'

Testing

  • Added unit tests for new functionality
  • Updated existing tests if behavior changed
  • All tests follow the AAA (Arrange, Act, Assert) pattern
  • Test coverage is maintained or improved

Documentation

  • Updated README.md (if applicable)
  • Updated ARCHITECTURE.md (if applicable)
  • Added code examples for new features (if applicable)
  • Updated requirements.yaml (if applicable)

Additional Notes

Unit tests cover all scenarios:

  • Both tags valid → generates link
  • Old tag missing → suppresses link
  • New tag missing → suppresses link
  • No tags → suppresses link

Self-validation and CodeQL security scans pass with no issues.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/demaconsulting/BuildMark/commits
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/testhost.dll --port 38903 --endpoint 127.0.0.1:038903 --role client --parentprocessid 4414 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/testhost.dll --port 43059 --endpoint 127.0.0.1:043059 --role client --parentprocessid 4384 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/testhost.dll --port 39507 --endpoint 127.0.0.1:039507 --role client --parentprocessid 4392 --telemetryoptedin false (http block)
  • https://api.github.com/repos/demaconsulting/BuildMark/issues
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/testhost.dll --port 38903 --endpoint 127.0.0.1:038903 --role client --parentprocessid 4414 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/testhost.dll --port 43059 --endpoint 127.0.0.1:043059 --role client --parentprocessid 4384 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/testhost.dll --port 39507 --endpoint 127.0.0.1:039507 --role client --parentprocessid 4392 --telemetryoptedin false (http block)
  • https://api.github.com/repos/demaconsulting/BuildMark/pulls
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/testhost.dll --port 38903 --endpoint 127.0.0.1:038903 --role client --parentprocessid 4414 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/testhost.dll --port 43059 --endpoint 127.0.0.1:043059 --role client --parentprocessid 4384 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/testhost.dll --port 39507 --endpoint 127.0.0.1:039507 --role client --parentprocessid 4392 --telemetryoptedin false (http block)
  • https://api.github.com/repos/demaconsulting/BuildMark/releases
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/testhost.dll --port 38903 --endpoint 127.0.0.1:038903 --role client --parentprocessid 4414 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/testhost.dll --port 43059 --endpoint 127.0.0.1:043059 --role client --parentprocessid 4384 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/testhost.dll --port 39507 --endpoint 127.0.0.1:039507 --role client --parentprocessid 4392 --telemetryoptedin false (http block)
  • https://api.github.com/repos/demaconsulting/BuildMark/tags
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net10.0/testhost.dll --port 38903 --endpoint 127.0.0.1:038903 --role client --parentprocessid 4414 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net9.0/testhost.dll --port 43059 --endpoint 127.0.0.1:043059 --role client --parentprocessid 4384 --telemetryoptedin false (http block)
    • Triggering command: /usr/share/dotnet/dotnet /usr/share/dotnet/dotnet exec --runtimeconfig /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.runtimeconfig.json --depsfile /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/DemaConsulting.BuildMark.Tests.deps.json /home/REDACTED/work/BuildMark/BuildMark/test/DemaConsulting.BuildMark.Tests/bin/Release/net8.0/testhost.dll --port 39507 --endpoint 127.0.0.1:039507 --role client --parentprocessid 4392 --telemetryoptedin false (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[Feature]: Suppress changelog if not tagged</issue_title>
<issue_description>### Problem Statement

The Build Notes should only include the changelog if the from and to versions are actual git-tags in the repository.

Proposed Solution

The GitHubRepoConnector.GetBuildInformationAsync method should suppress generating the changelog link unless both the from and to versions are in branchTagNames.

This should be tested by unit testing, but doesn't need any new requirements.

Alternatives Considered

No response

Usage Examples

Benefits

Suppressing bogus changelog links for simple main-branch or PR builds.

Priority

Medium - Would improve my workflow

Willingness to Contribute

Yes, I can submit a pull request

Additional Context

No response

Checklist

  • I have searched existing issues to ensure this is not a duplicate
  • I have provided a clear description of the feature
  • I have explained why this feature would be useful</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Copilot AI changed the title [WIP] Suppress changelog generation for untagged builds Suppress changelog link when versions are not git tags Feb 16, 2026
Copilot AI requested a review from Malcolmnixon February 16, 2026 18:54
@Malcolmnixon Malcolmnixon marked this pull request as ready for review February 16, 2026 19:11
@Malcolmnixon Malcolmnixon merged commit 1f66f0b into main Feb 16, 2026
11 checks passed
@Malcolmnixon Malcolmnixon deleted the copilot/suppress-changelog-if-not-tagged branch February 16, 2026 19:11
Copilot AI added a commit that referenced this pull request Mar 30, 2026
Port the following changes from the template:

PR #61: Linting modernization
- Convert .cspell.json to .cspell.yaml with header comments and improved ignorePaths
- Convert .markdownlint-cli2.jsonc to .markdownlint-cli2.yaml with header, noBanner, noProgress
- Update lint.sh to use Python venv, lint_error variable, no emojis, expanded file extensions
- Update lint.bat to use Python venv, LINT_ERROR variable, expanded file extensions
- Add pip-requirements.txt with yamllint==1.38.0
- Add cspell and markdownlint-cli2 to package.json devDependencies
- Add .venv/ to .gitignore

PR #64: Align lint YAML configs
- Update .yamllint.yaml with header comments, DO NOT MODIFY policy,
  expanded ignore section (thirdparty, third-party, 3rd-party, .agent-logs/)
  and remove check-keys from truthy rule

PR #75: Formalize build_notes artifact handling
- Remove 'Move buildnotes.md to root' step from release.yaml
- Use artifacts/buildnotes.md directly as release body file

PR #77: Port markdown format requirements section
- Update .github/standards/technical-documentation.md reference from
  .markdownlint-cli2.jsonc to .markdownlint-cli2.yaml

Additional updates:
- Update AGENTS.md references from .cspell.json to .cspell.yaml
  and .markdownlint-cli2.jsonc to .markdownlint-cli2.yaml
- Update CONTRIBUTING.md spell checking section to reference .cspell.yaml
  and use ./lint.sh instead of individual lint commands

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Malcolmnixon added a commit that referenced this pull request Mar 30, 2026
…ements (PRs #61#77) (#115)

* Initial plan

* Apply template improvements: new agents, standards, .gitattributes, AGENTS.md update

Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/eef5ccc5-e481-4a3a-9c1f-5be3d92eedea

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Fix AGENTS.md gaps vs template, update technical-documentation.md paths, fix .cspell.json pattern

Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/d10b0427-1ebb-4771-9ec1-223de918aa66

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Apply template changes from TemplateDotNetTool PRs #61-#77

Port the following changes from the template:

PR #61: Linting modernization
- Convert .cspell.json to .cspell.yaml with header comments and improved ignorePaths
- Convert .markdownlint-cli2.jsonc to .markdownlint-cli2.yaml with header, noBanner, noProgress
- Update lint.sh to use Python venv, lint_error variable, no emojis, expanded file extensions
- Update lint.bat to use Python venv, LINT_ERROR variable, expanded file extensions
- Add pip-requirements.txt with yamllint==1.38.0
- Add cspell and markdownlint-cli2 to package.json devDependencies
- Add .venv/ to .gitignore

PR #64: Align lint YAML configs
- Update .yamllint.yaml with header comments, DO NOT MODIFY policy,
  expanded ignore section (thirdparty, third-party, 3rd-party, .agent-logs/)
  and remove check-keys from truthy rule

PR #75: Formalize build_notes artifact handling
- Remove 'Move buildnotes.md to root' step from release.yaml
- Use artifacts/buildnotes.md directly as release body file

PR #77: Port markdown format requirements section
- Update .github/standards/technical-documentation.md reference from
  .markdownlint-cli2.jsonc to .markdownlint-cli2.yaml

Additional updates:
- Update AGENTS.md references from .cspell.json to .cspell.yaml
  and .markdownlint-cli2.jsonc to .markdownlint-cli2.yaml
- Update CONTRIBUTING.md spell checking section to reference .cspell.yaml
  and use ./lint.sh instead of individual lint commands

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Changes before error encountered

Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/a338e6d6-893c-4cbd-a64b-01abce243e9d

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* chore: apply template consistency updates from PRs #65-#77

- Rename agent files to match template naming convention (.agent.md suffix)
  - requirements-agent.md → requirements.agent.md
  - software-developer.md → software-developer.agent.md
  - technical-writer.md → technical-writer.agent.md
  - test-developer.md → test-developer.agent.md
- Add tools: frontmatter field to agent files (PR #73)
  - code-review.agent.md: tools: [read, search, edit, execute, github, web, agent]
  - repo-consistency.agent.md: tools: [read, search, edit, execute, github, agent]
  - requirements.agent.md: tools: [read, search, edit, execute, github, web, agent]
  - software-developer.agent.md: tools: [read, search, edit, execute, github, agent]
  - technical-writer.agent.md: tools: [read, search, edit, execute, github, agent]
  - test-developer.agent.md: tools: [read, search, edit, execute, github, agent]
- Update AGENTS.md to align with template
  - Rename 'Project Structure' section to 'Project Structure Template'
  - Update 'Continuous Compliance Requirements' section ending to match template

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Remove agent files deleted from template in PR #76, update AGENTS.md

Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/80d99477-7c8a-469b-885d-da5c47aac27a

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

* Update THEORY-OF-OPERATIONS.md

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update technical-documentation.md to exactly match template

Agent-Logs-Url: https://github.com/demaconsulting/BuildMark/sessions/61323e76-70ab-4b09-a70b-a97fa1132013

Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Malcolmnixon <1863707+Malcolmnixon@users.noreply.github.com>
Co-authored-by: Malcolm Nixon <Malcolm.nixon@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: Suppress changelog if not tagged

2 participants