Read new wwwauth[] input from Git 2.41#1288
Merged
Merged
Conversation
Add support for reading and writing multi-dictionaries in Git's credential helper I/O format. Multi-dictionaries differ from normal dictionaries by being key:value relation 1:N. Git prepends "[]" to the end of keys that should be treated as lists or having mutliple values. An empty value in the list has the effect of cleaning/resetting the values in the list so far. The first multiple-valued key is expected to be 'wwwauth[]' from this patch series: https://lore.kernel.org/git/pull.1352.v11.git.1677518420.gitgitgadget@gmail.com/
This was referenced Jun 9, 2023
Add the new `wwwauth[]` credential property to the input arguments surfaced to providers and commands.
ldennington
approved these changes
Jun 12, 2023
ldennington
left a comment
Contributor
There was a problem hiding this comment.
This is great! The tests made what you did super clear and easy to follow. Nice work! ⭐
| return output.ToString(); | ||
| } | ||
|
|
||
| private static void AssertDictionary(string expectedValue, string key, IDictionary<string, string> dict) |
Contributor
There was a problem hiding this comment.
This looks to be unused - do we want to keep it?
Contributor
Author
There was a problem hiding this comment.
I think it's worth keeping. We should maybe be using it in some of the existing tests!
Contributor
There was a problem hiding this comment.
Ok, I'm fine with that.
Contributor
Author
There was a problem hiding this comment.
Pushed a new commit on top that now uses the AssertDictionary helper method.
| secretKeys.Contains(entry.Key, keyComparer ?? EqualityComparer<TKey>.Default); | ||
| if (isSecretEntry && !this.IsSecretTracingEnabled) | ||
|
|
||
| void WriteSecretLine(object value) |
Contributor
There was a problem hiding this comment.
I wasn't aware you could do this. Interesting!
|
|
||
| // Transform input from 1:1 to 1:n and store as readonly | ||
| _dict = new ReadOnlyDictionary<string, IList<string>>( | ||
| dict.ToDictionary(x => x.Key, x => (IList<string>)new[] { x.Value }) |
Contributor
Author
There was a problem hiding this comment.
Helps reduce churn. This constructor is now only called from test set up code.
Merged
mjcheetham
added a commit
that referenced
this pull request
Jun 26, 2023
**Changes:** - Use in-proc methods for getting OS version number (#1240, #1264) - Update System.CommandLine (#1265) - Suppress GUI from command-line argument (#1267) - Add github (login|logout|list) commands (#1267) - cURL Cookie file support (#1251) - Update target framework on Mac/Linux to .NET 7 (#1274, #1282) - Replace JSON.NET with System.Text.Json (#1274) - Preserve exact redirect URI formatting in OAuth requests (#1281) - Use IP localhost redirect for GitHub (#1286) - Use WWW-Authenticate headers from Git for Azure Repos authority (#1288) - Better GitHub Enterprise Managed User (EMU) account support (#1190)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add the new
wwwauth[]credential property to the input arguments surfaced to providers and commands. This optional property is available as of Git 2.41.https://lore.kernel.org/git/xmqqleh3a3wm.fsf@gitster.g/
This new property may contain multiple values, as identified by a trailing
[]on the property name. Extend ourDictionary/Stream(Reader|Writer)methods to allow for these multi-valued properties and add a convenience property to theInputArgumentsto getwwwauth[].