Skip to main content

Extend Git or Replace It?

The six architectural requirements in the previous page define what a solution must do. This page addresses the two architecturally distinct approaches to delivering those requirements. Both schools agree that Git alone is insufficient. They disagree about what to build on top of, or instead of, Git.

Architecture: Git remains the version control engine. A Salesforce-aware control plane wraps Git operations, adds metadata-specific handling at the boundaries, and manages deployment orchestration, environment mapping, and compliance logging.

What the control plane can provide:

  • Deployment automation that calls Salesforce CLI against Git-managed artifacts
  • Pre- and post-deployment validation against the target org
  • Component-type filtering during changeset construction
  • Deployment logs that satisfy basic audit requirements
  • UI-level conflict visualization that makes Git merge conflicts legible to non-engineers

The structural ceiling: The control plane handles the before and after; Git handles the middle. Merge, diff, and version history are all performed by Git's algorithms. This means:

  • Semantic merge is not achievable. Git's merge algorithm operates on byte sequences. Pre- and post-processing can make conflicts more visible; it cannot change what the merge algorithm produces.
  • Component identity is file-path identity unless the control plane maintains a separate component registry, which introduces a synchronization problem between the registry and the Git state.
  • Org-state awareness requires the control plane to query the live org independently and reconcile the result with Git state. This is possible but adds complexity; the reconciliation must happen before every deployment.

The diagnostic from Lesson 5 applies here: Ask a vendor in this school to walk through what happens when two sandboxes have diverged and need to be reconciled. At some point in the answer, Git's merge algorithm will appear. That is the ceiling.

Trade-offs:

  • Familiar toolchain for engineers trained on Git
  • Existing Git ecosystem integrations remain relevant
  • Lower migration cost for teams with existing Git infrastructure
  • Bounded by Git's semantic ceiling: the six architectural requirements are partially, not fully, met

Applying the six requirements as an evaluation framework

The six requirements are technology-neutral. Both schools can be evaluated against them:

RequirementSchool 1 ceilingSchool 2 ceiling
Component-aware VCSPartial (file-path identity unless separate registry)Full (component identity intrinsic)
Semantic merge engineNot achievable (Git merge algorithm is structural)Achievable (no Git merge dependency)
Org-aware deploymentAchievable (pre-deployment org query + reconciliation)Achievable natively
First-class rollbackAchievable (pre-deployment snapshot + restore)Achievable natively
Compliance-native audit trailAchievable (control plane can build this)Achievable natively
Platform-native securityDepends on implementationAchievable if built on Salesforce platform

School 1 can satisfy four of the six requirements. Requirement 2 (semantic merge) cannot be satisfied by a control plane that delegates merging to Git. Requirement 1 (component identity) requires a separate registry maintained in sync with Git state, which is achievable but adds operational complexity.

For organizations whose primary failure modes are Mismatches 1 and 3 (dependency failures and semantic merge errors), School 1 cannot address the root causes. For organizations whose primary failure modes are deployment automation, environment visibility, and basic audit logging, School 1 may be sufficient.

This course's position

This course does not select between schools. The six requirements are the selection framework. Any tool should be evaluated against them, with the diagnostic from Lesson 5 applied to vendor claims, and the choice should reflect which requirements are load-bearing for the specific organization.

The next page introduces Flosum, which belongs to School 2. The introduction is descriptive, not prescriptive.