Skip to content

docs(dotnet): explain how private feeds authenticate - #14679

Merged
jdx merged 1 commit into
mainfrom
claude/dotnet-open-discussions-d84827
Oct 18, 2026
Merged

jdx merged 1 commit into
mainfrom
claude/dotnet-open-discussions-d84827

Conversation

@jdx

@jdx jdx commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

https://entire.io/gh/jdx/mise/trails/880

Problem

Someone running the `dotnet` backend against a password-protected Nexus feed could not tell where to put credentials (discussion 12241). The private-feeds section covered `NuGet.Config` for installs but said nothing about the version-listing step, which authenticates separately.

Change

The private-feeds section of the dotnet backend page now says:

  • version listing reads the NuGet service index through mise's HTTP client, which sends `netrc` credentials to matching hosts by default, with an example `~/.netrc` entry
  • `dotnet tool install` does not read netrc, so the feed's credentials also go in `NuGet.Config` (or `dotnet nuget add source`)

Docs only. I confirmed from the code that `nuget_search_url` fetches through `HTTP_FETCH`, which applies netrc. I did not test against a real authenticated feed.

AI-assisted — Tool: Claude Code; model: anthropic/claude-sonnet-5-5; version: unavailable.

🤖 Generated with Claude Code


Note

Low Risk
Documentation-only change with no runtime or configuration behavior changes.

Overview
Private feeds documentation now explains that version listing and dotnet tool install use different credential paths.

mise’s mise ls-remote / registry lookup hits the service index via mise’s HTTP client, which applies netrc (HTTP Basic) to matching hosts—documented with a sample ~/.netrc entry for Nexus/Artifactory-style feeds. dotnet tool install is called out as not reading netrc; credentials for installs must live in NuGet.Config (packageSourceCredentials or dotnet nuget add source), alongside the existing note to align dotnet.registry_url with the feed.

Reviewed by Cursor Bugbot for commit 34e8ac8. Bugbot is set up for automated code reviews on this repo. Configure here.

Summary by CodeRabbit

  • Documentation
    • Clarified that version listing and package installation authenticate separately for private feeds.
    • Documented how to configure credentials for each operation.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M57XP00M6G9J3XHN20PRXTRY
@coderabbitai

coderabbitai Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: fa009e3e-e048-4aac-8c43-b79051271572
📥 Commits

Reviewing files that changed from the base of the PR and between 7f18f10 and 34e8ac8.

📒 Files selected for processing: 1
  • docs/dev-tools/backends/dotnet.md

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The .NET backend documentation now explains that mise version listing and dotnet tool install use separate authentication configuration for private NuGet feeds.

Changes: Private NuGet Feed Authentication

Layer / File(s) Summary
Document authentication requirements
docs/dev-tools/backends/dotnet.md
The documentation states that mise version listing uses matching-host netrc credentials with HTTP Basic authentication. It explains that package installation instead requires credentials in NuGet.Config or configuration through dotnet nuget add source.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to 34e8a

The documentation accurately distinguishes authentication for version listing from package installation. No actionable merge risk remains.

Pre-merge checks: Passed 5
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the documentation change. It identifies the .NET scope and explains that the change covers authentication for private feeds.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Low impact] The documentation change appears safe to merge.

Summary

The PR explains how private .NET feeds authenticate:

  • Private-feed guidance now separates version-listing and install credentials.

No actionable issues were found. The review checked the code paths; it did not test a live authenticated feed.

Reviews (1) · Last reviewed commit: "docs(dotnet): explain how private feeds ..." · Reviewed by Greptile

@jdx
jdx enabled auto-merge (squash) October 18, 2026 16:38
@jdx
jdx merged commit ea80c86 into main Oct 18, 2026
71 of 75 checks passed
@jdx
jdx deleted the claude/dotnet-open-discussions-d84827 branch October 18, 2026 17:04
@github-actions

Copy link
Copy Markdown
Contributor

Instruction counts

benchmark trend instructions Δ wall (min) Δ
env ▇▁▅█▅▆▆ 30,806,829 → 30,806,194 -0.00% 20.38 → 20.72ms +1.69%
hook-env ▃▂▂▇█▆▁ 33,085,638 → 33,046,162 -0.12% 21.70 → 21.70ms -0.01%
ls ▆▅██▁▄▆ 35,040,060 → 35,058,723 +0.05% 22.56 → 22.62ms +0.25%
registry ▅▃▁▆██▁ 43,918,665 → 43,801,568 -0.27% 18.82 → 18.59ms -1.21%
startup ▄▄▁▄█▃▅ 12,009,534 → 12,015,716 +0.05% 12.53 → 12.75ms +1.77%

No instruction-count regression above 1%.

Only instruction counts gate. Wall clock is shown for context — on identical hardware it moves 4-20% run to run.

Measured by tak — instruction-counted CLI benchmarks, stored in this repository's git notes.

