Quick Start
Welcome to Pogo! This guide will walk you through the basics of using Pogo for version control.
Watch the intro video
Section titled “Watch the intro video”Install client
Section titled “Install client”The recommended way to install Pogo is with Homebrew. Prebuilt binaries are available for macOS and Linux (both x64 and arm64).
brew install --cask pogo-vcs/tap/pogoFor other installation methods, see the Installation Guide.
Set up a Server
Section titled “Set up a Server”The easiest way to get your own Pogo server is by using Docker. A prebuilt image is available at ghcr.io/pogo-vcs/pogo:alpine which runs on x64 and arm64 architectures with Linux kernals.
On the first run, Pogo server will create a Root user with one random personal access token and print it to stdout. Use this token to log in to the server. After the first run, the token will never be shown again.
The port can be confugured using the PORT environment variable. The default is 8080.
Make sure you add a reverse proxy with SSL certificates in front of the Pogo server if you intend to make it publicly accessible.
Your First Repository
Section titled “Your First Repository”1. Initialize a Repository
Section titled “1. Initialize a Repository”Navigate to your project directory and initialize a new Pogo repository:
cd my-projectpogo init --name my-project --server your-server.com:8080This creates a .pogo.yaml file that tracks your repository configuration.
2. Authenticate
Section titled “2. Authenticate”When prompted, enter your personal access token. This will be securely stored in your system keyring. To see your token, run:
pogo whoamiYou can remove your token by running:
pogo token remove --server your-server.com:80803. Describe Your Changes
Section titled “3. Describe Your Changes”A new repository starts with a single change with the description “init”. You can create a new change by running:
pogo newBefore writing any code, describe what you’re planning to do:
pogo describeThis will open a description form to write a conventional commit message. This helps you think through your changes and provides context for others.
You can also use the --message flag to provide a commit message directly:
pogo describe --message "feat: add initial project structure"4. Make Your Changes
Section titled “4. Make Your Changes”Now work on your files as you normally would:
echo "# My Project" > README.mdmkdir srcecho "console.log('Hello, Pogo!');" > src/index.js5. Push Your Changes
Section titled “5. Push Your Changes”Send your changes to the server:
pogo pushYou can push as often as you like - each push overwrites the current change until you create a new one.
You cannot overwrite a change that has children or is pointed to by a bookmark.
6. Set a Bookmark
Section titled “6. Set a Bookmark”Mark important versions with bookmarks:
pogo bookmark set mainThis sets the current change as the “main” bookmark. “main” is a special bookmark that represents the current development state. It is treated similar to the default branch in Git.
Understanding the Workflow
Section titled “Understanding the Workflow”Pogo’s workflow is designed to be simple and iterative:
- Describe First: Document your intentions before starting work
- Work and Push: Make changes and push frequently without worrying about “commits”
- Iterate: Update your description as your implementation evolves
- Finalize: Create a new change when you’re ready to move on
- Bookmark: Mark important milestones for easy reference
Viewing History
Section titled “Viewing History”Check your repository’s history with:
pogo logThis shows the relationship between changes, including parent-child relationships and bookmarks.
By default, log shows the last 10 changes. You can use the -n flag to specify a different number of changes to show.
Next Steps
Section titled “Next Steps”- Learn about core concepts changes and bookmarks
- Set up your own Pogo server
- Explore the CLI reference
- Understand conflict resolution
Getting Help
Section titled “Getting Help”- Check the CLI reference for detailed command documentation
- Report issues on GitHub
- Join the community discussions on GitHub