Introducing split view in gitg is comprised of small small tasks just like any other software feature requires.
One such task is:- Gitg should be able to detect binaries and images diffs if these are in the diffs then split-view simply does not makes sense.
With Albfan’s mentoring I was able to complete this task in mere 1-2 days and get it merged :- https://gitlab.gnome.org/GNOME/gitg/merge_requests/85 , 🙂
Now, This task was really less about code for me and more about research, the real challenge was to figure out some hints which might already be in gitg. And finally after looking a lots of code I found how it can be done.
Gitg has already two functions implemented which handles images and binary for example:- https://gitlab.gnome.org/GNOME/gitg/merge_requests/85/diffs#556709be8fab13c1f74f3f6557627ee7089bcb00_264_267
All I needed to do was to find these functions and then hide the split-view toggle buttons and it works like a charm 🙂
Now the next sub-task is to add a drawing-area between these two Diff-views which will be having curves drawing like we have in meld.
These curves will make the split-view look more interesting and intuitive.
The port from meld’s implementation is undergoing and I have been contributing to Albfan’s pet project https://gitlab.gnome.org/albfan/diferencia for this purpose.
Right now I was able to refactor it so that it can be ported to gitg’s needs easily.
The prototype looks kind of like this, so right now here I am adding the data manually with this handy UI, when ported to gitg the diff-commits will add the data automatically so basically this model needs to be implemented data source can by anything. I also added support for 3-way diff. Which basically be in the case of 3-way merge which is one of the other sub-task that needs to be poured into split-view feature.
So basically right now there are 2-3 blockers which I added to my task list in this MR, I believe will be solved by the end of this week and then we can start work to port it to gitg 🙂
I am available at [Kirito-3] #newcomers and #gitg , if anyone wants to know more 🙂
Fingers crossed 😉