-
Notifications
You must be signed in to change notification settings - Fork 314
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
Git branching scheme #3660
Comments
5.1-rc1 pushed into |
@Beep6581 Do you intend to merge back the releases branch into the dev branch in order to have a dev branch git version containing the 5.1 tag instead the 5.0-r1-gtk3 tag as now? |
@gaaned92 I already have as soon as I released. |
Oops, I ran a test-compile and didn't push! Pushed now. |
OK now. Thank you |
This doesn't seem relevant anymore |
The purpose of adopting this scheme is to prevent "management" of branches from getting in the way of development. Developers should always be able to make and commit changes regardless of whether there is a new release being made.
I hope that together we can make this work.
Note: Renaming remote branches is not possible. To "rename" a branch a new one is created and the old one deleted and the remote is set to track the new one. This is risky, even more so when we have open pull requests. I don't know what to expect in reality, considering we're not just using Git but also GitHub. I took the safe option, which was to branch off as described below and leave the original branches in place for now. We can delete the original branches in the future once we're sure everyone has moved on to the new ones.
Closely based on http://nvie.com/posts/a-successful-git-branching-model/ except what they call "master" we call "releases".
gtk2
frommaster
, and branchdev
fromgtk3
.dev
is the new default branch. Please ignore branchesmaster
andgtk3
, as if they were deleted - they will be deleted in the future.dev
branch) into the GTK2 branch (gtk2
), nor vice-versa. The GTK2 life support of RawTherapee has ended, though you are free to commit things togtk2
if you so desire, but remember that the code will not get merged.locallabgtk3
andpixelshift_gtk3
.dev
branch when they are ready, that means tested and stable.dev
branch will be perpetually under development.release-5.1
. Release branches will be branched-off from thedev
branch. "Assembled" means that we will iron things out in those branches, update the release notes and other docs, update the splash screen, fix bugs as well.release-5.1
branch and then cherry-picked back intodev
.release-5.1
is stable enough, it gets merged into thereleases
branch. Thereleases
branch at that point gets the5.1
tag.release-5.1
gets deleted.Q: When I clone the RawTherapee repo, which branch will I find myself in?
A:
dev
.Q: I make development builds, which branch do I use?
A:
dev
.Q: Why call it "dev"?
A: It's clear that it's development, and it's shorter to type. Furthermore,
AboutThisBuild.txt
for development builds will show that they come from branchdev
- it's very clear that this is not a release.Q: The "A successful Git branching model" link calls the branch
master
, you call itreleases
, why?A: Two reasons. The first is that we already have a branch called
master
and I don't want to delete it yet for safety reasons, and I don't want to create a new one using the same name. The second reason is that when a user runs a release, they will see a branch name inAboutThisBuild.txt
. It would be appropriate for this branch name to bereleases
.Q: Are branches
releases
andrelease-5.1
the same thing?A: No, they are two different branches.
release-5.1
is temporary and gets merged intoreleases
and tagged, thenrelease-5.1
gets deleted. Branchreleases
must never be deleted.Q: Why delete release-* branches?
A: There is no need for them once they get merged into
releases
. Commits made directly into them should get cherry-picked intodev
if necessary.Q: Why do I still see
master
andgtk3
when I dogit branch -a
?A: Because I could not "rename" them, I had to create new branches based off of them. These
master
andgtk3
branches will get deleted in the future, once we're sure that everyone is using the new system. Do not commit anything to themaster
orgtk3
branches - they are dead.Q: Will there be merge conflicts using this scheme?
A: Yes. Merging
releases
back intodev
may produce conflicts. Nothing unusual.Q: Do I need to do anything?
A: Get all updates using
git fetch --all
. If you are working on any feature branches, do one final merge:git checkout master && git pull && git checkout yourfeaturebranch && git merge master
Or if your feature branch uses GTK3 then
git checkout gtk3 && git pull && git checkout yourfeaturebranch && git merge gtk3
You may also want to delete the local copy of
master
andgtk3
from your system so that they don't tempt you,git branch -d master
andgit branch -d gtk3
.The text was updated successfully, but these errors were encountered: