Over the past few months I've posted a few times about gitnoc, a flask-based dashboard for monitoring collections of git repositories with git-pandas. You can check some of those out here:

The purpose of the gitnoc project has always been to dogfood the more formal and generalized git-pandas project. So as one feature (like punchcards) rolls out to git-pandas, it gets a widget in gitnoc. More independently, gitnoc is intended to give a holistic view of an organization (or individual's) repositories in one place.

Where one engineering team can have 10s or more repositories, being able to track metrics and pacing across all of them can be really valuable for scheduling, planning, identifying personnel risks (who has too much on their shoulders), and identifying code risks (what parts of the codebase are best candidates for testing).

This week I've taken the step to clean up and restructure the gitnoc codebase to support more earnest development in the future. Currently, it is a flask app with background task processing via Redis and RQ. Many of the pages are slow to load with large repositories, but I aim to move these tasks into async calls to improve the experience some. I'd also like to improve support for remote and private repositories so that this could be deployed on a server.

Beyond just code-related changes, I've also added in some functionality related to the recent file details function in git-pandas. Now the front page of gitnoc looks like this:

The punchcard is a slow to load async call so it is hidden at first behind a tab. On the front tab we have a table with each repository in the project directory (configured via settings), and the option to see project level file details (no support for consolidated file details yet). At the top, the leaderboard remains the same as before, with the top 5 committers, extensions and repositories by net code change for the trailing 7 days. If you click into the details for a repository you'll see:

Which is simply a list of the files in the repository, their size, their owner (by majority blame), and their language. If you saw a file in this list that you didn't want to monitor, you can simply click ignore and it will be added to the ignore list in the settings (this can always be undone in the settings tab).

In the future I plan to add in both a multi-repository consolidated review of file details, and more granular file-level stats (file change history, file cumulative blame, etc).

So check out the repo, try it out, open issues if you run into problems, and send me a pull request if you'd like to contribute.

https://github.com/wdm0006/gitnoc