Linvis: Showing the Integration of Commits into Linux
Linvis is a tool designed to show the concepts behind the merge-tree, which is a structure introduced by Evan Wilde and described in further detail in the paper. The Merge-tree is a structure that shows how a commit is integrated into the master branch of a repository. Using the merge-tree we're able to create simple visualizations and clear summarizations, filtering out unrelated repository events and only showing what is important.
All of the following examples show information about merge 8eb88c80d444fd249edaa7d895666cde79e7b3b8.
Linvis support searching for commits using full-text searching. It takes into account the commit hash, keywords from the commit log subject and log body, the author name, the committed and authored date, and the file names. Entering information into this field will filter out the repository events that do not have any relevance to any attribute. If you know exactly which commit to navigate to, it is best to use the commit hash, as it will be the only one showing. Providing conflicting information will likely result in no results being returned.
The search results are grouped by the integrating merge, which is the root the of the merge trees. The commit groups are arranged according to the relevance of the contents of the group.
Click the Search button in the top bar to access the search page.
One of the primary goals behind the merge-tree model was drawing clean visualizations. As such, we implemented three visualizations into Linvis:
Linvis is able to provide aggregated summarizations of the contents at a merge, listing information about the:
This is implemented as part of the primary contribution of our paper Merge-Tree: Visualizing the Integration of Commits into Linux.
With an average of more than 900 top-level merges into the Linux kernel per release, many containing hundreds of commits and some containing thousands, maintenance of older versions of the kernel becomes nearly impossible. Various commercial products, such as the Android platform, run older versions of the kernel. Due to security, performance, and changing hardware needs, maintainers must understand what changes (commits) are added to the current version of the kernel since the last time they inspected it in order to make the necessary patches. Current tools provide information about repositories through the directed acyclic graph (DAG) of the repository, which is helpful for smaller projects. However, with the scale and number of branches in the kernel the DAG becomes overwhelming very quickly. Furthermore, the DAG contains every ancestor of every commit, while maintainers are more interested in how and when a commit arrives to the official Linux repository. In this paper, we propose the merge-tree, a simplified transformation of the DAG of the Linux git repository that shows the way in which commits are merged into the master branch of Linux. Using the merge-tree, we build Linvis, a tool that is designed to allow users to explore how commits are merged into the Linux kernel.