Files
ProxmoxVE/docs/contribution/FORK_SETUP.md
CanbiZ e72c7d8f7f Update contribution docs for improved workflow and clarity
Revised multiple documentation files to clarify the recommended development workflow: contributors must test scripts via curl from their GitHub fork (not local bash), use setup-fork.sh for URL rewriting, and submit only new files using cherry-pick. Expanded and modernized install and JSON metadata template guides, emphasizing use of helper functions, resource requirements, and the JSON generator tool. Added detailed step-by-step instructions, best practices, and updated examples throughout.
2026-01-18 18:18:52 +01:00

5.3 KiB

🍴 Fork Setup Guide

Just forked ProxmoxVE? Run this first!

Quick Start

# Clone your fork
git clone https://github.com/YOUR_USERNAME/ProxmoxVE.git
cd ProxmoxVE

# Run setup script (auto-detects your username from git)
bash setup-fork.sh

That's it!


What Does It Do?

The setup-fork.sh script automatically:

  1. Detects your GitHub username from git config
  2. Updates ALL hardcoded links to point to your fork:
    • Documentation links pointing to community-scripts/ProxmoxVE
    • Curl download URLs in scripts (e.g., curl ... github.com/community-scripts/ProxmoxVE/main/...)
  3. Creates .git-setup-info with your configuration details
  4. Backs up all modified files (*.backup for safety)

Your scripts contain curl commands that download dependencies from GitHub (build.func, tools.func, etc.):

# First line of ct/myapp.sh
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)

WITHOUT setup-fork.sh:

  • Script URLs still point to community-scripts/ProxmoxVE/main
  • If you test locally with bash ct/myapp.sh, you're testing local files, but the script's curl commands would download from upstream repo
  • Your modifications aren't actually being tested via the curl commands!

AFTER setup-fork.sh:

  • Script URLs are updated to YourUsername/ProxmoxVE/main
  • When you test via curl from GitHub: bash -c "$(curl ... YOUR_USERNAME/ProxmoxVE/main/ct/myapp.sh)", it downloads from your fork
  • The script's curl commands also point to your fork, so you're actually testing your changes!
  • ⏱️ Important: GitHub takes 10-30 seconds to recognize pushed files - wait before testing!
# Example: What setup-fork.sh changes

# BEFORE (points to upstream):
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)

# AFTER (points to your fork):
source <(curl -fsSL https://raw.githubusercontent.com/john/ProxmoxVE/main/misc/build.func)

Usage

bash setup-fork.sh

Automatically reads your GitHub username from git remote origin url

Specify Username

bash setup-fork.sh john

Updates links to github.com/john/ProxmoxVE

Custom Repository Name

bash setup-fork.sh john my-fork

Updates links to github.com/john/my-fork


What Gets Updated?

The script updates these documentation files:

  • docs/CONTRIBUTION_GUIDE.md (4 links)
  • docs/README.md (1 link)
  • docs/INDEX.md (3 links)
  • docs/EXIT_CODES.md (2 links)
  • docs/DEFAULTS_SYSTEM_GUIDE.md (2 links)
  • docs/api/README.md (1 link)
  • docs/APP-ct.md (1 link)
  • docs/APP-install.md (1 link)
  • docs/alpine-install.func.md (2 links)
  • docs/install.func.md (1 link)
  • And code examples in documentation

After Setup

  1. Review changes

    git diff docs/
    
  2. Read git workflow tips

    cat .git-setup-info
    
  3. Start contributing

    git checkout -b feature/my-app
    # Make your changes...
    git commit -m "feat: add my awesome app"
    
  4. Follow the guide

    cat docs/CONTRIBUTION_GUIDE.md
    

Common Workflows

Keep Your Fork Updated

# Add upstream if you haven't already
git remote add upstream https://github.com/community-scripts/ProxmoxVE.git

# Get latest from upstream
git fetch upstream
git rebase upstream/main
git push origin main

Create a Feature Branch

git checkout -b feature/docker-improvements
# Make changes...
git push origin feature/docker-improvements
# Then create PR on GitHub

Sync Before Contributing

git fetch upstream
git rebase upstream/main
git push -f origin main  # Update your fork's main
git checkout -b feature/my-feature

Troubleshooting

"Git is not installed" or "not a git repository"

# Make sure you cloned the repo first
git clone https://github.com/YOUR_USERNAME/ProxmoxVE.git
cd ProxmoxVE
bash setup-fork.sh

"Could not auto-detect GitHub username"

# Your git origin URL isn't set up correctly
git remote -v
# Should show your fork URL, not community-scripts

# Fix it:
git remote set-url origin https://github.com/YOUR_USERNAME/ProxmoxVE.git
bash setup-fork.sh

"Permission denied"

# Make script executable
chmod +x setup-fork.sh
bash setup-fork.sh

Reverted Changes by Accident?

# Backups are created automatically
git checkout docs/*.backup
# Or just re-run setup-fork.sh

Next Steps

  1. Run bash setup-fork.sh
  2. 📖 Read docs/CONTRIBUTION_GUIDE.md
  3. 🍴 Choose your contribution path:
  4. 💻 Create your feature branch and contribute!

Questions?


Happy Contributing! 🚀