Git-ripper
Why Git-ripper?
Have you ever needed just a single component from a massive repository? Or wanted to reference a specific configuration directory without downloading gigabytes of code? Git-ripper solves this problem by letting you extract and download only the folders you need, saving bandwidth, time, and disk space.
Features
- Selective Downloads: Fetch specific folders instead of entire repositories
- Directory Structure: Preserves complete folder structure
- Custom Output: Specify your preferred output directory
- Branch Support: Works with any branch, not just the default one
- Archive Export: Create ZIP or TAR archives of downloaded content
- Simple Interface: Clean, intuitive command-line experience
- Lightweight: Minimal dependencies and fast execution
- No Authentication: Works with public repositories without requiring credentials
Installation
Global Installation (Recommended)
npm install -g git-ripper
This installs Git-ripper as a global command-line tool accessible from anywhere in your terminal.
On-demand Usage
npx git-ripper <github-folder-url>
Run Git-ripper directly without installation using npx
.
Usage
Basic Command
git-ripper https://github.com/username/repository/tree/branch/folder
With Custom Output Directory
git-ripper https://github.com/username/repository/tree/branch/folder -o ./my-output-folder
Creating ZIP Archive
git-ripper https://github.com/username/repository/tree/branch/folder --zip
Creating TAR Archive with Custom Name
git-ripper https://github.com/username/repository/tree/branch/folder --tar="my-archive.tar"
Command Line Options
Option | Description | Default |
---|---|---|
-o, --output <directory> |
Specify output directory | Current directory |
--zip [filename] |
Create ZIP archive of downloaded content | - |
--tar [filename] |
Create TAR archive of downloaded content | - |
--compression-level <level> |
Set compression level (1-9) | 6 |
-V, --version |
Show version number | - |
-h, --help |
Show help | - |
Examples
Extract a Component Library
# Download React DOM package
git-ripper https://github.com/facebook/react/tree/main/packages/react-dom
Get Configuration Files
# Extract VS Code build configuration
git-ripper https://github.com/microsoft/vscode/tree/main/build -o ./vscode-build-config
Download Documentation
# Get Node.js documentation
git-ripper https://github.com/nodejs/node/tree/main/doc -o ./node-docs
Copy UI Templates
# Extract Tailwind components
git-ripper https://github.com/tailwindlabs/tailwindcss/tree/master/src/components -o ./tailwind-components
Download and Create Archive
# Download React DOM package and create a ZIP archive
git-ripper https://github.com/facebook/react/tree/main/packages/react-dom --zip
# Extract VS Code build configuration with maximum compression
git-ripper https://github.com/microsoft/vscode/tree/main/build --tar --compression-level=9
How It Works
Git-ripper operates in four stages:
- URL Parsing: Extracts repository owner, name, branch, and target folder path
- API Request: Uses GitHub's API to fetch the folder structure
- Content Download: Retrieves each file individually while maintaining directory structure
- Local Storage or Archiving: Saves files to your specified output directory or creates an archive
Configuration
Git-ripper works out of the box without configuration. For rate-limited GitHub API usage, authentication support is under development.
Troubleshooting
Common Issues
Rate Limit Exceeded
Error: Request failed with status code 403
Solution: GitHub limits unauthenticated API requests. Wait a few minutes and try again.
Invalid URL Format
Error: Invalid GitHub URL format
Solution: Ensure your URL follows the pattern: https://github.com/owner/repo/tree/branch/folder
Folder Not Found
Error: Path not found in repository
Solution: Verify the folder path exists in the specified branch and repository.
Contributing
Contributions make the open-source community an amazing place to learn, inspire, and create. Any contributions to Git-ripper are greatly appreciated.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
See the open issues for a list of proposed features and known issues.
Roadmap
- [x] Add archive export options (ZIP/TAR)
- [ ] Add GitHub token authentication
- [ ] Support for GitLab and Bitbucket repositories
- [ ] Download from specific commits or tags
- [ ] Dry run mode
- [ ] File filtering options
- [ ] CLI interactive mode
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- GitHub API for making this tool possible
- Everyone who has provided feedback and suggestions
Made with ❤️ by sairajB
If you find this tool useful, consider sponsoring its development