Analyze git commit activity across multiple repositories with weekly grouping, Norwegian week numbers, calendar integration with persistent token caching, HTML export with interactive agenda view. v3.0.0: Enhanced visual design with automatic repo color coding, improved typography hierarchy, and modern CSS.
$ dotnet add package GiTimeA .NET global tool that analyzes git repositories to summarize your commit activity with weekly grouping, Norwegian ISO 8601 week numbering, and Microsoft Teams/Outlook calendar integration.
# Install globally
dotnet tool install --global GiTime
# Or run without installing
dnx gitime
git clone https://github.com/CRidge/gitime
cd gitime
dotnet pack -c Release
dotnet tool install --global GiTime --add-source ./GiTime/bin/Release
dotnet tool update --global GiTime
dotnet tool uninstall --global GiTime
Latest: Beautiful HTML reports with automatic repo color coding, improved typography, and modern visual hierarchy.
Previous: Comprehensive testing infrastructure with 100 unit tests, modern .NET 10 architecture, and production-ready quality.
-v or --verbose. or .\myproject--htmlOn first run, GiTime creates a configuration file at:
%APPDATA%\.gitime\config.json~/.gitime/config.jsonYour git user email is auto-detected from git config user.email.
Add repositories using absolute or relative paths:
# Absolute path
gitime --add-repo C:\repos\my-project
# Relative path
cd C:\repos
gitime --add-repo .\my-project
# Current directory
cd C:\repos\my-project
gitime --add-repo .
All paths are converted to absolute paths and stored in the configuration.
gitime --list-repos
gitime --show-config
gitime
Standard Output - Weekly grouping with daily summaries:
Analyzing commits from 1/1/26 to 31/1/26
Author(s): your.email@example.com
Week 4 (20/1/26 - 26/1/26)
┌───────────┬─────────────────┬─────────┬───────┐
│ Day │ Repository │ Commits │ Lines │
├───────────┼─────────────────┼─────────┼───────┤
│ Monday │ project-api │ 10 │ 1176 │
│ Tuesday │ project-api │ 8 │ 841 │
│ │ project-infra │ 2 │ 180 │
│ Wednesday │ project-web │ 3 │ 8 │
│ │ project-api │ 4 │ 750 │
│ Thursday │ project-api │ 7 │ 276 │
│ │ project-mobile │ 9 │ 1343 │
│ Friday │ project-api │ 4 │ 90 │
│ │ project-mobile │ 6 │ 167 │
│ TOTAL │ │ 53 │ 4831 │
└───────────┴─────────────────┴─────────┴───────┘
OVERALL TOTAL: 53 commits, 4831 lines changed
gitime --from 2026-01-01 --to 2026-01-15
gitime --verbose
# or
gitime -v --from 2026-01-20 --to 2026-01-25
Verbose Output - Includes individual commit details:
Week 4 (20/1/26 - 26/1/26)
┌───────────┬──────────────────────────────────────────────────────────┬─────────┬───────┐
│ Day │ Repository / Commit │ Commits │ Lines │
├───────────┼──────────────────────────────────────────────────────────┼─────────┼───────┤
│ Monday │ project-api │ 10 │ 1176 │
│ │ Fix authentication bug (a1b2c3d) │ 1 │ 120 │
│ │ Add new feature endpoint (e4f5g6h) │ 1 │ 456 │
│ │ Update dependencies (i7j8k9l) │ 1 │ 89 │
│ │ Refactor user service (m0n1o2p) │ 1 │ 234 │
│ │ Add unit tests (q3r4s5t) │ 1 │ 177 │
│ │ ... (5 more commits shown) │ 5 │ 100 │
│ Tuesday │ project-api │ 8 │ 841 │
│ │ Update logging (u6v7w8x) │ 1 │ 234 │
│ │ ... (7 more commits shown) │ 7 │ 607 │
│ TOTAL │ │ 18 │ 2017 │
└───────────┴──────────────────────────────────────────────────────────┴─────────┴───────┘
Notes:
Remove repositories using absolute or relative paths:
gitime --remove-repo C:\repos\my-project
# or
gitime --remove-repo .\my-project
The configuration file is automatically created in your user profile:
%APPDATA%\.gitime\config.json (typically C:\Users\YourName\AppData\Roaming\.gitime\config.json)~/.gitime/config.jsonExample configuration:
{
"Repositories": [
"C:\\repos\\project1",
"C:\\repos\\project2"
],
"AuthorEmails": [
"your.email@example.com",
"another.email@example.com"
],
"DefaultLookbackDays": 30,
"AzureTenantId": "your-tenant-id",
"AzureClientId": "your-client-id"
}
You can manually edit this file to:
GiTime can show your Microsoft Teams/Outlook meetings alongside your commits!
AzureTenantId and AzureClientId to your config.jsonNon-verbose:
Week 4 (20/1/26 - 23/1/26)
┌───────────┬─────────────────┬─────────┬────────┐
│ Day │ Repository │ Commits │ Lines │
├───────────┼─────────────────┼─────────┼────────┤
│ Tuesday │ [Meeting] │ 5 │ 3h 45m │
│ │ project-api │ 8 │ 841 │
│ │ project-infra │ 2 │ 180 │
Verbose:
Week 4 (20/1/26 - 23/1/26)
┌────────┬────────────────────────────────────────┬─────────┬────────┐
│ Time │ Repository / Commit │ Commits │ Lines │
├────────┼────────────────────────────────────────┼─────────┼────────┤
│ Tuesday│ [Meeting] │ 5 │ 3h 45m │
│ 09:00 │ Daily standup │ │ 15m │
│ 10:30 │ Sprint planning │ │ 2h │
│ 13:00 │ Client review │ │ 1h │
│ │ project-api │ 8 │ 841 │
│ 12:58 │ Fix authentication bug │ 177d2d5 │ 18 │
Note: Calendar integration is optional. If not configured, GiTime works normally showing only git commits.
See TESTING.md and TEST_ORGANIZATION.md for comprehensive testing documentation.
.\run-visual-tests.ps1 to executeSee VISUAL_TESTING.md for setup and usage guide.
.\run-benchmarks.ps1See BENCHMARKS.md for detailed benchmarking guide.
For detailed setup instructions, see CALENDAR_SETUP.md.
| Command | Description |
|---|---|
gitime | Analyze commits for last calendar month (default) |
gitime --verbose or -v | Show individual commit details |
gitime --add-repo <path> | Add a repository to the configuration |
gitime --remove-repo <path> | Remove a repository from the configuration |
gitime --list-repos | List all configured repositories |
gitime --show-config | Show current configuration details |
gitime --from <date> --to <date> | Analyze specific date range (YYYY-MM-DD) |
gitime --help | Show help message |
GiTime uses ISO 8601 week numbering (Norwegian standard):
cd GiTime
dotnet build
dotnet run -- --help
# Unit tests (66 tests)
dotnet test GiTime.Tests
# Integration tests (28 tests)
dotnet test GiTime.IntegrationTests
# Visual regression tests (6 tests)
.\run-visual-tests.ps1
# Performance benchmarks
.\run-benchmarks.ps1
GiTime/
├── GiTime.csproj (Tool package configuration)
├── Program.cs (Main CLI logic)
├── Models/
│ ├── GiTimeConfig.cs (Configuration model)
│ ├── DailyRepoSummary.cs (Daily summary model)
│ ├── WeeklySummary.cs (Weekly grouping model)
│ └── CommitDetail.cs (Individual commit details)
├── Services/
│ ├── ConfigService.cs (JSON config management)
│ ├── GitAnalysisService.cs (LibGit2Sharp integration)
│ ├── CalendarService.cs (Microsoft Graph integration)
│ └── Html/
│ ├── HtmlReportGenerator.cs
│ ├── CssGenerator.cs
│ └── JavaScriptGenerator.cs
└── Commands/
└── ConfigCommands.cs (Repository management commands)
GiTime.Tests/ (66 unit tests)
GiTime.IntegrationTests/ (28 integration tests)
GiTime.VisualTests/ (6 visual regression tests)
GiTime.Benchmarks/ (Performance benchmarks)
MIT License - feel free to use and modify as needed.