You already think in pipelines, approvals, and rollbacks. This article maps Git concepts directly to your infrastructure world — repos, pull requests, CI/CD, and how code gets from a developer's laptop to a production web server.
A Git repository (repo) is a version-controlled folder that contains all the source code, configuration, and history for a project. Every change ever made is recorded — who made it, when, and why. Nothing is lost, and anything can be rolled back.
Think of it the same way you think about a Cloud Template or an IaC definition in Aria Assembler. The repo is the source of truth. Nobody edits a running server directly — just like nobody should bypass the repo and hand-edit code on a live web server. The repo drives everything.
The three most common Git hosting platforms are GitHub, GitLab, and Azure DevOps (Repos). All three provide the same core Git functionality plus web-based UI, access controls, and CI/CD pipeline integrations.
This depends heavily on the company's architecture philosophy. There are two dominant strategies:
One large repository holds all code for all teams and services. Companies like Google and Meta operate this way. The advantage is easy code sharing and atomic changes across services. The trade-off is significant complexity at scale — specialized tooling is required to manage build times and access controls inside a single massive repo.
One repository per service, product, or team — the most common approach. A mid-size software company might have 20 to 200 repos. A large enterprise like Microsoft has tens of thousands. Each repo is independently deployable, has its own pipeline, and is owned by a specific team.
For a documentation-focused software company, a reasonable polyrepo layout might look like this:
| Repository | Purpose | Who Owns It |
|---|---|---|
vrodocs-frontend | Website UI — React, Next.js, or static site | Web / Frontend team |
vrodocs-api | Backend API and business logic | Backend / Platform team |
vrodocs-docs-content | Raw Markdown / MDX content files for articles | Content / Docs team |
vrodocs-infra | Terraform or Bicep IaC — cloud infrastructure definitions | Infrastructure team |
vrodocs-pipelines | Shared CI/CD pipeline templates reused across repos | Platform / DevOps team |
vrodocs-auth | Authentication and identity service (if decoupled) | Security / Platform team |
vrodocs-infra repo is your domain. IaC code for cloud resources, network configs, and VM definitions all live here — version controlled the same as application code. Changes to infrastructure go through a PR just like feature code does.This is the question most infrastructure engineers ask first: "Okay, the code is in a repo — but how does it actually get onto a server?" The answer is a CI/CD pipeline.
CI/CD stands for Continuous Integration / Continuous Delivery. A pipeline is an automated workflow that triggers when code is merged and handles building, testing, and deploying it — with no one manually copying files to a server.
Depending on the architecture, the pipeline pushes the build to one of these destinations:
A Pull Request (PR) is a formal request to merge code from one branch into another, with a built-in review, discussion, and approval process before anything actually changes in the target branch.
Developers work on isolated branches so their in-progress work never touches main until it has been reviewed and approved. A PR is the gate between a developer's idea and code running in production.
When a PR is opened, teammates can see exactly what lines of code changed (the diff), leave inline comments on specific lines, ask questions, request changes, and ultimately approve or reject the merge.
Most teams also require that automated checks pass — unit tests, linting, security scans — before a PR can be merged. This keeps bad code out of main automatically, not just through human review.
A developer can open a Draft PR before their work is complete. This signals: "I'm not done yet, but here's the direction I'm heading — early feedback welcome." Draft PRs cannot be merged until explicitly marked as ready for review.
main — e.g. feature/add-search-barBranch protection rules are enforced policies on the main branch (or any branch you designate as protected). They prevent careless or unauthorized changes from reaching production code.
| Rule | What It Enforces |
|---|---|
| Require Pull Request | No one can push directly to main — all changes must go through a PR |
| Require N Approvals | The PR must receive a minimum number of reviewer approvals before it can merge |
| Require CI to Pass | All automated checks (tests, scans) must succeed — a failing pipeline blocks the merge |
| Require Linear History | Enforces a clean commit history — no merge commits, only rebased or squashed commits |
| Dismiss Stale Reviews | If new commits are pushed after approval, previous approvals are invalidated and re-review is required |
| Restrict Who Can Merge | Only specific teams or individuals can complete the merge, even if approvals are met |
main are equivalent to locking down your production environment so that no VM or infrastructure change can be deployed without going through your formal deployment workflow and approval chain.If you come from a server infrastructure background, you already understand every concept in this article — the terminology is just different. Here is the direct mapping:
| Git / Software World | Your Infrastructure World |
|---|---|
| Feature branch | Dev or test environment — isolated, safe to break |
| Pull Request | Change request / RFC ticket requiring approval |
| Code review + approval | Peer review and CAB (Change Advisory Board) sign-off |
Merge to main | Promoting a change to production |
| CI pipeline (tests pass) | Pre-flight checks and validation before deployment |
| CD pipeline (deploy fires) | Your Aria Automation / vRO workflow kicks off post-approval |
| Revert PR | VM snapshot rollback or config rollback |
| Branch protection rules | RBAC on production vCenter — changes must go through the workflow |
| Git blame / history | Change log / audit trail in your ITSM platform |
main branch | Your golden template — always deployable, always clean |