Welcome to git-devkit contributors! 👋
This guide explains the project structure and naming conventions to help you understand how to contribute effectively.
git-devkit is a comprehensive developer toolkit for Git advanced users. It's designed to provide a one-stop solution for Git workflows, best practices, and helpful tools.
Currently, git-devkit includes:
- git-multi-ssh - CLI tool for managing multiple Git SSH identities
Future additions may include other Git tools and utilities.
git-multi-ssh is the primary CLI tool within git-devkit. It helps developers manage multiple Git SSH identities on a single machine, preventing common mistakes like:
- Wrong email in commits
- SSH keys not working for an account
- Messy manual config files
| What? | Use This Name | Context |
|---|---|---|
| The project root folder | git-devkit | Repository, folder, project |
| The CLI command | git-multi-ssh | Command line, executable |
| The package name | git-devkit | package.json, npm |
| Documentation scope | git-devkit | Docs, guides, setup |
✅ Correct Usage:
- "Clone the git-devkit repository"
- "cd into the git-devkit folder"
- "Run: git-multi-ssh"
- "Contributing to git-devkit"
- "In the git-devkit project"
- "The git-multi-ssh tool provides..."
❌ Incorrect Usage:
- "Clone the git-multi-ssh repository" (it's git-devkit!)
- "cd into the git-multi-ssh folder" (it's git-devkit!)
- "The git-devkit tool provides..." (it's git-multi-ssh!)
git-devkit/
├── bin/
│ └── index.js ← git-multi-ssh CLI entry point
├── lib/
│ ├── utils.js ← Cross-platform utilities
│ ├── fileManager.js ← SSH/Git config management
│ └── generator.js ← Config generation
├── setup.js ← Universal setup script
├── package.json ← Project metadata
├── README.md ← Main documentation
├── START_HERE.md ← Quick start
├── QUICK_START.md ← Quick reference
├── PROJECT_STRUCTURE.md ← Project layout
├── CONTRIBUTORS_GUIDE.md ← This file
└── [other docs...]
Key Point: The root folder is always git-devkit, and it contains the git-multi-ssh tool.
Files you'll modify:
bin/index.js- CLI logiclib/utils.js- Utilitieslib/fileManager.js- Config managementlib/generator.js- Config generation
Commit message example:
feat: Add support for custom SSH key names in git-multi-ssh
fix: Improve error handling in git-multi-ssh SSH key generation
Files you'll modify:
- Documentation (
*.md) - Setup scripts (
setup.js,setup.sh, etc.) - Configuration (
package.json) - Project-level changes
Commit message example:
docs: Update git-devkit documentation for contributors
feat: Improve git-devkit setup process
chore: Update git-devkit dependencies
When adding new tools to the git-devkit toolkit:
git-devkit/
├── bin/
│ ├── index.js ← git-multi-ssh
│ └── git-new-tool.js ← New tool (future)
└── [existing structure...]
Commit message:
feat(git-devkit): Add new git-workflow-tool to the toolkit
<type>(<scope>): <subject>
<body>
<footer>
feat- New featurefix- Bug fixdocs- Documentationstyle- Code style (not functional)refactor- Code refactoringperf- Performance improvementtest- Adding/updating testschore- Build, dependencies, etc.
git-multi-ssh- The toolgit-devkit- The projectdocs- Documentationsetup- Setup processcross-platform- Cross-platform support
feat(git-multi-ssh): Add support for ed25519 keys
fix(git-multi-ssh): Resolve Windows path issues
docs(git-devkit): Add contributor's guide
chore(git-devkit): Update dependencies
refactor(git-multi-ssh): Simplify key generation logic
- ✅ Read this guide
- ✅ Read PROJECT_STRUCTURE.md
- ✅ Use correct naming (git-devkit vs git-multi-ssh)
- ✅ Update relevant documentation
- ✅ Test on multiple platforms (Windows, macOS, Linux)
- ✅ Follow commit message conventions
Use the format:
<type>(<scope>): <description>
Examples:
feat(git-multi-ssh): Add SSH key renewal support
fix(git-devkit): Improve cross-platform path handling
docs(git-devkit): Add Windows setup guide
Include:
- What - What does this PR do?
- Why - Why is this needed?
- How - How does it work?
- Testing - What did you test?
- Platforms - Which platforms did you test on?
Template:
## What
Adds support for [feature].
## Why
This is needed because [reason].
## How
- Modified [file]
- Updated [file]
- Added [functionality]
## Testing
- [x] Tested on macOS
- [x] Tested on Windows
- [x] Tested on Linux
- [x] Verified [specific functionality]
## Related
Closes #[issue number]git clone https://github.com/user/git-devkit.git
cd git-devkitnpm installnpm linkNow you can test git-multi-ssh locally:
git-multi-ssh# Verify syntax
node -c lib/fileManager.js
node -c bin/index.js
# Run the tool
git-multi-ssh
# Test setup
npm run setupBefore submitting a PR, verify:
- No syntax errors:
node -c <file>.js - Follows project style
- Proper error handling
- Clear comments for complex logic
- Works on macOS
- Works on Windows (PowerShell and Command Prompt)
- Works on Linux
- Uses cross-platform utilities where needed
- Updated relevant
.mdfiles - Clear commit messages
- Updated CHANGELOG.md if applicable
- Code comments for complex logic
- SSH key generation works
- Git config updates correctly
- SSH config updates correctly
- Error messages are helpful
- Setup process works
- Documentation is accurate
- Naming is consistent (git-devkit vs git-multi-ssh)
- Modify
bin/index.jsor lib files - Test:
npm link && git-multi-ssh - Update documentation if needed
- Commit:
feat(git-multi-ssh): Add feature - Submit PR
- Edit markdown files
- Check formatting:
cat <file>.md | less - Commit:
docs(git-devkit): Update documentation - Submit PR
- Create issue if not exists
- Fix the bug in appropriate file
- Test the fix:
git-multi-ssh - Commit:
fix(git-multi-ssh): Fix issue #123 - Reference issue in commit
- Create
bin/git-new-tool.js - Add to package.json
binsection - Update documentation
- Commit:
feat(git-devkit): Add git-new-tool - Update DOCUMENTATION_INDEX.md
- Read PROJECT_STRUCTURE.md
- Read README.md
- Read START_HERE.md
- Read CROSS_PLATFORM.md
- Check existing code comments
- Read lib files (they're well-documented)
- Open an issue for discussion
- Open an Issue - For bugs or feature requests
- Start a Discussion - For questions or ideas
- Read Docs - Most answers are in the documentation
- Check Code - The code is well-commented
| Item | Value |
|---|---|
| Project name | git-devkit |
| Tool name | git-multi-ssh |
| Root folder | git-devkit |
| Setup command | npm run setup |
| Run tool | git-multi-ssh |
| Link for dev | npm link |
| Commit scope | (git-devkit) or (git-multi-ssh) |
| Target audience | Git advanced users, contributors |
Thank you for contributing to git-devkit! 🚀