Appearance
Permissions and Collaboration
IrysGit provides a blockchain-based permission system that allows repository owners to control who can contribute to their projects. This guide explains how permissions work and how to manage collaborators.
Permission Model
Repository Ownership
- Owner: The wallet address that created the repository
- Immutable: Repository ownership cannot be transferred
- Full Control: Owners can add/remove contributors and manage all aspects
Contributor System
- Contributor List: Stored on-chain as mutable data
- Permissioned Access: Only contributors can push changes
- Revocable: Owners can remove contributors at any time
Managing Contributors
Adding Contributors
Repository owners can add contributors using their Solana wallet addresses:
bash
# Add a contributor
igit add-contributor 9xH8K2n...DeF
# Add multiple contributors
igit add-contributor 9xH8K2n...DeF
igit add-contributor 5pQ7L3m...GhIRequirements:
- Must be repository owner
- Valid Solana wallet address (base58 encoded)
- Contributor cannot already exist
Removing Contributors
bash
# Remove a contributor
igit remove-contributor 9xH8K2n...DeF
# Remove multiple contributors
igit remove-contributor 9xH8K2n...DeF
igit remove-contributor 5pQ7L3m...GhIRequirements:
- Must be repository owner
- Contributor must exist in the list
Listing Contributors
bash
# List all contributors
igit list-contributorsOutput Example:
Contributors for MyProject:
👑 7eYZ9K8s...AbC (owner) - Added: 2024-01-15 10:30:22
👤 9xH8K2n...DeF (contributor) - Added: 2024-01-15 11:45:33
👤 5pQ7L3m...GhI (contributor) - Added: 2024-01-15 14:20:11Collaboration Workflows
Team Development Workflow
Repository Owner:
bash# Create repository igit init "TeamProject" igit push # Add team members igit add-contributor DEVELOPER_1_ADDRESS igit add-contributor DEVELOPER_2_ADDRESSTeam Members:
bash# Clone repository igit clone githirys.xyz/OWNER_ADDRESS/TeamProject # Create feature branch igit checkout -b feature/new-feature # Make changes and push igit push feature/new-feature
Open Source Workflow
Maintainer:
bash# Create public repository igit init "OpenSourceProject" igit push # Add trusted contributors igit add-contributor TRUSTED_CONTRIBUTOR_1 igit add-contributor TRUSTED_CONTRIBUTOR_2Contributors:
bash# Clone and contribute igit clone githirys.xyz/MAINTAINER/OpenSourceProject # Work on features igit checkout -b feature/improvement # ... make changes ... igit push feature/improvement
Code Review Process
Since IrysGit is decentralized, traditional pull request workflows are different:
- Branch-based Review:bash
# Contributor creates feature branch igit checkout -b feature/authentication igit push feature/authentication # Team reviews by pulling the branch igit pull TeamProject feature/authentication # After approval, merge to main igit checkout main igit merge feature/authentication igit push main
Permission Security
On-Chain Storage
- Contributor lists are stored on Irys as mutable data
- Only repository owners can modify contributor lists
- All changes are timestamped and verifiable
Access Control
- Push operations verify contributor permissions
- Verification happens before upload to prevent unauthorized changes
- Failed permission checks are logged
Audit Trail
Every permission change is recorded:
- Transaction ID for each change
- Timestamp of modification
- Wallet address of the modifier (always the owner)
Best Practices
For Repository Owners
Careful Contributor Selection:
bash# Only add trusted contributors igit add-contributor TRUSTED_WALLET_ADDRESSRegular Audits:
bash# Regularly review contributor lists igit list-contributorsRemove Inactive Contributors:
bash# Remove contributors who no longer need access igit remove-contributor FORMER_CONTRIBUTOR
For Team Management
Role-Based Access:
- Different repositories for different access levels
- Separate repositories for production vs. development
Time-Limited Access:
- Add contributors for specific projects
- Remove access when projects complete
Documentation:
- Keep track of who has access to what
- Document reasons for contributor additions/removals
Advanced Permission Scenarios
Multi-Repository Management
bash
# Add contributor to multiple repositories
cd project-frontend
igit add-contributor DEVELOPER_ADDRESS
cd ../project-backend
igit add-contributor DEVELOPER_ADDRESS
cd ../project-docs
igit add-contributor DEVELOPER_ADDRESSTemporary Access
bash
# Add contributor for specific work
igit add-contributor CONTRACTOR_ADDRESS
# Remove after work is complete
igit remove-contributor CONTRACTOR_ADDRESSEmergency Access Revocation
bash
# Immediately revoke access if needed
igit remove-contributor COMPROMISED_ADDRESS
# Verify removal
igit list-contributorsTroubleshooting Permissions
Common Permission Errors
Error: Permission denied
bash
# Check if you're a contributor
igit list-contributors
# If not, contact repository ownerError: Contributor already exists
bash
# Check current contributors
igit list-contributors
# Remove and re-add if needed
igit remove-contributor ADDRESS
igit add-contributor ADDRESSError: Invalid wallet address
bash
# Ensure address is valid base58 Solana address
# Should be 43-44 characters longPermission Verification
bash
# Check your current permissions
igit repo-status
# Verify contributor list
igit list-contributorsMigration and Ownership
Repository Migration
Since ownership is immutable, you cannot transfer repository ownership. Instead:
Create New Repository:
bash# New owner creates repository igit init "MigratedProject" # Add original owner as contributor igit add-contributor ORIGINAL_OWNER_ADDRESSClone and Re-upload:
bash# Clone original repository igit clone githirys.xyz/ORIGINAL_OWNER/Project # Initialize new repository igit init "Project" igit push
Backup Strategy
- Always maintain local copies of important repositories
- Document contributor lists externally
- Keep private keys secure and backed up
Future Enhancements
The permission system may be enhanced with:
- Role-based permissions (read, write, admin)
- Time-based access controls
- Multi-signature requirements
- Integration with other identity systems
