7

While looking at this question I realised that I'm not too clued up on how Geth's different branches relate to each other.

For example, the PPA pushes out v1.5.0-unstable, which doesn't contain the changes made for the hard-fork, which went into 1.4.10. (I'm thinking specifically of this commit, which introduced the --oppose-dao-fork and --support-dao-fork flags.)

What are the rebase/collapse schedules relating to the different branches (I'm thinking master, develop and versioned branches), and more specifically, how do the PPA packages pick up the changes from these branches?

I'm hoping for a lovely branch diagram in the answer, but I'll settle for anything you've got...

1

From the Ethereum blog:

Beginning with Geth 1.5, we will no longer maintain a separate master branch for latest-stable and develop branch for latest-edge, rather we will switch to master as the default and development branch of the project, and each stable release generation will have its own indefinitely living branch (e.g. release/1.4, release/1.5). The release branches will allow people to depend on older generations (e.g. 1.4.x) without finding surprising git issues with history rewrites. And having master as the default development branch would allow developers to use the latest code.

There are 2 PPAs, ethereum for stable releases and ethereum-unstable for develop builds. From Go Ethereum Downloads they are updated automatically.

  • Stable releases

    • ethereum PPA is updated when a new version of the latest release (currently 1.5) branch is tagged.
  • Develop builds

    • ethereum-unstable PPA contains "the develop snapshots of go-ethereum, updated automatically when a new commit is pushed" on the master branch.
1

In general, the develop branch contains code in the development stage. Once changes are ready to be added to the final product, changes are committed to the master branch.

Source: https://www.digitalocean.com/community/tutorials/how-to-use-git-branches

Concerning Geth, this post from Nov 17, 2016 clarifies:

"A bit before the Frontier release last July, we switched to a source repository model where the master branch contained the latest stable code and develop contained the bleeding edge source code we were working on.

This repository model however had a few drawbacks: a) people new to the project wanting to contribute always started hacking on master, only to realize later that their work was based on something old; b) every time a major release was made, master needed to be force-pushed, which looked pretty bad from a repository history perspective; c) developers trying to use the go-ethereum codebase in their own projects rarely realized there was a more advanced branch available.

Beginning with Geth 1.5, we will no longer maintain a separate master branch for latest-stable and develop branch for latest-edge, rather we will switch to master as the default and development branch of the project, and each stable release generation will have its own indefinitely living branch (e.g. release/1.4, release/1.5). The release branches will allow people to depend on older generations (e.g. 1.4.x) without finding surprising git issues with history rewrites. And having master as the default development branch would allow developers to use the latest code."

Source: https://blog.ethereum.org/2016/11/17/whoa-geth-1-5/

Edit: added eth blog post

  • Welcome to the Ethereum Stack Exchange! I've upvoted your answer but it starts with information that's less relevant to the question, and usually it's clearer to try to answer the question first and then possibly give the general information. For example you wouldn't want to read a first link, only to find out that the second link has most of what you're looking for. Also, it didn't answer the question of "more specifically, how do the PPA packages pick up the changes from these branches?" I considered editing your answer to help you out, but it's too large an edit removing chunks & adding. – eth Nov 27 '16 at 22:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.