On 26. Nov 2018, at 19:47, Marshall Schor <[email protected]> wrote: > > How does this process work for git? > - should committers push changes to a temp branch, and when done, "rebase" > (unless you want to keep the details of every commit that was done in the > branch), and push to "master"? (This seems to emulate the commit to "trunk").
There are various strategies. I prefer this one: https://dkpro.github.io/contributing/ (see heading "Preparing a pull request"). Normally, I "merge" the pull-request branches. That is the easiest and most straight-forward approach - in particular if you don't mind that the history of the git repo may at some point look more like a knitwork than a straight line. At some point, you won't miss the straight line anymore. In git, the commits are hashed and the hashes are chained. So if you have a commit X whose parent is commit A and you rebase X on top of some new commit B, then the identity of X changes. Pushing such an updated identity to a branch requires a "force push" and gives other people who might have checked out the branch and who might have made their own modifications a hard time. Think you are working on feature Foo and your colleague is working on feature Bar which is based on Foo (so your colleague branched off from Foo, not from master). If you force-push changes into the Foo branch, your colleague will have to spend some time reconciling the Bar branch - better avoid it. In rare cases, I rewrite the commit messages of a branch (e.g. if a contributor forgot to mention the issue numbers) or I squash the PR (i.e. all commits get squashed down into a single commit which is rebased during merge). But I try to avoid it. > I guess the maven release plugin has some way of working with git; > see > https://stackoverflow.com/questions/39573409/how-to-setup-the-maven-release-plugin-with-git > > Is the process for release to use the same mvn release:prepare, and > release:perform? Yep, works. There are alternatives though. Using the Maven Release Plugin requires that the development branches always have a version ending in "-SNAPSHOT" in their POMs. Some people prefer that e.g. the master branch always represents the latest release. For these, people, the Maven Gitflow Plugin may work better. I'm personally using the Maven Release Plugin. Cheers, -- Richard
