|
From: Tait <gnu...@t4...> - 2017-11-18 00:21:13
|
Ethan A Merritt <sf...@us...> said (on 2017/11/17): > Are you thinking there is (or could be) a "master" branch that is > different from "development"? What would that gain us? Sorry, I should have gone to look at the branch structure of the existing repository on SF. "Master" is normally the main branch, whatever that means. In my head, I was imagining that master was the current release branch based on what you'd written before. Having cloned https://git.code.sf.net/p/gnuplot/git-trunk now, I'll try to use the branch names that are actually there. What I see is a master branch, and *-stable branches corresponding to each release, so "master" is the development branch, it looks like. (Correct me if I'm wrong.) > Under the model we have been using, most of the changes to the > development branch never appear in the current stable branch. > Instead at some point we create a new stable branch and essentially > freeze it except for bugfixes. OK that's a bit of an overstatement. > Some relatively self-contained features can be added to the current > stable branch, but normally only after they've been in the > development branch for a while to shake out problems. > That's the part I'm trying to figure out right now. When you say "development branch" I think (now) that you mean master. Then, as with the branch-5-2-stable, you branch from master and changes unique to 5.2 go on that branch. If some bug fix on 5.2 also affects master, how does that fix get from 5.2 back to master? What kinds of things go onto branch-5-2-stable that shouldn't go back to master? > This is all new to me, but I think that the merge you describe is in > a sense the opposite of what I want to do. Any of what I describe is bidirectional. Git does not care whether you merge or cherry-pick from stable to development, or from development to stable. Cherry-pick is really nothing more than "copy and paste this commit". The only thing to keep straight is that cherry-pick will "paste" the commit onto whatever is currently checked out when you issue the command. |