-
Notifications
You must be signed in to change notification settings - Fork 267
Establish AssemblyVersion to Major.0.0.0 and PackageVersion to be Major.0.0, updates for Release on Tags only as well. #343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
59982c7 to
a1460ef
Compare
|
@jpreese @fgreinacher what do you guys think? |
|
I'll look this over pretty thouroughly this weekend. I'm actually going to be demoing our "merge into master automatic NuGet package" release approach to a working group on Friday and don't want to change that quite yet.. or it'll kill the demo. But as I've brought up a couple times, I do want to change that. |
|
Thanks for writing this down! I'll try to find some time for deeper thoughts on this within the next couple of days! |
|
"Merge into master" release works, its only problem is identification of the build. Using a Tag approach forces things to stay in sync... release artifacts and the corresponding commit. We could also include more commit information in the AssemblyInformationalVersion part. Yeah general merge into master for release works fine. If this PR goes in, we'll have that same strategy plus some :) The biggest part is trying to sidestep the issues with the Net Assembly Binder aka "fusion binder". We're right back to DLL hell with its insistence on precise version numbers. Nuget tries to sidestep the problem by adding a litany of bindingRedirects which works but really bloats out a web.config or app.config. I've been using a strict Major.0.0.0 for the AssemblyVersion which allows for some movement in a SemVer way of upgrading the assembly without breaking bindings and having to write out bidingRedirects everywhere... including further-down projects that might already reference the assembly... Imagine log4net or NLog using the same approach, and having two different 3rd party assemblies that log using Nlog/Log4net but aren't at the exact same NLog/log4net AssemblyVersion. Bindingredirect handles this, I believe but I was thinking of a smoother approach by having things as Major.0.0.0 permanently in the AssemblyVersion for binding sake. When you break the interface, SemVer says you must increment Major anyways. |
|
I like the general approach here. So here are just the things I don't agree with/am unsure about:
|
|
@ericnewton76 Most of the changes here are implemented with #369. Can we close this one? |
|
@ericnewton76 I'll close this one. Feel free to create issues/PRs for anything you think needs improvements :) |
This PR has a general goal of letting S-IO-A to be a lot more stoic. After that, we can then allow TestingHelpers to be more release friendly by splitting out the release cycles between the two libraries.
List:
Todos:
Next steps:
System.IO.Abstractions@2.2.0I also created RELEASE.md to outline release procedure with the Tags being the kicker for a Deployment
Also, I recommend forcing all pull-requests to develop branch from now on. This way master is always "the latest" when people come looking for documentation, and the master branch will always be whats released.
And split of testinghelpers will invalidate all current pull requests, so we need to work through them.