npmrunseb
FR EN
← All writing

Source control, the cornerstone of the development experience

When I have the opportunity to work with a new development team, there’s a reflex I’ve kept for years: before touching the code, I look at the git log. The way a team writes commits, names branches, handles merges — it’s an information radiator. In five minutes, you know whether releases are planned or scrambled, whether collaboration is smooth or marked by silent conflicts, whether security practices are part of the culture or driven by the last compliance audit.

What this tells you is that source control isn’t a low-level technical decision. It’s an organisational architecture decision, with direct consequences on developer experience and the organisation’s ability to ship with confidence.

TL;DR — Git Flow remains relevant for predictable release cycles; GitOps extends it by making the repository the source of truth for infrastructure. In 2024, 64% of organisations had already adopted GitOps (CNCF) and 65% suffered a software supply chain attack in 2025. Choosing a branching workflow is no longer just about efficiency: it’s about operational resilience.

Git Flow: structure or straitjacket, depending on context?

According to the Stack Overflow Developer Survey 2025, 93.87% of developers use Git as their version control system — near-universal adoption that doesn’t prevent wide variation in how teams use it. Git Flow isn’t a bad practice; it’s a practice that applies poorly without judgement. Created by Vincent Driessen in 2010 and popularised in Java enterprise environments, the model relies on two permanent branches (main and develop), feature branches (feature/), release branches (release/) and urgent fix branches (hotfix/). Its core strength: each type of change has a dedicated lane, making validation processes predictable and auditable.

Setup involves initialising the repository with git flow init or equivalent IDE extensions, collectively defining naming conventions as a team, then integrating branch transitions into CI/CD pipelines. The human side is more demanding than the technical side; Git Flow conventions hold or collapse depending on whether the technical lead actively enforces them in code reviews.

In the enterprise contexts I work in, Git Flow remains the majority approach. Not out of conservatism: out of operational reality. A team delivering numbered versions to a large enterprise client, managing UAT cycles, planned deployment windows, and backports to previous versions — that team needs a structure that Git Flow provides natively. The “Git Flow is legacy” argument tends to come from continuous-deployment startup contexts that bear no resemblance to these realities.

Concrete benefits I observe on well-maintained projects:

  • Frictionless parallelism: multiple features advance simultaneously without blocking each other
  • Prepared releases: the release/ branch enables stabilisation and testing without freezing ongoing development on develop
  • Traced hotfixes: urgent fixes have a well-defined path, reducing errors made under production pressure

Colorful code on a computer screen — visualising an active Git codebase with multiple branches Code on screen — Chris Ried / Unsplash

The main limitation is well-known: Git Flow generates long-lived branches that accumulate divergence. In teams of more than ten developers without rigorous rebase discipline, merge conflicts become a permanent and invisible cost. This is why teams practising continuous delivery often prefer trunk-based development, which DORA research has correlated since 2018 with elite-performing team practices; up to 182 times more frequent deployments compared to standard-performing teams. Git Flow’s creator himself now recommends against it for teams practising continuous delivery.

This reflection on branching workflows fits within a broader tooling strategy: a coherent IDE strategy and a well-thought-out Git workflow directly complement each other in reducing the developer’s daily friction.

What does GitOps actually change in the delivery pipeline?

GitOps isn’t Git applied to infrastructure; it’s a complete paradigm shift. The Git repository becomes the single source of truth for the desired system state, and automated agents — ArgoCD, Flux — handle reconciling the actual state with that target state. The difference from classical CI/CD is fundamental: you no longer push changes to infrastructure; you declare a state, and infrastructure continuously converges toward it.

According to the CNCF Annual Survey 2024, 64% of organisations have already adopted GitOps approaches, and 81% of them report an increase in infrastructure reliability and a reduction in post-incident rollback time. These figures reflect a displacement of operational complexity: from the implicit state of a running system to the explicit, auditable state of a repository.

The term “GitOps” appeared in 2017 from Weaveworks, who had formalised their own internal practice on Kubernetes. The timing wasn’t accidental: Kubernetes had made declarative infrastructure management viable at scale, and there was no vocabulary yet to describe applying that logic to the entire delivery cycle. By 2026, GitOps has left the experimental practice register; it’s how large organisations manage their production infrastructure.

