-
Notifications
You must be signed in to change notification settings - Fork 3k
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
[PROPOSAL] inverse use of branches: master = stable, develop = nightly snapshots #90
Comments
It does respect the default branch. E.g. https://github.com/ericchiang/go-get-default-branch
|
@ericchiang cool. IMO we would reduce a lot of pain for downstream users by switching the default branch to the release branch then. What is still open: does this work with the k8s.io/client-go redirect. @lavalamp @thockin wdyt about this kind of switch? I prefer it over some gopkg.in magic (kubernetes/k8s.io#49) as it is much more transparent. wdyt? |
I hate the model of "head isn't where development happens", in general, but
I could see an argument for it for the client libs. At that point, though,
why not go back to development in repo `client-go-dev` and cut releases to
repo `client-go`. It seems less likely to accidentally take a PR against
the wrong branch.
…On Tue, Feb 14, 2017 at 1:26 AM, Dr. Stefan Schimanski < ***@***.***> wrote:
Any update on this side? @lavalamp <https://github.com/lavalamp> @thockin
<https://github.com/thockin>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#90 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFVgVJwbYupMOnmeT5pQ4gEjwbQzdi3Tks5rcXMqgaJpZM4L2bbP>
.
|
I see the develop branch and dev-repo as more or less the same thing. Am also fine with the repo. The only issue I see: if we switch to an external client-go repo some day for actual devlopment (not only do snapshots nightly), the client-go-dev repo idea will break down. |
I'm not a go expert, but I thought generally speaking that if you "start pulling master into your (production) projects" on any project, you're gonna have a bad time. |
@WilliamDenniss Generally (as Go projects mostly don't use versioning) master should be considered the stable branch, as that's the one Almost all of the Go ecosystem works this way, so this is a pretty big deal. |
@rubenv This is an expectation that many in the Go community are trying to get away from. e.g. https://dave.cheney.net/2016/06/24/gophers-please-tag-your-releases I think it's reasonable to encourage using a release as long as it's well documented. The reason people pull master is because people don't tags semantic releases, and the lack of well documented tooling. Maybe "don't go get master" should be stressed more, earlier in client-go's docs? |
Sorry I just see this. Using another branch (or even better another repo) looks good to me. About changing default branch, it is basically a renaming of branch master. All PRs will be defaulted to the new branch, first page shows new branch, etc. I don't see much value in renaming master. |
@ericchiang While I massively respect Dave Cheney, I don't think he speaks for the community as a whole. Doesn't matter either, as it stands client-go is the only library that's causing such difficulties. Promoting vendoring is fine, but effectively forcing it upon people when it isn't commonly required is a bit of a pain. |
On Wed, Mar 15, 2017 at 10:54 AM, Eric Chiang ***@***.***> wrote:
@rubenv This is an expectation that many in the Go community are trying to get away from. e.g. https://dave.cheney.net/2016/06/24/gophers-please-tag-your-releases
I think it's reasonable to encourage using a release as long as it's well documented. The reason people pull master is because people don't tags semantic releases, and the lack of well documented tooling. Maybe "don't go get master" should be stressed more, earlier in client-go's docs?
Until `go get` supports tags or versions, this is a non-starter, IMO
|
@thockin I'm encouraging we stress NOT using |
And I am saying (unhappily) that I don't think it matters what you put in
the README. :)
…On Wed, Mar 15, 2017 at 11:54 AM, Eric Chiang ***@***.***> wrote:
@thockin <https://github.com/thockin> I'm encouraging we stress NOT using go
get earlier in client-go's README. Sorry if that wasn't clear.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#90 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFVgVGdUVpts1vZwj7V9njauUd0vBuodks5rmDPugaJpZM4L2bbP>
.
|
We can creating |
Yeah, I know it will cause pain to US, but a small amount of pain for us is
better than `go get` not working.
…On Wed, Mar 15, 2017 at 1:49 PM, Mehdy Bohlool ***@***.***> wrote:
We can creating stable-no-PRs branch and change github default branch to
it and continue development on master. People that send PRs will see
where they send PR and change the PR target to master (we should obviously
document this too). To our eyes, branching is the same as kubernetes
(master is development branch). go-get will get a stable version. We
change stable-no-PRs branch to point to the latest version on each
release. Except naming, this is the same thing @sttts
<https://github.com/sttts> is suggesting in the first post.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#90 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFVgVE7W-MmciV6j7ykiVMjaE25dpjt0ks5rmE7CgaJpZM4L2bbP>
.
|
As a new user of go, this was a frustrating headache that took far too long to overcome. |
A series of PRs will land soon to automatically publish k8s.io/kubernetes/staging to respective repos synchronously (e.g., apimachinery, client-go, apiserver, kube-aggregator, sampe-apiserver). This guarantees that
Are these guarantees good enough for |
Whatever we decide here, I think we'll have to impose the same structure in all k8s.io repos we separated from the main repo (apiserver, apimachinery, client-go, kube-aggregator etc.). I like @mbohlool's suggestion, but i'm concerned with one particular operational cost: we'll need to cut releases of these repos at the same time to make sure the We have this requirement because these repos dependend on each other so |
Are we going to do development outside of the "main" repo (ie directly in
the client-go repo) or is that repo *only* for re-publishing from main repo?
…On Thu, Mar 16, 2017 at 1:01 AM, Chao Xu ***@***.***> wrote:
Whatever we decide here, I think we'll have to impose the same structure
in all k8s.io repos we separated from the main repo (apiserver,
apimachinery, client-go, kube-aggregator etc.).
I like @mbohlool <https://github.com/mbohlool>'s suggestion
<#90 (comment)>,
but i'm concerned with one particular operational cost: *we'll need to
cut releases of these repos at the same time to make sure the stable-no-PRs
branches (i.e., the latest releases) of these repos are compatible.*
We have this requirement because these repos dependend on each other so go
get one of the them will download others from the stable-no-PRs branches
as well. Letting these repo vendor the dependent code in vendor/ is not an
option, because that will cause thttps://github.com/
kubernetes/client-go#83#issuecomment-280437996.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#90 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFVgVGG0Cr2SVprV_xXW1Wzvc7rqTRw3ks5rmOxGgaJpZM4L2bbP>
.
|
Certainly not in the near future, at least until we agree on necessary tooling for multi-repo development. For 1.6.x and certainly 1.7 we will just sync daily with @caesarxuchao's nearly ready publish scripts, i.e. all the mentioned staging repos will extracted from k8s.io/kube, godeps updated and then pushed all at once (as atomically as we can do it with github). |
In this model, the default branch on the client-go repo will be taking a
snapshot of development work, rather than stable, right? So I still think
we should do something whereby the default branch is the latest _release_,
and dev snapshots go somewhere else
…On Thu, Mar 16, 2017 at 11:12 AM, Dr. Stefan Schimanski < ***@***.***> wrote:
Are we going to do development outside of the "main" repo (ie directly in
the client-go repo) or is that repo *only* for re-publishing from main
repo?
Certainly not in the near future, at least until we agree on necessary
tooling for multi-repo development. For 1.6.x and certainly 1.7 we will
just sync daily with @caesarxuchao <https://github.com/caesarxuchao>'s
nearly ready publish scripts, i.e. all the mentioned staging repos will
extracted from k8s.io/kube, godeps updated and then pushed all at once
(as atomically as we can do it with github).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#90 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AFVgVMW5hGiSJ8AfRVoF5FaWhFiR-B5Rks5rmXuigaJpZM4L2bbP>
.
|
So long as I have a tag for the version released I don't really care. I think everyone will expect tagging to be consistent across repos for release versions. |
Issues go stale after 90d of inactivity. Prevent issues from auto-closing with an If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or |
Rotten issues close after 30d of inactivity. Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
With #83 and #78 in mind, I propose the following solution:
master
branch into our latest stable release branchk8s.io/kubernetes
to thedevelop
branch.Then implement the following rules in our munge bot:
k8s.io/kubernetes:master
changed => push toclient-go:develop
, nightlyk8s.io/kubernetes
minor release is tagged of latest major release => push toclient-go:master
and equivalently for
k8s.io/apimachinery
.Optionally
k8s.io/kubernetes:release-1.5
is changed => push toclient-go:release-1.5
, nightlyk8s.io/kubernetes:release-1.6
is changed => push toclient-go:release-1.6
, nightlyReasoning
Downsides
kubernetes:master
andapimachinery:master
might be incompatible)Questions
/cc @deads2k @lavalamp @caesarxuchao
The text was updated successfully, but these errors were encountered: