1.0.0 โข Published 11 months ago
@developerisnow/git-repositories-statistic-analyzer v1.0.0
Git Repositories Statistics Analyzer
A powerful Node.js tool for analyzing multiple Git repositories and generating comprehensive statistics. Perfect for developers and teams who need to track and analyze Git repositories at scale.
๐ Features
- ๐ Analyze multiple Git repositories in bulk
- ๐ System-wide repository scanning
- ๐ Detailed Git metrics and repository information
- ๐ CSV output with proper formatting
- ๐ฏ Username and empty repository filtering
- โก Asynchronous processing
- ๐ก๏ธ TypeScript support
- ๐ Comprehensive repository statistics
๐ฆ Installation
# Using npm
npm install -g @developerisnow/git-repositories-statistic-analyzer
# Using pnpm (recommended)
pnpm add -g @developerisnow/git-repositories-statistic-analyzer
# Using yarn
yarn global add @developerisnow/git-repositories-statistic-analyzer๐ฎ Command Line Usage
Basic Usage
# Analyze specific repositories
git-repositories-statistic-analyzer --folderPath=/path/to/repos --repoList=/path/to/repo_list.txt
# Scan all repositories in the system
git-repositories-statistic-analyzer --folderPath=all --repoList=all
# Filter repositories by username
git-repositories-statistic-analyzer --folderPath=all --repoList=all --filter "UsernamesUrlRepos:username1,username2"
# Find local repositories (no remote URLs)
git-repositories-statistic-analyzer --folderPath=all --repoList=all --filter "UsernamesUrlRepos:Empty"Options
--folderPath: Base directory containing Git repositories or "all" for system scan--repoList: Path to repository list file or "all" for automatic discovery--filter: Filter results (e.g., "UsernamesUrlRepos:user1,user2" or "UsernamesUrlRepos:Empty")
๐ป Programmatic Usage
import { GitAnalyzer, GitScanner } from '@developerisnow/git-repositories-statistic-analyzer';
async function analyzeRepositories() {
// Load ignore patterns
const ignorePatterns = await GitScanner.loadIgnorePatterns('.scanignore');
// Find repositories
const scanner = new GitScanner(ignorePatterns);
const repoPaths = await scanner.findGitRepos();
// Analyze each repository
const analyzer = new GitAnalyzer(process.cwd());
const results = [];
for (const repoPath of repoPaths) {
const stats = await analyzer.analyzeRepository(repoPath);
if (stats) {
results.push(stats);
}
}
return results;
}๐ Output Format
The tool generates a CSV file with the following columns:
| Column | Description |
|---|---|
| nameFolder | Repository folder name |
| usernamesUrlRepos | Usernames from remote URLs |
| gitFolderSize | Size of the .git folder (in MB) |
| dateLastCommit | Date of the most recent commit (YYYY-MM-DD) |
| messageLastCommit | Message of the last commit |
| amountTotalCommits | Total number of commits |
| ageRepo | Repository age in days |
| dateFirstCommit | Date of the first commit (YYYY-MM-DD) |
| urlsRepo | Repository remote URLs (cleaned format) |
| amountUncommitedFiles | Number of uncommitted files |
| hashLastCommit | Hash of the last commit |
| pathFolder | Full path to the repository |
See git_statistic.example.csv for an example output.
๐ ๏ธ Configuration
Repository List Format
Create a text file with one repository folder name per line:
repo1_folder
repo2_folderIgnore Patterns (.scanignore)
Create a .scanignore file to specify patterns to ignore:
**/node_modules/**
**/vendor/**
**/dist/**
# Add more patterns as needed๐งช Development
# Install dependencies
pnpm install
# Run tests
pnpm test
# Run tests with coverage
pnpm test:coverage
# Format code
pnpm format
# Lint code
pnpm lint
# Build the project
pnpm build
# Run in development mode
pnpm dev๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ค Author
developerisnow
- Github: @developerisnow
- npm: @developerisnow
โญ๏ธ Show your support
Give a โญ๏ธ if this project helped you!
1.0.0
11 months ago