Aggregated git diff extension for VS code or bitbucket - Exploratory challenge

Register
Submit a solution
The challenge is finished.

Challenge Overview

A powerful git diff tool can be one of the most valuable instruments for doing peer code reviews. Some IDEs like JetBrain’s IntelliJ IDEA and WebStorm provide an extension that enables git history query, filters and comparisons. It allows developers to select non-consecutive commit SHAs for an “aggregated” diff.  This feature is ideal for peer reviews because it allows two developers to focus on just the changes for the story or issue and filter out all the other noise. Our customer would like to leverage this feature in their peer review process but not all developers use one of the JetBrains products. However all have access to Microsoft’s VS Code which has a rich extension ecosystem with over 200 git extensions, they also use bitbucket for their SCM. In addition, finding or building an “Aggregated” diff feature, it is also important to be able to filter commits based on commit author, date, branch, regex of the message.

 

The goal of this challenge is to find or propose a solution that:

1. Is built on VS Code or bitbucket as an extension

2. Provides an aggregate diff feature such that developers can multi-select non-consecutive commits for comparison

3. Provides the ability to filter commits based on

  • author

  • date

  • branch

  • regex of the message.

This should be used in conjunction with the multi-selected feature.

4. Provides the ability to filter out merge commits, so that the users can only look at individual commits.

5. Provides the most feature-rich git diff tool provided the above 4 requirements have been met.

 

This is an exploratory challenge so there are several types of acceptable submissions:

1. You may find an existing VS code or bitbucket extension that meets all our requirements and you may demonstrate them in action.

2. You may find an existing extension that meets most of the requirements and offers a roadmap to the remaining requirements.

3. You may find an existing extension and provide a branch that meets all the requirements. More specifically, you can:

  • look for if there exists a feature branch in one of the 214 VS code extension, but has not been merged by the extension owner.

  • or look into the code and add the feature yourself.

4. You may create an entirely custom solution that meets all the requirements.  

 

Additional Details.

1.  Commit messages may contain well-formatted text like “US1234:”  or “DE345:” to distinguish user stories or defects respectively in addition to the Autor id and all other attributes of the git log. You should take these into consideration when identifying your regex solution.  A simple search will not suffice.

2.  There are 214 extensions on the Visual Studio Marketplace when searching for git (https://marketplace.visualstudio.com/search?term=git&target=VSCode&category=All%20categories&sortBy=Relevance).  They all appear to be free and are all considered fair game.

3. We have done a preliminary exploration and found two valuable extensions for your reference.

These two extensions almost cover all requirements except for the git diff aggregation feature. You can consider these two most valuable. If you decide to explore one of these two extensions, you should

     (1) explore all features and check if any requirements are not met other than the git diff aggregation.

     (2) implement the git diff aggregation functionality in the extension or document a roadmap about how to add this feature into the extension

4. Both VS Code or bitbucket extensions are fair game but a bitbucket extension would be slightly more desirable since it would not require all developers to install it.

5. Combining several extensions would be considered however it is less desirable.

 

The image above shows GitLens extension for VS Code. The left panel is the history log but you are only allowed to select one commit for comparison

 

The image above shows Intellij IDEA allows users to select multiple commits in the lower left panel which passes context to the other two panels on the lower right

Final Submission Guidelines

1.  A well-formatted documentation (in .md/.pdf/.docx, at least 2 pages long) to cover all contents mentioned above. More specifically, you should
  • list all features the extension
  • if the extension can't meet all requirements, please provide a roadmap about how to address remaining requirements.
2.  You may also submit code in a single zip file or link to a repo/branch
3.  You may also submit a video to augment your document.   If you are not comfortable with spoke English you may feel free to annotate your video with text. 

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30069540