|
|
3 weeks ago | |
|---|---|---|
| scripts | 3 weeks ago | |
| .gitignore | 3 weeks ago | |
| LICENSE | 3 weeks ago | |
| README.md | 3 weeks ago | |
| SYNC.md | 3 weeks ago | |
| package.json | 3 weeks ago | |
README.md
GitRepublic CLI
Command-line tools for GitRepublic: git wrapper with enhanced error messages, credential helper, commit signing hook, and API access.
Note: This CLI is part of the
gitrepublic-webmonorepo but can also be used and published independently. See SYNC.md for information about syncing to a separate repository.
Quick Start
# Install
npm install -g gitrepublic-cli
# Set your Nostr private key
export NOSTRGIT_SECRET_KEY="nsec1..."
# Setup (configures credential helper and commit hook)
gitrep-setup
# Use gitrepublic (or gitrep) for git operations
gitrep clone https://your-domain.com/api/git/npub1.../repo.git gitrepublic-web
gitrep push gitrepublic-web main
# Use gitrep for API commands too
gitrep push-all main # Push to all remotes
gitrep repos list # List repositories
gitrep publish repo-announcement myrepo
# Note: "gitrep" is a shorter alias for "gitrepublic" - both work the same way.
# We suggest using "gitrepublic-web" as the remote name instead of "origin"
# because "origin" is often already set to GitHub, GitLab, or other services.
Commands
gitrepublicorgitrep- Unified command for both git operations and API access- Git commands:
gitrep clone,gitrep push,gitrep pull, etc. - API commands:
gitrep push-all,gitrep repos list,gitrep publish, etc.
- Git commands:
gitrepublic-setuporgitrep-setup- Automatic setup scriptgitrepublic-uninstallorgitrep-uninstall- Remove all configuration
Note:
gitrep-apiandgitrepublic-apiare still available for backward compatibility but are now aliases togitrep/gitrepublic.
Run any command with --help or -h for detailed usage information.
Uninstall
# Remove all configuration
gitrep-uninstall
# See what would be removed (dry run)
gitrep-uninstall --dry-run
# Keep environment variables
gitrep-uninstall --keep-env
Features
- Git Wrapper: Enhanced error messages for GitRepublic operations
- Credential Helper: Automatic NIP-98 authentication
- Commit Signing: Automatically sign commits for GitRepublic repos
- API Access: Full command-line access to all GitRepublic APIs
Requirements
- Node.js 18+
- Git
- Nostr private key (nsec format or hex)
Commit Signing
The commit hook automatically signs all commits by default (GitHub, GitLab, GitRepublic, etc.). The signature is just text in the commit message and doesn't interfere with git operations.
To only sign GitRepublic repositories (skip GitHub/GitLab):
export GITREPUBLIC_SIGN_ONLY_GITREPUBLIC=true
To cancel commits if signing fails:
export GITREPUBLIC_CANCEL_ON_SIGN_FAIL=true
By default, the full event JSON is stored in nostr/commit-signatures.jsonl (JSON Lines format) for each signed commit. Events are organized by type in the nostr/ folder for easy searching.
To also include the full event JSON in the commit message (base64 encoded):
export GITREPUBLIC_INCLUDE_FULL_EVENT=true
To publish commit signature events to Nostr relays:
export GITREPUBLIC_PUBLISH_EVENT=true
export NOSTR_RELAYS="wss://relay1.com,wss://relay2.com" # Optional, has defaults
Documentation
For detailed documentation, run:
gitrep --helporgitrepublic --help- General help and git commandsgitrep push-all --help- Push to all remotesgitrep repos --help- Repository managementgitrep publish --help- Publish Nostr eventsgitrep-setup --helporgitrepublic-setup --help- Setup optionsgitrep-uninstall --helporgitrepublic-uninstall --help- Uninstall options
Links
- GitRepublic Web - Full web application
- NIP-98 Specification - HTTP Authentication
- Git Credential Helper Documentation
License
MIT