Files
ProxmoxVE/docs/contribution/FORK_SETUP.md
defiQUG 35b5957ad1
Some checks failed
Update GitHub Versions (New) / update-github-versions (push) Has been cancelled
Crawl Versions from newreleases.io / crawl-versions (push) Has been cancelled
Stale PR Management / stale-prs (push) Has been cancelled
Lock closed issues / lock (push) Has been cancelled
Build and Publish Docker Image / build (push) Has been cancelled
Create Daily Release / create-daily-release (push) Has been cancelled
Create Changelog Pull Request / update-changelog-pull-request (push) Has been cancelled
Close Discussion on PR Merge / close-discussion (push) Has been cancelled
Sync to Gitea / sync (push) Has been cancelled
Archive Old Changelog Entries / archive-changelog (push) Has been cancelled
Check Node.js Version Drift / check-node-versions (push) Has been cancelled
Merge origin/main: resolve conflicts in FORK_SETUP.md, README.md, frontend/package.json
Made-with: Cursor
2026-03-02 12:06:17 -08:00

232 lines
5.3 KiB
Markdown

# 🍴 Fork Setup Guide
**Just forked ProxmoxVE? Run this first!**
## Quick Start
```bash
# Clone your fork
git clone https://github.com/YOUR_USERNAME/ProxmoxVE.git
cd ProxmoxVE
# Run setup script (auto-detects your username from git)
bash docs/contribution/setup-fork.sh --full
```
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)
### Why Updating Curl Links Matters
Your scripts contain `curl` commands that download dependencies from GitHub (build.func, tools.func, etc.):
```bash
# 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!
```bash
# 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
### Auto-Detect (Recommended)
```bash
bash docs/contribution/setup-fork.sh --full
```
Automatically reads your GitHub username from `git remote origin url`
### Specify Username
```bash
bash docs/contribution/setup-fork.sh --full john
```
Updates links to `github.com/john/ProxmoxVE`
### Custom Repository Name
```bash
bash docs/contribution/setup-fork.sh --full john my-fork
```
Updates links to `github.com/john/my-fork`
---
## What Gets Updated?
The script updates hardcoded links in these areas when using `--full`:
- `ct/`, `install/`, `vm/` scripts
- `misc/` function libraries
- `docs/` (including `docs/contribution/`)
- Code examples in documentation
---
## After Setup
1. **Review changes**
```bash
git diff docs/
```
2. **Read git workflow tips**
```bash
cat .git-setup-info
```
3. **Start contributing**
```bash
git checkout -b feature/my-app
# Make your changes...
git commit -m "feat: add my awesome app"
```
4. **Follow the guide**
```bash
cat docs/contribution/GUIDE.md
```
---
## Common Workflows
### Keep Your Fork Updated
```bash
# 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
```bash
git checkout -b feature/docker-improvements
# Make changes...
git push origin feature/docker-improvements
# Then create PR on GitHub
```
### Sync Before Contributing
```bash
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"
```bash
# Make sure you cloned the repo first
git clone https://github.com/YOUR_USERNAME/ProxmoxVE.git
cd ProxmoxVE
bash docs/contribution/setup-fork.sh --full
```
### "Could not auto-detect GitHub username"
```bash
# 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 docs/contribution/setup-fork.sh --full
```
### "Permission denied"
```bash
# Make script executable
chmod +x docs/contribution/setup-fork.sh
bash docs/contribution/setup-fork.sh --full
```
### Reverted Changes by Accident?
```bash
# Backups are created automatically
git checkout docs/*.backup
# Or just re-run setup-fork.sh
bash docs/contribution/setup-fork.sh --full
```
---
## Next Steps
1. ✅ Run `bash docs/contribution/setup-fork.sh --full`
2. 📖 Read [docs/contribution/GUIDE.md](GUIDE.md)
3. 🍴 Choose your contribution path:
- **Containers** → [docs/ct/README.md](../ct/README.md)
- **Installation** → [docs/install/README.md](../install/README.md)
- **VMs** → [docs/vm/README.md](../vm/README.md)
- **Tools** → [docs/tools/README.md](../tools/README.md)
4. 💻 Create your feature branch and contribute!
---
## Questions?
- **Fork Setup Issues?** → See [Troubleshooting](#troubleshooting) above
- **How to Contribute?** → [docs/contribution/GUIDE.md](GUIDE.md)
- **Git Workflows?** → `cat .git-setup-info`
- **Project Structure?** → [docs/README.md](../README.md)
---
## Happy Contributing! 🚀