Overview
A core philosophy of Upsun is Infrastructure as Code, which relies heavily on a Version Control System (VCS) to manage application configuration and deployment logic. Currently, Upsun is built natively on Git.
While Git is the only natively supported version control system, you can still use other systems (like SVN or Mercurial) by utilizing them as a "upstream" source and mirroring changes to an Upsun Git repository.
1. Primary Support: Git
Upsun uses Git not just for code storage, but as the primary trigger for its deployment pipeline. Every time you git push, Upsun initiates a build and deploy cycle.
Native Git Integrations
Upsun offers deep, native integrations with the most popular Git hosting providers. These integrations allow for automated environment creation when you open a Pull Request or create a new branch.
| Provider | Integration Type | Key Features |
|---|---|---|
| GitHub | GitHub App / Webhooks | Automated PR environments, commit status checks. |
| GitLab | Native Integration | Syncing branches, merge request environments. |
| Bitbucket | Native Integration | Pipeline syncing, environment management via Bitbucket UI. |
2. Using SVN, Mercurial, or Other VCS
Upsun does not natively support Subversion (SVN), Mercurial (hg), or Perforce. If your team uses these tools, you can still deploy to Upsun by following a "Mirroring" workflow.
The Mirroring Workflow
To use a non-Git VCS with Upsun, you must maintain a Git "mirror" of your repository.
Develop in your preferred VCS (e.g., SVN).
Convert/Sync your changes into a local Git repository using tools like
git-svnorhg-git.Push the Git repository to Upsun to trigger the deployment.
3. Why Git?
Upsun's unique Branching & Cloning feature is built on the internal mechanics of Git. When you branch your code, Upsun:
Clones your Git history.
Clones your production data (databases, files).
Provisions an identical infrastructure environment.
This instant environment cloning is only possible due to the distributed and snapshot-based nature of Git.
4. Git Submodules
If your project depends on other repositories, Upsun fully supports Git Submodules. During the build process, Upsun will automatically attempt to initialize and update submodules if they are defined in your .gitmodules file.
Note: For private submodules, you must provide a Project SSH Key to the external repository so Upsun has permission to clone the code.
Summary Table: VCS Support at a Glance
| Feature | Supported? | Notes |
|---|---|---|
| Git | Yes (Native) | The foundation of all Upsun projects. |
| SVN | No | Requires Git-bridge or mirroring. |
| Mercurial | No | Requires Git-bridge or mirroring. |
| GitHub/GitLab/Bitbucket | Yes | Supported via external source integrations. |
Comments
Please sign in to leave a comment.