Ben rotalarda ayırıyorum.
V1/
Controller
Model
Migration
Middleware
Repository
v1 için tüm dizinler var.
diyelim ki v2 ye geçtik ve sadece user controller da değişiklik yaptık.
V2/
Controller
-User Controller
V2 klasöründe sadece onu oluşturuyorum.
Sonra rotada örnek şöyle yapıyorum.
Route::get('posts', 'V1\PostController@get');
Route::get('users', 'V2\UserController@get');
V2 de yeni güncelleme oldukça sadece gerekli dosyaları yeni dizinde oluşturup rotadan değiştiriyorum. Böylece aynı dosyalar kopyalanmıyor hiçbir zaman.
Rotalarda namespace ile de v1 ve v2 rotalarını rahatlıkla ayırabiliyorum. V1 den V2 ye rotayı taşımak yetiyor.