Da Anonimo (non verificato) , 29 Aprile 2026

Due modelli, due costi

I branch SVN sono copie di directory nel repository. I branch Git sono puntatori — una ref di 41 byte.

Comandi di branching

# SVN
svn copy ^/trunk ^/branches/feature -m "Create feature branch"
svn switch ^/branches/feature

# Git
git checkout -b feature
git switch feature

Tracking dei merge

Fino a SVN 1.5, il merging era manuale. SVN 1.5+ aggiunse svn:mergeinfo. Git traccia i merge nativamente nel grafo dei commit.

Merging in pratica

# SVN merge feature back to trunk
svn switch ^/trunk
svn merge ^/branches/feature
svn commit -m "Merge feature"

# Git merge feature back to main
git checkout main
git merge feature

Risoluzione conflitti

Entrambi i sistemi usano merge a tre vie e producono marker di conflitto.

Merging ripetuto

Git gestisce trivially "ho mergato da main la settimana scorsa, cos'e cambiato?".

Cherry-picking

# SVN
svn merge -c 12345 ^/trunk

# Git
git cherry-pick <sha>

Igiene di branch

Poiche i branch Git sono economici, i team li usano liberamente.

Visibilita

git log --graph --all di Git renderizza l'intero grafo in secondi.

Dove SVN tiene il suo

  • Strategia "trunk only" con rare release branch.
  • Access control per directory.

Impatto della migrazione

Il piu grande spostamento culturale nel passare da SVN a Git e il branching.