Ich nutze kein DDEV, daher kann ich nichts dazu sagen, wie einfach man dort eine Kopie des Projekts machen kann.
Da ich Docker direkt mit Docker-Compose verwende, muss ich tatsächlich nur eine Kopie des Ordners anlegen, dann den ProjektNamen in meiner .env Datei ändern. (Den benötige ich, damit Docker ein eigenes persistentes Laufwerk für das Projekt anlegt). Dann fahr ich die Container hoch und muss dann nur die DB einspielen und es kann direkt weitergehen. Das ganze dauert etwa 5 min.
Da ich PHP-Storm verwende, muss noch zwingend der .idea Ordner im Projekt gelöscht werden, da es ansonsten zu Konflikten kommt.
Ich verwende dann zusätzlich einen neuen Branch in Git, da gerade bei Projekten mit Auto-Deployment ja ansonsten auf den Prod-Server deployed werden würde, wenn man in den Main Branch pushed. Da meine Projekte meistens aber auch einen Staging-Server haben, benötige ich so oder so einen neuen Branch, um diesen dann später zu mergen.
Dazu muss ich sagen, dass ich noch kein Update gemacht habe, bei dem während des Updates keine Änderungen am alten System gemacht werden mussten. Das kann natürlich in kleineren Projekten anders sein. Am besten man kommuniziert das mit dem Kunden vorher. 😉
Alternativ kann man natürlich auch einfach in dem alten Projekt arbeiten. Wenn man sich vorher einen Dump der DB macht, kann man ja einfach wieder im Git, den Main-Branch auschecken und die gesicherte DB einspielen. Allerdings muss man da natürlich auch wieder die DB des Updates sichern, um dann später wieder den Update-Branch auszuchecken.
Beim wechsel von TYPO3 11 zu 12 sollte man zudem noch bedenken, dass sich die Datei-Struktur ändert. Also LocalConf und AdditionalConf wandern vom typo3conf in den config Ordner. Da sollte man sich zumindest alles sichern, was nicht im Git eingechecked ist. Also die AdditionalConf.
Ein gute Idee wäre es vielleicht einfach mal ein wenig zu testen. Also mal eine Kopie des Projekts anzulegen. Und in der Kopie mal ein wenig mit weiteren Branches zu testen, wie es sich verhält, wenn man von 11 auf 12 und wieder zurück wechselt.
Allerdings würde ich warten, bis jemand der sich mit DDEV auskennt was dazu gesagt hat, ob das so ohne weiteres geht, ein Kopie des Projekts anzulegen ohne sich das bestehende Projekt zu zerschießen.
Ich hab mich beim Testen mit Docker immer gewundert, warum ich mir die DB im alten Projekt zerschossen hab. 🤣