Challenge Overview
Challenge Objectives
-
Target environment: GitLens (VSCode Extension)
-
Basic Requirements: Extend GitLens to add required features, some features should be added via the BitBucket API.
Project Background
Git is the leading open source SCM (Software Configuration Management), our clients like the popular Git Diff VSCode extension GitLens for SCM. However, GitLens lacks some features that the clients need, so they want to add the missing functionalities into it. We would like to make this tool a much more valuable code review tool.
Technology Stack
Git
GitLens (VSCode Extension)
-
Electron
-
NodeJS
-
TypeScript
Individual requirements
Code base: please work on my forked repo https://github.com/billsedison/vscode-gitlens
Master branch, the latest commit hash 4ddb871459a3a1a1e132c8bdf83ac12e3b699649
1. Select multiple commits and aggregate diff
Currently, we can only select a single commit and compare with other commits on GitLens. We need to extend GitLens to add the functionality for multi-selecting non-consecutive commits.
The diff of selected commits are aggregated automatically. You can take the same functionality of IDEA as a reference, here is a demo video.
2. Filter commits by date
GitLens doesn’t support to filter commits by Date. We need to add this functionality to GitLens. The commits should be filtered by
-
All dates
-
Start and end date
-
Last 24 hours
-
Last 7 days
You can take the same functionality of IDEA as a reference, here is a demo video.
3. Combine filters
We need to search commits by combining different filters, including
-
filtering by branch
-
filtering by author
-
filtering by date
-
filtering by message (regex)
For example, we can search commits that are committed by billsedison (author), on master branch (branch), from June 8, 2018 to Sep 3, 2018 (date), with message “v8” (message regex).
4. Refactor the git log GUI
The GUI provided by GitLens is not user-friendly. It’s not straightforward for users to search by combining multiple filters. Here is a screenshot of the git log GUI of GitLens.
Instead, Git History and IDEA provides a better GUI. It clearly shows the UI controls for filtering by message, date, author etc.
Here is a screenshot of the git log GUI of IDEA.
Here is a screenshot of the git log GUI of Git History.
Please refer the GUI of Git History or IDEA to refactor the git log GUI of GitLens, that is:
-
Provide separate UI controls for filtering by messages, commit SHAs, date, author.
-
List filtered commits on a separate window.
-
Click each commit to show the details.
-
Click the modified file to show the content
Final Submission Guidelines
What To Submit
- A Git patch against the latest commit hash of the master branch of the repo.
- A detailed README.md to show how to apply your patch and run the modified GitLens.
- A video to verify your modified GitLens meets all requirements. If you are not comfortable with spoken English you may feel free to annotate your video with text.