Skip to content

[Feature] More sophisticated (custom) filtering of the log-graph #1714

@goran-w

Description

@goran-w

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions