I noticed in the git repository that there is a rel-400 branch and a v4_0_0 tag. Which one is the released version of 4.0? For that matter, is there a difference? Will there be a similar thing with 4.1?
v4_0_0 is the tag for the official release. So, when you download a package with 4.0 in it, you are downloading code that was taken from git at this tag. Note that in git a tag is like a snapshot in the code.
rel-400 is a branch, which was branched off the ‘master’ branch (note the ‘master’ branch is where development occurs) before releasing 4.0 to allow testing etc. Then on release day, the code in this branch was tagged with v4_0_0. And subsequently all patches that are released for version 4.0 also go into the rel-400 branch (note that although the patches after releasing 4.0 are in the rel-400 branch, they are not included in the v4_0_0 tagged code). So a branch is something that continues to be built upon, while a tag is simply a single snapshot in time.
I hope this makes sense. And, yes, we are doing the same process with 4.1, which is why there is now a rel-410 branch for testing, and when we release it, we will then tag it with v4_1_0 .
Ok, so when I do a git pull on the rel-400 (or future rel-410) branches, that is the latest 40 release, including any patches that may have come out since the v4_0_0 tag?