So I finally got abapGIT running and connected it to GITLAB. I can commit, pull, branch, revert ... how nice is that?
Now comes the harder part: How do I set up GIT usage in my developer team? Actually, I am in a brainstorming mood, and I'd like to share my thoughts so hopefully some inspiring comments will come along....
Having read this very nice
blog post I understood that there will be no way to work with multiple branches in a centralized code base.
Now what do I want to obtain from my GIT-powered development?
- fearless refactoring - always being able to revert to my starting point when I got stuck
- easy code review - see all changes at a glance, add comments, discuss the code (GITLAB) can do this
- easy transport of reusable code between different abap-based systems (ERP, APO, GTS, ...)
We have a 3-headed ABAP DEV team and practically everyone is intended to maintain everything. So having two ABAPers working on the same development package happens all the time. In the past, one began to change code and then stumbled across a class method that is blocked by the colleague. Here the hassle begins: Can we merge the two change requests? Have you already finished? and so on....
With GIT, one could first check the GIT repo for the development class. If the colleague did right, there should be some commits since the last "go live" commit. It now should be easier to understand, what's going on.
This means, commits should be done frequently.... at least once a day? After each successful test run? still thinking...
I also thought to keep ongoing development in a branch - the colleague is immediately aware of the WIP state of the dev package. Each go-live should then imply a merge with the master branch.
I still am not sure how to organize how two developers could work simultaneously on (different) objects of the same dev class. abapGIT will keep always the whole package in one repo, so how divide things? There are really huge packages we created in the past. Maybe it would be a good idea to first split the packages in smaller sub-packages and create the git repos for those.
That's it for today. Looking forward to read your thoughts!