"Great customer service. The folks at Novedge were super helpful in navigating a somewhat complicated order including software upgrades and serial numbers in various stages of inactivity. They were friendly and helpful throughout the process.."
Ruben Ruckmark
"Quick & very helpful. We have been using Novedge for years and are very happy with their quick service when we need to make a purchase and excellent support resolving any issues."
Will Woodson
"Scott is the best. He reminds me about subscriptions dates, guides me in the correct direction for updates. He always responds promptly to me. He is literally the reason I continue to work with Novedge and will do so in the future."
Edward Mchugh
"Calvin Lok is “the man”. After my purchase of Sketchup 2021, he called me and provided step-by-step instructions to ease me through difficulties I was having with the setup of my new software."
Mike Borzage
April 04, 2026 14 min read

Traditional version control was engineered for text. CAD is engineered for geometry, constraints, and intent. That single sentence explains why a code-first approach struggles with design data. CAD models encode a web of dependencies—parts drive assemblies, configurations fork feature states, and drawings reference view-dependent properties. Meanwhile, the files themselves are often binary, huge, and occasionally non-deterministic, making line-based diffs meaningless. When multiple disciplines concurrently modify a product, conventional file-based merges devolve into blind bets. On top of that, compliance expectations demand traceable, reviewable changes that align with engineering change procedures. Without rethinking the mechanics of branching, merging, and reviewing, you either accept slow, serial edits or accept instability. The right answer is neither.
What works is a CAD-aware layer on top of a robust VCS. Treat assemblies as graphs, not folders. Represent important properties—parameters, mass, BOM state—in machine-computable snapshots. Generate visual diffs that engineers can trust at a glance. Add policy gates aligned with how teams actually release hardware. And do it in a way that doesn’t force everyone into a monolithic tool: use containers, headless exports, and neutral formats to bridge ecosystems. The reward is not simply fewer conflicts; it is faster iteration with higher confidence, where every pull request is a miniature design review augmented by automated checks, and every release is auditable to the part number and dimension that changed. In other words, make version control serve design, not the reverse.
Parts, assemblies, drawings, configurations, reference geometry, simulation inputs, and external references form a dependency graph that routinely spans teams and tools. A single top-level assembly might pull a thousand leaves across feature states, material specs, and vendor-supplied fasteners. In this world, a flat file tree and a line-based diff cannot represent intent or impact. The graph shape itself is a first-class signal: which nodes were added or removed, which edges—mates, constraints, references—were rewired, and which attributes changed. Treating a BOM as a text bill or a folder listing discards the semantic context engineers need to assess risk. The right approach is to store or compute a structured representation of the assembly graph alongside the binaries and use it in reviews and CI. This reveals how a change propagates: a small hole diameter tweak becomes a cascade if it invalidates a stack-up, shifts CG, or breaks a drawing dimension.
Native CAD formats are typically binary and can grow into gigabytes as configurations, meshes, embedded textures, and associative references accumulate. Many kernels also encode timestamps, machine IDs, or regeneration order that cause non-deterministic byte-level differences across environments. As a result, line diffs are meaningless and byte diffs are noisy; a simple re-save might look like a massive change. Worse, attempts to merge two binary branches rarely produce something that can even open, much less rebuild. The remedy is twofold: first, decouple storage from review by using a large-file strategy and neutral exports; second, standardize regeneration so the same inputs produce the same outputs. Think “artifact discipline.” Place heavy assets in **Git LFS**, control access and locks on non-mergeable files, and generate deterministic secondary artifacts—STEP, GLB, thumbnails, BOM JSON—during CI to make changes inspectable without cracking open CAD locally.
Minor edits can cascade into broken references because many CAD systems index faces, edges, and vertices implicitly. Add a fillet, reorder a feature, or tweak a sketch, and face IDs shift—mates lose their anchors, downstream features fail, and simulation contacts de-reference. This is the **topological naming** problem, and it is the chief reason why naive merge strategies are brittle. To manage it, prefer semantic anchors—datums, axes, reference sketches—over raw face references. For version control, produce **semantic diffs** that compare feature parameters and suppression states, not just files. On the geometry side, use Boolean XOR and face-matching descriptors to detect true shape changes, and apply tolerances to filter out harmless tessellation churn. Over time, encode persistent tags into critical faces via feature metadata so mates can auto-rebind even after reorderings.
Hardware programs rarely move in single-file. Mechanical, electrical, firmware, manufacturing, reliability, and sourcing all exert legitimate pressure to edit the same assembly graph. If your control strategy is “last writer wins,” you are resigning yourself to expensive surprises. What actually works is a layered system: lock when binaries cannot be merged; isolate leaf changes on short-lived branches; and surface conflicts with machine-generated evidence so reviews are swift and decisive. Enforce ownership boundaries at the subassembly level, model team-specific workspaces with sparse checkouts, and connect ECO/ECR tickets directly to branches and signed tags. Most importantly, don’t ask reviewers to divine implications from a file timestamp. Give them visual diffs, property deltas, and graph changes that make the risks explicit and quantifiable. This turns multi-disciplinary concurrency from chaos into a managed queue of well-scoped changes.
Regulated programs and serious supply chains demand traceability: who changed what, why, when, and under which approval. Traditional PLM handles this, but design teams increasingly rely on Git for speed and transparency. The bridge is to encode engineering change logic directly into your branching and tagging model. Map ECOs/ECRs to dedicated branches, store sign-off metadata in pull requests, and require signed release tags that tie to an immutable record of artifacts: neutral models, property tables, and BOM snapshots. Enforce part-number validation, license policy, and export-control metadata at the repo edge. Finally, ensure every release produces a deterministic package that can seed PLM/ERP and survive audits. When done right, you can answer hard questions—“Which revision changed the CG by 2 mm?”—with a single query rather than a forensic effort across file servers and inboxes.
A practical default is a monorepo per product line with stable subfolders—/Parts, /Assemblies, /Drawings, /Scripts, /Exports—so every role can predict where to look. Vendor and supplier content should enter as versioned, read-only packages or submodules to lock dependencies; never copy fasteners and footprints ad hoc. Large simulations, scans, renders, and experimental meshes deserve sibling repos to keep the core design workspace responsive. Crucially, codify these boundaries in a template repo with .gitattributes that wires **Git LFS** rules, lock settings, and default branch protections. The goal is to make it easier to do the right thing than the wrong one, so new components and test fixtures land in the correct subtree, and LFS captures binaries from day one. By stabilizing external content and isolating bulky artifacts, you shorten clone times, simplify reviews, and make changesets intelligible.
Every successful CAD-on-Git rollout enforces a large-file strategy from the start. Track native CAD and neutral exchange files in **Git LFS**; prevent accidental commits of raw binaries by using pre-commit hooks that block non-LFS patterns. For truly non-mergeable formats, enable lockable LFS: engineers request a lock before editing, which the server enforces to prevent parallel modification. To keep workspaces snappy, use partial clones and sparse checkouts so contributors pull only the assemblies they need. Many tools now support filtering based on path globs or by commit history depth, which turns multi-gigabyte trees into manageable sandboxes. Pair this with artifact caching in CI so neutral exports and thumbnails do not rebuild unnecessarily. Done well, you’ll see order-of-magnitude improvements in clone, checkout, and review cycles, while retaining full history and traceability.
Trunk-based development with short-lived feature branches keeps cadence high and conflicts local. Use Gitflow only when release trains must satisfy heavy regulation and long stabilization windows. Map ECO/ECR documents to branches so every change has a traceable rationale; require PRs to contain autogenerated artifacts: GLB or USD previews with highlighted changes, STEP exports, property deltas (mass, volume, CG), and BOM diffs. Store sign-off metadata in the merge request and sign release tags cryptographically. This moves approvals from email and meetings into a consistent, queryable workflow. By keeping daily edits small and observable while formalizing releases with signatures and attached evidence, you get the best of both worlds: speed for iteration, rigor for shipment. Most teams find PR lead times shrink as reviewers rely on machine evidence rather than manual rebuilds and screenshots.
Headless, containerized CI is the linchpin of a reliable CAD workflow. On every PR, spin up a container that reproduces a known-good toolchain—kernel version, locale, units, tessellation. Regenerate the affected models, export neutral STEP and GLB previews, and compute properties like mass, volume, and center of gravity. Check mates and constraints; flag broken references. Auto-generate an assembly BOM and diff it against main; fail the pipeline when mates break or mass shifts exceed thresholds. By treating exports and metrics as build artifacts, you transform PRs into machine-augmented design reviews, cutting the time to understand a change from hours to minutes. Releases repeat the process with stricter gates, signing the resulting artifact bundle. Because containers isolate and pin behavior, rebuilds are **deterministic**, removing the “works on my workstation” problem and stabilizing downstream visualization.
Design repositories hold crown jewels—proprietary geometry, supplier pricing, and sometimes restricted technologies. Host on on-prem GitLab or Gitea with **LFS**, encrypt at rest and in transit, and consider repo-level encryption or git-crypt for sensitive subtrees. Build policy gates into CI so a change cannot land if it violates part-number schemes, introduces unapproved licenses, or leaks personal data through file metadata. Attach export-control tags at the part level and propagate them into release bundles. Map access controls to product areas via CODEOWNERS and protected branches. These measures reduce both accidental leaks and governance churn, while keeping engineers in flow. Security becomes a property of the workflow rather than a post hoc review, and audits shift from burdensome to mechanical.
No single diff modality suffices for CAD. Use a ladder of comparisons, escalating to the richest feasible layer given your tools and licenses. File-level checksums and sizes are only for triage; they cannot guide reviews. Feature-tree diffs compare parameters, suppression states, sketches, and pattern counts—ideal when you can access the CAD API and when feature IDs are relatively stable. Geometry-level (BREP) comparisons run Boolean XORs to detect volumetric deltas and use face-matching descriptors to align surfaces; numeric thresholds suppress noise from tiny gaps. Mesh-level diffs apply Hausdorff distances and heatmaps to visually communicate where change occurs; tolerances filter tessellation jitter. Assembly/BOM diffs graph-check mates, constraints, component adds/removes/renames, and configuration-specific variants. Finally, drawing-level diffs compare view extents, dimension sets, and GD&T notes. Combine these into a composite report so reviewers see both picture and proof.
Engineers make faster, better decisions when the review surface is visual, quantitative, and linked to the graph. Auto-attach GLB/USD previews to pull requests with XOR-highlighted regions, and provide toggles between before/after states. Add a property delta table that includes Δmass, Δvolume, ΔCoG, surface area, and critical parameters. For assemblies, include a BOM change report that enumerates added/removed/renamed parts, flags procurement impacts, and normalizes fasteners so a thousand screw swaps don’t drown out a single bracket edit. Link diff elements back to source features or parameters so reviewers can pinpoint intent quickly. Presenting a **geometry-aware** diff next to a **property-aware** table and a **graph-aware** BOM delta transforms PRs into compact, high-signal design reviews that reduce meetings and slash back-and-forth clarifications.
Not all CAD-related files are created equal. For native, non-mergeable binaries and critical top-level assemblies, use the **lock–edit–unlock** pattern and keep branches short. Where feature IDs are stable and APIs allow it, perform three-way semantic merges: reconcile parameter edits, resolve sketch constraint conflicts with guided prompts, and regenerate in CI. Better yet, elevate design logic into merge-friendly text: parametric scripts, DSLs, or spreadsheets stored as CSV; then regenerate binaries in CI so the authoritative edit history lives in text diffs. Manage merges hierarchically: merge leaf parts first, then subassemblies, then the top-level assembly, with CI gates at each tier to localize conflicts early. Treat supplier and library parts as immutable, versioned packages; update via pull requests that run automated interference, fit, and clearance checks before landing.
Make diffs meaningful by stabilizing the system around them. Enforce deterministic rebuilds by pinning CAD versions, kernels, units, locales, and tessellation settings. Reduce topological churn: add persistent face/edge IDs through feature tagging, rebuild in a canonical order, and prefer reference geometry and datum-driven constraints. Define tolerance policies for both geometry and mesh comparisons so reviewers see only consequential changes. Finally, codify your rules—what files lock, what files merge semantically, what thresholds fail CI—and bake them into repo templates and checklists. Over time, your diffs become predictable signals rather than noisy approximations, and merges become guided resolutions rather than gambles. The result is a workflow where **semantic diffs**, **geometry-aware previews**, and **deterministic exports** reinforce one another, making reviews decisive and repeatable.
Git can absolutely work for CAD—provided you adapt it to geometry and process reality. Pair it with **LFS** and locking where necessary; lean on semantic and geometry-aware diffs; and back everything with CI that regenerates, validates, and exports models deterministically. Treat assemblies as graphs instead of folders so reviews capture intent and impact. Align branches and tags with ECOs; preserve approvals in merge requests with signed releases. Adopt a large-file strategy with partial clones and sparse checkouts to keep teams nimble. Elevate design logic to text where practical, regenerate binaries in CI, and use hierarchical merges to contain conflicts. Wrap it all in a security posture that protects IP and automates governance. The payoffs are concrete: faster, auditable reviews; fewer integration surprises; cleaner handoffs to PLM/ERP; and a foundation that scales across sites, time zones, and disciplines without sacrificing control.
Start small but deliberate. Choose a repository topology and define lock/merge rules per file type in a shared template. Enforce **Git LFS** via .gitattributes and pre-commit hooks; enable locking for non-mergeable native formats. Stand up headless CI that regenerates models, exports neutral files, computes properties, and produces visual diffs; pin toolchain versions and tessellation settings for determinism. Adopt sparse checkouts and partial clones to keep engineers in tight loops, and containerize the toolchain so results are reproducible across sites. Pilot on a medium assembly with representative complexity, not a toy; measure PR lead time, conflict rate, incidence of broken mates, and rate of CI failures due to Δ thresholds. Iterate policies—tolerances, lock scopes, artifact bundles—based on observed friction. Success looks like fewer meetings, clearer PRs, faster reviews, and less firefighting during integration.
When version control respects geometry and process, it becomes more than a file cabinet—it becomes an accelerator. Automated, geometry-aware diffs turn pull requests into rich design reviews that compress feedback cycles. Deterministic builds eliminate “works here” debates and keep visualization and simulation aligned with intent. Graph-aware BOM deltas illuminate procurement impacts before they bite lead times. Signed releases and embedded approvals create an audit trail that satisfies quality and regulatory scrutiny without slowing iteration. As teams grow, partial clones, hierarchical merges, and immutable supplier packages keep complexity in check. The organization gains a shared language for change—GLB overlays, Δ tables, and graph diffs—that bridges mechanical, electrical, manufacturing, and program management. The result is a durable advantage: faster, auditable reviews; fewer integration surprises; cleaner PLM/ERP handoffs; and a scalable foundation for **multi-site, multi-disciplinary design** that compounds in value with every program.
Sign up to get the latest on sales, new releases and more …