UNPKG

@developerisnow/git-repositories-statistic-analyzer

Version:

A powerful tool for analyzing multiple Git repositories and generating comprehensive statistics

175 lines (124 loc) โ€ข 5.03 kB
# Git Repositories Statistics Analyzer [![npm version](https://badge.fury.io/js/%40developerisnow%2Fgit-repositories-statistic-analyzer.svg)](https://www.npmjs.com/package/@developerisnow/git-repositories-statistic-analyzer) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/) 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 ```bash # 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 ```bash # 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 ```typescript 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](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_folder ``` ### Ignore Patterns (.scanignore) Create a `.scanignore` file to specify patterns to ignore: ``` **/node_modules/** **/vendor/** **/dist/** # Add more patterns as needed ``` ## ๐Ÿงช Development ```bash # 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. 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/AmazingFeature`) 3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) 4. Push to the branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request ## ๐Ÿ“ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## ๐Ÿ‘ค Author **developerisnow** * Github: [@developerisnow](https://github.com/developerisnow) * npm: [@developerisnow](https://www.npmjs.com/~developerisnow) ## โญ๏ธ Show your support Give a โญ๏ธ if this project helped you!