This article is part of a series about Herbstcampus 2016, a conference that took place in Nürnberg, Germany. Links to articles about other talks I visited there can be found below.
I visited Marko Beelmanns talk despite the fact that I’m not working with Visual Studio or TFS. The Git part was what lured me in. Marko gave a nice introduction about the difference between centralistic systems such as SVN and decentral systems such as Git. The former have a single point of failure: If your SVN server fails, work is not possible. Git as a decentral/distributed VCS is failsafe in that regard. This is just one of many plus points for Git that have been discussed in the talk. Marko gave a good summary of the basic Git functions and concepts at the beginning like how Git saves snapshots instead of diffs and what the staging area is.
One of Markos examples explained the difference between a fast-forward-merge and a rebase. Given a develop branch and a feature branch F. There are only changes on F, not develop. Now what is the difference between performing a fast-forward-merge and a rebase? I thought that in this case this yields the exact same result: the changes of the branch will be placed on develop without a merge-commit. That is true. However, a rebase changes the checksum of the last common commit, the fast-forward-merge doesn’t.
After explaining some base knowledge of Git, Marko showed a live demo of Visual Studio. I found it pretty cumbersome, but maybe I’m just not used to this IDE. Definitively strange was the missing staging area. Also, the application used different names for Git operations. Seemingly every IDE just uses its own vocabulary for concepts that are well-defined. Also, Visual Studio doesn’t provide a way to add a header and a body for commit messages. In IDEA, this can be done with an empty line between the two. In my experience, only Git Kraken provides a proper way for doing this. The team view seems to be pretty nice. It shows pull request with code review options. The commiter can request the review of a specific folder from a specific developer. That can be useful for having database scripts reviewed by your DB specialist.
After the life demo, Marko explained several more interesting merging situations and gitflow as a branching concept.
The last part of his talk was a report about his experiences in the transition from a centralized system to Git. Because of policy reasons, the history had to be migrated, hence a pure copy-operation of all files was not an option. After a phase of getting used to, Markos team worked much faster than with the previous CVS. In his opinion, it is very important to have a number of Git experts in the team to smoothen the learning curve for the developers. I definitively agree with that. Also, the usage of a workflow like Gitflow is recommended. This helps the developers make the right decisions. Another best practice is to use PullRequests. They enhance the quality of the code because they motivate code reviews and should only merged after being reviewed.
After the slides were over, a nice discussion about if to move to Git or not. The great majority of developers present strongly argued in favor of Git, so did I. Just a year ago, I was in the situation of deciding if to support my project moving to Git or not. I have been very skeptical and asked a lot of questions. Since then, I worked with Git and learned to absolutely love it. As I said in the discussion after the talk: You want to have Git, it’s awesome!
TL;DR
Use Git!
Other Content of Herbstcampus 2016
These are the talks I visited:
- Keynote by Marco Zehe
- The new modules system Jigsaw in Java 9 by Martin Lehmann and Dr. Kristine Schaal
- Git in the context of Visual Studio and TFS by Marko Beelmann
- Introduction to the world of quantitative analysis by Harm Gnoyke
- Experiences from 10 years of Domain Driven Design by Dr. Carola Lilienthal and Henning Schwentner
- Technical dept hurts - how to find and get rid of it by Dr. Carola Lilienthal
- (Herbstcampus Logo from http://www.herbstcampus.de/)