34e8ac807f15 vs a53284feb44e · measured on the runner, not pushed to the history.

mise-en-dev added a commit that referenced this pull request Oct 19, 2026
<!-- entire-trail-link-start -->
https://entire.io/gh/jdx/mise/trails/879
<!-- entire-trail-link-end -->

### 🚀 Features

- **(backend)** serve every backend's version list from the versions
host by @jdx in [#14700](#14700)
- **(bootstrap)** add --prune-dotfiles to remove orphaned dotfiles by
@jdx in [#14681](#14681)
- **(config)** add read_json, read_yaml and read_toml template functions
by @jdx in [#14705](#14705)
- **(config)** apply the default minimum_release_age to every backend by
@jdx in [#14701](#14701)
- **(dotfiles)** add dotfiles.windows_symlinks to link files instead of
copying on Windows by @jdx in
[#14682](#14682)
- **(dotnet)** add lts and sts version aliases by @jdx in
[#14683](#14683)
- **(http)** read release dates for http versions by @jdx in
[#14696](#14696)
- **(install)** add a PowerShell installer at mise.run/powershell by
@jdx in [#14660](#14660)
- **(task)** add -a as a short alias for tasks --all by @williamsjokvist
in [#14674](#14674)
- **(vfox)** let plugins report release dates for minimum_release_age by
@jdx in [#14695](#14695)

### 🐛 Bug Fixes

- **(aqua)** find binaries in macOS universal archives by @jdx in
[#14665](#14665)
- **(aqua)** date github_tag versions so minimum_release_age applies by
@jdx in [#14691](#14691)
- **(backend)** warn when minimum_release_age cannot check a version's
date by @jdx in [#14694](#14694)
- **(conda)** report release dates so minimum_release_age applies by
@jdx in [#14693](#14693)
- **(core)** date dotnet, deno and erlang versions for
minimum_release_age by @jdx in
[#14692](#14692)
- **(core)** date more ruby, python and rust versions so
minimum_release_age applies by @jdx in
[#14697](#14697)
- **(dotfiles)** report copies instead of symlinks for symlink-each on
Windows by @jdx in [#14654](#14654)
- **(fmt)** keep multiline inline tables intact by @jdx in
[#14670](#14670)
- **(http)** retry the install rename on Windows when antivirus holds
the files by @jdx in [#14703](#14703)
- **(install)** extract 7z archives when the data dir contains `..` by
@jdx in [#14657](#14657)
- **(npm)** run allow_builds scripts despite ignore-scripts in .npmrc by
@jdx in [#14661](#14661)
- **(npm)** pin aube-lock.yaml so a user's lockfile settings don't break
mise lock by @jdx in [#14659](#14659)
- **(rust)** list channels when GitHub is unreachable behind a mirror by
@jdx in [#14662](#14662)
- **(shim)** keep the version tag in the Windows release mise-shim.exe
by @jdx in [#14656](#14656)
- **(task)** keep task commands working when one task's dir template is
broken by @jdx in [#14680](#14680)

### 🚜 Refactor

- **(schema)** generate the [deps] and [secrets] schema from their types
by @jdx in [#14658](#14658)
- **(schema)** generate the [daemons] and [daemon_providers] schema from
types by @jdx in [#14663](#14663)
- **(schema)** generate the [hooks] schema from declaration types by
@jdx in [#14666](#14666)
- **(schema)** generate the [bootstrap] raw-value schema from
declaration types by @jdx in
[#14668](#14668)
- **(schema)** generate the [tools] option schemas from declaration
types by @jdx in [#14669](#14669)
- **(schema)** generate the [env] and [vars] schema from declaration
types by @jdx in [#14671](#14671)
- **(schema)** generate the multi-shape task field schemas from
declaration types by @jdx in
[#14672](#14672)

### 📚 Documentation

- **(config)** add an interactive mise.toml editor and playground by
@jdx in [#14673](#14673)
- **(config)** hover over keys in every mise.toml example by @jdx in
[#14686](#14686)
- **(config)** turn the mise.toml reference into a key explorer by @jdx
in [#14687](#14687)
- **(config)** show a real example for every mise.toml reference key by
@jdx in [#14690](#14690)
- **(dotnet)** explain how private feeds authenticate by @jdx in
[#14679](#14679)
- **(schema)** describe the remaining bootstrap keys by @jdx in
[#14688](#14688)
- **(secrets)** add setup, CI and migration guidance to the fnox page by
@jdx in [#14675](#14675)
- record the landing-page showreel against current mise so its cache
fills by @jdx in [#14685](#14685)

### 📦️ Dependency Updates

- lock file maintenance by @renovate[bot] in
[#14708](#14708)

### 📦 Registry

- add release dates to dart, flutter, nim, julia and other http tools by
@jdx in [#14698](#14698)

### Ci

- **(release)** publish releases staged before install.ps1 existed by
@jdx in [#14684](#14684)
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.

1 participant