Progressive implementations typically follow this three-stage path:

  1. Application configurations first: version Helm charts, Kubernetes manifests, non-secret environment variables. This is the lowest-risk entry point and the most immediately readable by development teams.
  2. Declarative infrastructure next: Terraform or Crossplane managed via pull requests, with execution plans included in the review like any other code diff. Infrastructure becomes reviewed, historised, and rollback-able.
  3. Platform orchestration finally: an IDP (Internal Developer Platform) where developers provision their environments via the repository, without direct access to the production cluster. This is the maturity stage where “press here, infrastructure appears there” becomes reality.

GitOps’s difficulty is less technical than cultural. Ops teams accustomed to manual intervention see automatic reconciliation as a loss of control. The counter-argument is stronger: less implicit state, more auditability and resilience. Every infrastructure change is a PR; every rollback is a git revert; every configuration drift is detected and corrected without human intervention. The same reproducibility principle applies at a level below in the chain: Dev Containers demonstrate it for the local development environment, with the same declaration and convergence logic.

How do you balance agility and security in a degraded geopolitical context?

The direct answer: with automated guardrails and a review culture, not with manual slowing-down processes. In 2025, 65% of organisations suffered a software supply chain attack, according to the ISACA Software Supply Chain Security Report 2025 (retrieved 2026-05-17). The global cost of these attacks is estimated at $60 billion for 2025, according to Cybersecurity Ventures. Documented campaigns in 2024-2025 specifically targeted GitHub tokens and CI/CD secrets embedded in repositories to compromise thousands of downstream npm installations.

This context redefines what “being agile” means in enterprise. In the 2010s, agility meant shipping faster. In 2026, it means shipping fast and verifiably and traceably. The pressure comes from two directions simultaneously: SAFe and AgilePM frameworks push toward shorter delivery cycles, while regulatory obligations (NIS2, DORA for banking, PSD2), security teams and executive boards sensitised to geopolitical risks push toward hardening controls on the software chain. These two forces aren’t contradictory if the source control workflow is correctly designed from the start.

High impact-to-effort protections I consistently find missing in DevX audits:

  • Branch protection rules: block direct pushes to main and develop, require at least one review approval, block merges if CI checks fail. This is a repository configuration setting, not a multi-week project.
  • Signed commits: requiring commits to be signed via GPG or SSH makes Git history injections detectable. Still marginal in practice in 2026, yet natively accessible in GitHub and self-hosted alternatives like Gitea or Forgejo.
  • Secret scanning and push protection: GitHub Advanced Security detects tokens and API keys before they reach the remote repository. It’s the most effective barrier against accidental credential leaks, which are the most frequent entry vector for CI/CD attacks.
  • Dependency review: requiring explicit validation before introducing a new external dependency reduces the attack surface on the supply chain without blocking daily productivity.

Red padlock resting on a computer keyboard — securing a Git repository without slowing down development teams Security lock on keyboard — FlyD / Unsplash

The SAFe framework addresses this tension in its “Built-In Quality” pillar: security isn’t a phase after delivery, it’s a property verified at each step of the flow. Applied to source control, this means CI pipelines that include security scans alongside functional tests; detection is moved to the earliest possible point in the cycle, where the correction cost is minimal.

The intersection with AI agentic tools adds a layer of complexity: agents that commit code, create branches and open pull requests must be subject to the same rules as human developers. The article on Claude Code agents and their workflows details how to frame this delegation without inadvertently creating security policy bypasses.

GitHub and its Enterprise editions: which version for which context?

GitHub brings together more than 180 million developers and 630 million repositories, according to GitHub Statistics 2026. It’s the historical market leader: 59.3% of developers cite it as the most desired collaboration tool in the Stack Overflow Developer Survey 2025 and 75.8% as the most admired. But “using GitHub” doesn’t describe a single reality in enterprise; there are four editions with radically different trade-offs.

GitHub.com is the public offering, available in Free, Pro and Teams tiers. It suits the majority of teams without data sovereignty constraints. Access to advanced features (GitHub Advanced Security, GitHub Copilot, unlimited Actions) goes through add-ons or enterprise tiers. Simplicity is maximum; no infrastructure to manage.

GitHub Enterprise Server (GHES) is the edition deployed on the organisation’s own servers, on-premises or in a private cloud. It offers total data control: no data leaves the physical perimeter. It’s the answer to the strictest regulatory requirements: classified data, defence sector, banking institutions under physical isolation constraints. The trade-off is infrastructure to maintain, updates to orchestrate manually, and a lag in accessing new features compared to cloud editions.

