Appearance
Collaboration Commands
This section covers all commands related to managing collaborators and permissions in IrysGit repositories.
igit add-contributor
Add a contributor to your repository (repository owner only).
Syntax
bash
igit add-contributor <wallet-address> [options]Parameters
wallet-address- Solana wallet address of the contributor (required)
Options
--message <msg>- Add a message describing the contributor--role <role>- Set contributor role (future feature)--force- Force add even if contributor exists
Examples
Add a contributor:
bash
igit add-contributor 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kLAdd contributor with message:
bash
igit add-contributor 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL --message "Frontend developer"Add multiple contributors:
bash
igit add-contributor 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL
igit add-contributor 5pQ7L3m8nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jKRequirements
- Must be repository owner
- Valid Solana wallet address (43-44 characters, base58 encoded)
- Contributor cannot already exist in the repository
Output
✅ Added contributor: 9xH8K2n...5kL
📝 Message: Frontend developer
🔗 Transaction ID: 8fGH3L9m2nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jKError Handling
- Invalid wallet address: Address must be valid base58 Solana address
- Permission denied: Only repository owner can add contributors
- Contributor exists: Cannot add existing contributor (use --force to override)
- Network error: Failed to update contributor list on Irys
igit remove-contributor
Remove a contributor from your repository (repository owner only).
Syntax
bash
igit remove-contributor <wallet-address> [options]Parameters
wallet-address- Solana wallet address of the contributor (required)
Options
--message <msg>- Add a message describing the removal reason--force- Force remove even if contributor doesn't exist
Examples
Remove a contributor:
bash
igit remove-contributor 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kLRemove contributor with reason:
bash
igit remove-contributor 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL --message "Project completed"Remove multiple contributors:
bash
igit remove-contributor 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL
igit remove-contributor 5pQ7L3m8nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jKRequirements
- Must be repository owner
- Contributor must exist in the repository
- Cannot remove repository owner
Output
✅ Removed contributor: 9xH8K2n...5kL
📝 Message: Project completed
🔗 Transaction ID: 8fGH3L9m2nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jKError Handling
- Permission denied: Only repository owner can remove contributors
- Contributor not found: Cannot remove non-existent contributor
- Cannot remove owner: Repository owner cannot be removed
- Network error: Failed to update contributor list on Irys
igit list-contributors
List all contributors for the current repository.
Syntax
bash
igit list-contributors [options]Options
--json- Output in JSON format--verbose- Show detailed information--sort <field>- Sort by field (name, added, role)
Examples
List contributors:
bash
igit list-contributorsVerbose output:
bash
igit list-contributors --verboseJSON output:
bash
igit list-contributors --jsonSort by date added:
bash
igit list-contributors --sort addedStandard Output
Contributors for MyProject:
👑 7eYZ9K8s...AbC (owner) - Added: 2024-01-15 10:30:22
👤 9xH8K2n...5kL (contributor) - Added: 2024-01-15 11:45:33
👤 5pQ7L3m...3jK (contributor) - Added: 2024-01-15 14:20:11
Total: 3 contributorsVerbose Output
Contributors for MyProject:
👑 Owner
Address: 7eYZ9K8s4mN3pQ2tX6vA1bC8dE9fG2hI5jK7lM0nO3pQ
Added: 2024-01-15 10:30:22 UTC
Role: owner
Status: active
👤 Contributor
Address: 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL
Added: 2024-01-15 11:45:33 UTC
Role: contributor
Status: active
Message: Frontend developer
👤 Contributor
Address: 5pQ7L3m8nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jK
Added: 2024-01-15 14:20:11 UTC
Role: contributor
Status: active
Message: Backend developer
Total: 3 contributors
Last updated: 2024-01-15 14:20:11 UTC
Transaction ID: 8fGH3L9m2nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jKJSON Output
json
{
"repository": "MyProject",
"owner": "7eYZ9K8s4mN3pQ2tX6vA1bC8dE9fG2hI5jK7lM0nO3pQ",
"contributors": [
{
"address": "7eYZ9K8s4mN3pQ2tX6vA1bC8dE9fG2hI5jK7lM0nO3pQ",
"role": "owner",
"added": "2024-01-15T10:30:22Z",
"status": "active"
},
{
"address": "9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL",
"role": "contributor",
"added": "2024-01-15T11:45:33Z",
"status": "active",
"message": "Frontend developer"
}
],
"total": 3,
"lastUpdated": "2024-01-15T14:20:11Z",
"transactionId": "8fGH3L9m2nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jK"
}Permission Verification
igit check-permissions
Check if a wallet address has permission to contribute to a repository.
Syntax
bash
igit check-permissions <wallet-address> [repository-url]Parameters
wallet-address- Wallet address to checkrepository-url- Repository URL (optional, defaults to current repository)
Examples
Check permissions for current repository:
bash
igit check-permissions 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kLCheck permissions for specific repository:
bash
igit check-permissions 9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL githirys.xyz/alice/MyProjectOutput
✅ Permission check for: 9xH8K2n...5kL
🏠 Repository: MyProject
👤 Role: contributor
✅ Can push: Yes
✅ Can pull: Yes
📅 Added: 2024-01-15 11:45:33 UTCCollaboration Workflows
Team Management
Setting up a team:
bash
# Initialize repository
igit init "TeamProject"
igit push
# Add team members
igit add-contributor DEVELOPER_1_WALLET --message "Lead developer"
igit add-contributor DEVELOPER_2_WALLET --message "Frontend developer"
igit add-contributor DEVELOPER_3_WALLET --message "Backend developer"
# Verify team setup
igit list-contributorsManaging team changes:
bash
# Add new team member
igit add-contributor NEW_DEVELOPER_WALLET --message "New team member"
# Remove former team member
igit remove-contributor FORMER_DEVELOPER_WALLET --message "Left the team"
# Update team status
igit list-contributorsAccess Auditing
Regular access review:
bash
# List all contributors
igit list-contributors --verbose
# Check specific permissions
igit check-permissions SPECIFIC_WALLET_ADDRESS
# Review recent changes
igit log --contributorsBulk Operations
Add multiple contributors:
bash
#!/bin/bash
CONTRIBUTORS=(
"9xH8K2n4oP5qR6sT2uV7wX8yZ9aB1cD2eF3gH4iJ5kL"
"5pQ7L3m8nO4pQ5rS1tU6vW7xY8zA9bC0dE1fG2hI3jK"
"3nM6J9k2lO5pQ8rS4tU7vW0xY3zA6bC9dE2fG5hI8jK"
)
for contributor in "${CONTRIBUTORS[@]}"; do
igit add-contributor "$contributor" --message "Team member"
doneRemove multiple contributors:
bash
#!/bin/bash
FORMER_CONTRIBUTORS=(
"old-contributor-1-wallet"
"old-contributor-2-wallet"
)
for contributor in "${FORMER_CONTRIBUTORS[@]}"; do
igit remove-contributor "$contributor" --message "Project completed"
doneSecurity and Best Practices
Access Control
Principle of least privilege:
bash
# Only add contributors who need access
igit add-contributor TRUSTED_DEVELOPER_WALLET
# Remove access when no longer needed
igit remove-contributor FORMER_CONTRIBUTOR_WALLETRegular audits:
bash
# Monthly access review
igit list-contributors --verbose > monthly-access-review.txt
# Check for unexpected contributors
igit list-contributors | grep -v "expected-contributor"Emergency Access Management
Revoke compromised access:
bash
# Immediately remove compromised contributor
igit remove-contributor COMPROMISED_WALLET --message "Security incident"
# Verify removal
igit list-contributorsEmergency access grant:
bash
# Grant temporary access for emergency
igit add-contributor EMERGENCY_RESPONDER_WALLET --message "Emergency access"
# Remove after emergency resolved
igit remove-contributor EMERGENCY_RESPONDER_WALLET --message "Emergency resolved"Integration with Other Commands
Repository Status
bash
# Check repository status including contributors
igit repo-status --verbosePush Verification
bash
# Verify permissions before pushing
igit check-permissions $(igit config user.wallet)
igit pushClone with Permission Check
bash
# Check if you can contribute after cloning
igit clone githirys.xyz/alice/MyProject
cd MyProject
igit check-permissions $(igit config user.wallet)Advanced Features
Contributor Roles (Future Feature)
bash
# Add contributor with specific role
igit add-contributor WALLET --role admin
igit add-contributor WALLET --role developer
igit add-contributor WALLET --role readonlyTime-based Access (Future Feature)
bash
# Add contributor with expiration
igit add-contributor WALLET --expires 2024-12-31
# List expiring contributors
igit list-contributors --expiringApproval Workflows (Future Feature)
bash
# Require approval for contributor addition
igit add-contributor WALLET --require-approval
# Approve pending contributor
igit approve-contributor WALLETError Codes
Collaboration commands use specific exit codes:
0- Success1- General error2- Permission denied3- Invalid wallet address4- Contributor not found5- Contributor already exists6- Network error7- Repository not found
