[Feature] More sophisticated (custom) filtering of the log-graph
I'm sometimes having trouble visualizing the overall branching structure, even on a filtered subset of related branches, when there are lots of commits on parallel branches in a large project with many devs.
The Git-provided option --simplify-by-decoration (which can already be enabled in SourceGit) is ALMOST helpful, since it displays only commits "decorated" with one or more branches/tags. However, it still falls short because it simplifies history TOO MUCH. It only shows a few of the relevant bifurcation- and merge-points, while I'd need to see ALL of these in order to get a fully graspable overview. Unfortunately, it doesn't seem possible to combine options in Git to achieve such a graph.
In Plastic SCM (which we've migrated from) there's an option called "View relevant changes only", which hides all "trivial" commits (i.e undecorated commits with only 1 parent and 1 child). That was very helpful, and I would suggest adding a similar feature in SourceGit.
By (optionally) filtering the log-graph using custom logic, instead of only relying on Git-provided options, we could have more granular options and give users some further added value beyond the command-line.
I found a separate project which does something more along these lines. While it uses graphviz for visualization, which is not relevant here, I just want to apply a similar filtering in SourceGit, with include/exclude options for (all) / branches / tags / roots / bifurcations / merges :
https://github.com/git-big-picture/git-big-picture
BTW, I was hinted about that project from an old discussion-forum post, by someone looking for the discussed feature in Git itself:
https://git.vger.kernel.narkive.com/Uz1rjGHj/log-simplify-by-decoration-but-including-branch-merge-points
NOTE: This type of custom log-graph filtering could even be extended to filtering by path (i.e. display only commits affecting a specified file or subfolder). This would be extremely useful - similar to File/Dir History, BUT better - because :
- We would see the graph which helps with visualization (of branching and merging).
- It would (unless combined with branch-filters) be able to show every branch instead of just ancestors of a selected commit.
- Similar to the above discussions, it should show also the relevant bifurcation and merge points (of the involved ancestry-lines), to get the overall picture.