GitHub Enterprise Cloud (GHEC) is the SaaS edition for large organisations. It combines enterprise features (SAML SSO, advanced audit logs, centralised organisation policies, GitHub Advanced Security) with no infrastructure to manage. It’s the preferred choice for organisations that want enterprise capabilities without the operational burden of GHES.

GitHub Enterprise Cloud with Data Residency is the most recent option for organisations with data localisation obligations. Generally available in the United States since May 2025 according to the GitHub Changelog, and available as a European option, it lets you choose the storage region while retaining the full cloud feature set: GitHub Actions, Copilot, Codespaces and Advanced Security.

In my engagements with French companies subject to defence contracts or strict GDPR requirements, the data residency question comes up systematically in the first scoping meetings. Until 2024, GHES was the only credible answer; Data Residency opens an alternative that removes the operational burden without sacrificing compliance. The decision criterion increasingly comes down to: how critical is total physical isolation versus the practicability of a managed SaaS? For most European companies outside maximum-requirement sectors, Data Residency now answers the question.

EditionInfrastructureData locationFeaturesFor whom
GitHub.com TeamsNoneUS sharedStandardTeams without constraints
GHECNoneUS sharedFull + enterpriseLarge orgs without localisation requirements
GHEC Data ResidencyNoneEU or US dedicatedFull + enterpriseNIS2, strict GDPR, local data orgs
GHESSelf-managedTotal controlFull, time-delayedDefence, classified, full physical isolation

Developers working together around their laptops — team collaboration on a GitHub Enterprise platform Team collaboration — Marvin Meyer / Unsplash

For organisations exploring self-hosting approaches on other infrastructure components, the article on Dokploy and Hetzner provides a concrete reference for what managing your own infrastructure looks like in 2026.

What does a first git log reveal about source control maturity?

A well-structured repository is one where a developer can create a branch, submit a PR, watch the checks pass, receive useful feedback and merge without surprises. When that cycle takes less than a day for a normally-sized feature, it’s a sign of mature source control practice. When it takes a week because of accumulated conflicts, unstable pipelines or opaque approval processes, the workflow no longer serves developers: it slows them down without guaranteeing higher quality.

Source control is the invisible infrastructure on which everything else rests: CI/CD, review practices, traceability of technical decisions, resilience in the face of incidents. Treating this decision like a configuration detail is the same mistake as treating the IDE as just another comfort tool: a silent lever you only measure when it’s missing.

FAQ

Is Git Flow still relevant in 2026?

Yes, in the right contexts. Git Flow is well-suited to teams delivering numbered versions with UAT cycles, planned deployment windows and backport needs. In those contexts, the structure brings predictability and auditability. For teams practising continuous delivery, DORA research shows trunk-based development is correlated with elite-performing team practices, with up to 182 times higher deployment frequency. The deciding criterion is the nature of the release cycle, not team size or codebase age.

What does GitOps concretely bring over classical CI/CD?

Classical CI/CD pushes changes to a target environment. GitOps inverts the flow: an agent monitors the repository and reconciles actual infrastructure with the declared state. The concrete benefit: every change is a PR, every rollback is a git revert, every non-conforming state is automatically detected and corrected without human intervention. According to the CNCF in 2024, 81% of teams that adopted GitOps report better infrastructure reliability and a measurable reduction in post-incident rollback time.

Who is GitHub Enterprise Cloud with Data Residency actually for?

It’s the answer for organisations subject to data localisation obligations (strict GDPR, NIS2, contractual EU storage requirements) that don’t want to manage a GitHub Enterprise Server’s infrastructure. Data Residency guarantees that code and metadata stay in the chosen region; cloud features remain complete, including GitHub Actions, Copilot, Codespaces, and Advanced Security. Generally available for the United States since May 2025 and available as a European option for organisations on the continent.

How do you secure a Git repository without slowing teams down?

The four high impact-to-effort measures: branch protection rules (blocking direct pushes to main, required reviews, required CI checks), secret scanning enabled on all repositories, signed commits for contributors to sensitive branches, and automated dependency review in PRs. These four measures cover the most frequent attack vectors in supply chain attacks without adding perceptible friction to the daily workflow. The real slowdown comes from manual approval processes; automating them in CI is consistently more effective than multiplying human steps.