Streamline Your Development Workflow with Project Man: The Ultimate Git Repository Manager
Developers often spend valuable time searching for projects across scattered directories
The Universal Challenge: Managing Multiple Code Repositories
Every developer encounters these frustrating scenarios:
-
Searching through ~/Desktop
,~/Downloads
, and~/projects
to locate a specific repository -
Struggling to recall exact project names (“Was it awesome-tool
orawesome_tool
?”) -
Discovering multiple copies of the same project in different locations -
Manually updating repositories one by one
This organizational chaos consumes valuable development time. As projects multiply across different platforms like GitHub, GitLab, and Bitbucket, repository management becomes increasingly complex. Project Man (p
) solves these challenges through intelligent organization and lightning-fast navigation.
Introducing Project Man: Your Repository Management Solution
Project Man (p
) is a Rust-based command-line tool that transforms repository management with a simple principle: organize by source, navigate by memory. This approach creates a consistent structure:
~/workspace/
├── github.com/rust-lang/rust/ # Clear origin identification
├── github.com/microsoft/vscode/ # No naming conflicts
└── gitlab.com/your-company/api/ # Multiple hosts unified
Navigate instantly without remembering exact paths:
p go rust # → ~/workspace/github.com/rust-lang/rust/
p go vs # → ~/workspace/github.com/microsoft/vscode/
p go api # → ~/workspace/gitlab.com/your-company/api/
Core Capabilities and Workflow
Initialize Your Organized Workspace
p init ~/workspace
This command creates:
-
Global configuration ( ~/.config/project-man/config.toml
) -
Workspace registry ( ~/workspace/project-man.yml
) -
Default directory structure
Add Repositories from Any Source
p add rust-lang/rust # GitHub shorthand
p add https://github.com/microsoft/vscode # HTTPS URL
p add git@gitlab.com:company/api # SSH format
Project Man automatically:
-
Parses repository identifiers -
Creates appropriate directory paths -
Clones repositories using libgit2 -
Updates the workspace registry -
Navigates to the new repository
Intelligent Navigation with Fuzzy Search
p go rust # Finds all repositories containing "rust"
The search system prioritizes:
-
Exact name matches -
Fuzzy pattern matches -
Path component matches -
Tag-based matches
Comprehensive Repository Operations
Synchronize multiple repositories:
p sync # Updates all repositories
p sync rust # Updates repositories matching "rust"
Search across projects:
p grep "TODO" # Searches all repositories
p grep "async" rust # Searches Rust repositories
View repository status:
p list
Displays:
-
Repository names and paths -
Last update timestamps -
Status indicators (clean, dirty, ahead/behind)
Technical Architecture
Core System Components
┌───────────────────────────────────┐
│ CLI Interface (p) │
├───────────────────────────────────┤
│ Command Parser │ Config Manager │
├───────────────────────────────────┤
│ Fuzzy Search │ Git Operations │
├───────────────────────────────────┤
│ File System │ Shell Integration│
└───────────────────────────────────┘
Structured Repository Organization
Project Man creates predictable paths:
workspace/
├── github.com/
│ ├── rust-lang/
│ │ └── rust/
│ ├── user/
│ │ └── project/
├── gitlab.com/
│ └── user/
│ └── project/
└── project-man.yml
This hierarchy prevents naming conflicts while maintaining clear origin information.
Installation Guide
Quick Installation Method
curl -fsSL https://raw.githubusercontent.com/lockelee/project-man/main/scripts/quick-install.sh | bash
Manual Installation Process
-
Download the appropriate package from the Releases page -
Extract and install:
tar -xzf project-man-*.tar.gz
cd project-man-*
./install.sh
Source Compilation Option
git clone https://github.com/lockelee/project-man.git
cd project-man
cargo build --release
./install.sh
Project Man’s intuitive commands streamline repository management
Configuration Management
Global Settings
Location: ~/.config/project-man/config.toml
[workspace]
path = "/Users/john/dev-projects"
[git]
default_host = "github.com"
default_protocol = "ssh" # or "https"
[search]
fuzzy_threshold = 0.6
max_results = 10
[ui]
use_colors = true
confirm_destructive_actions = true
Workspace Registry
Location: ~/workspace/project-man.yml
repositories:
tensorflow/tensorflow:
path: "github.com/tensorflow/tensorflow"
url: "https://github.com/tensorflow/tensorflow.git"
added_at: "2024-01-15T10:35:00Z"
tags: ["ml", "ai"]
Practical Implementation
Daily Workflow Example
# Initialize workspace
p init ~/dev-projects
# Add diverse repositories
p add tensorflow/tensorflow
p add https://gitlab.com/company/api-service.git
p add git@bitbucket.org:team/ui-kit.git
# Navigate efficiently
p go tensor # Enters TensorFlow project
p go api # Switches to API service
# Batch operations
p sync # Updates all repositories
p grep "TODO" --type py # Finds TODOs in Python files
# Migrate existing projects
p migrate ~/old-projects
Shell Integration
Add this to .bashrc
or .zshrc
for seamless navigation:
p() {
local cmd="$1"
if [ "$cmd" = "go" ] || [ "$cmd" = "add" ]; then
local result=$(command p "$@" --output-cd)
if [ $? -eq 0 ] && [ -n "$result" ]; then
cd "$result"
fi
else
command p "$@"
fi
}
Advanced Features
Repository Tagging
Organize projects with custom tags:
repositories:
NomenAK/SuperClaude:
tags: ["ai", "tools"]
Navigate by tag:
p go #ai # Jumps to AI-tagged repositories
Conflict Resolution
When adding existing repositories:
-
Detect path conflicts automatically -
Present resolution options (overwrite, skip, rename) -
Preserve original repository history
Error Handling System
The tool categorizes errors clearly:
-
Configuration Errors: Invalid settings or missing workspace -
Git Operation Failures: Network issues or authentication problems -
Repository Not Found: Unmatched search patterns -
Filesystem Issues: Permission constraints or space limitations
Performance Optimization
Intelligent Caching
-
Repository metadata caching for faster searches -
Lazy loading of repository status -
Optimized fuzzy search indexing
Concurrent Operations
// Simplified parallel sync implementation
pub fn sync_all(repos: Vec<Repository>) {
repos.par_iter().for_each(|repo| {
git_pull(repo.path);
});
}
Batch operations leverage parallel processing for efficiency.
Real-World Applications
Individual Developers
-
Maintain personal project collections -
Quickly switch between development contexts -
Keep dependencies current across projects
Development Teams
-
Standardize repository structures -
Share configuration templates -
Accelerate onboarding processes
Open Source Contributors
-
Manage multiple forked repositories -
Track upstream changes efficiently -
Switch between projects effortlessly
Project Man enhances collaboration through consistent repository structures
Technical Foundation
Rust-Powered Performance
-
Memory safety guarantees prevent common vulnerabilities -
Native execution delivers command-line speed -
Cross-platform compatibility (Linux/macOS/Windows)
Git Integration
-
Utilizes libgit2 bindings for robust operations -
Supports all major Git protocols (SSH, HTTPS) -
Implements comprehensive repository status checks
Search Algorithm
The fuzzy search:
-
Scores matches using advanced algorithms -
Weights recent and frequently accessed repositories -
Provides interactive selection for ambiguous queries
Conclusion: Transform Your Development Workflow
Project Man solves critical repository management challenges:
-
Standardized Organization: Consistent directory structures -
Instant Navigation: Fuzzy search eliminates manual searching -
Batch Operations: Efficient updates and searches across repositories -
Seamless Migration: Easy import of existing projects
Technical Advantages:
-
Rust-based performance and safety -
Comprehensive Git integration via libgit2 -
Cross-platform support -
Detailed error handling and logging
The tool’s active development promises future enhancements including team collaboration features and repository templates. Whether you’re an independent developer or part of a large team, Project Man reduces cognitive load and administrative overhead, letting you focus on creating exceptional software.
A well-organized workspace enhances productivity and reduces friction
Resources
-
Official Repository: github.com/lockelee/project-man -
Issue Tracking: github.com/lockelee/project-man/issues -
Contribution Guidelines: CONTRIBUTING.md -
Documentation: Comprehensive command references and configuration details