Da Anonimo (non verificato) , 29 Aprile 2026

Inquadrare la decisione

"Quale VCS dovremmo usare?" raramente ha una risposta giusta.

Vincoli di workload

  • Principalmente codice testuale, branching frequente → Git.
  • Principalmente contenuto binario, lock esclusivi essenziali → Perforce.
  • Misto, con codice e asset separabili pulitamente → eseguire entrambi.
  • Controllo centralizzato con branching semplice → SVN rimane accettabile.

Vincoli di team

  • Distribuito, spesso offline → VCS distribuito (Git, Mercurial).
  • Single-site, sempre online → entrambi i modelli funzionano.
  • Misto ingegneri e non ingegneri → UX piu amichevole conta.
  • Contributori open-source → Git, senza domande.

Vincoli di ecosistema

  • Modernita CI/CD → Git schiacciantemente.
  • Tooling motore di gioco / DCC → spesso Perforce, con Git per il codice.
  • Infrastruttura esistente → la continuita ha valore reale.

Vincoli di compliance

  • Access control per percorso → Perforce o SVN.
  • Audit lato server delle operazioni di lettura → sistemi centralizzati.
  • Commit firmati e attestazione supply chain → Git con tooling sigstore-class.

Vincoli di costo

  • Bootstrap senza budget → Git su GitHub free tier, GitLab CE, o Gitea.
  • Enterprise finanziato con esigenze binarie → Perforce si giustifica.
  • Team SaaS medio → tier paid GitHub o GitLab.

Albero decisionale

1. Is most of your content unmergeable binary?
   Yes → Perforce. Stop.
   No → continue.

2. Do you need per-path access control?
   Yes → SVN, Perforce, or Git with significant tooling investment.
   No → continue.

3. Do contributors work offline or distributed?
   Yes → Git (or Mercurial). Continue.
   No → either model is fine.

4. Do you need GitHub-style ecosystem?
   Yes → Git. Stop.
   No → consider Mercurial for UX, SVN for centralisation.

5. Default → Git.

Scenari di esempio

  • Startup web SaaS, 5 ingegneri → Git su GitHub o GitLab.
  • Studio giochi, 200 persone → Perforce per asset, Git per codice.
  • Agenzia governativa → GitLab self-hosted o Perforce.
  • Libreria open-source → Git su GitHub.
  • Tooling aziendale interno → Git e ancora la risposta.
  • Azienda di design hardware → Perforce; possibilmente Git per firmware embedded.

Percorsi di migrazione

# SVN to Git
git svn clone --stdlayout --authors-file=authors.txt <url>

# Mercurial to Git
~/fast-export/hg-fast-export.sh -r <hg-repo>

# Perforce to Git
git p4 clone //depot/main@all my-git-repo

Evitare la paralisi da analisi

Se non riesci a decidere, la risposta e Git.

Rivedere la scelta

Rivalutare ogni due anni.