Xcode vs VS Code
Apple'ın resmi IDE'si Xcode ile Microsoft'un popüler editörü VS Code iOS geliştirme için karşılaşıyor. Hangi araç sizin için daha verimli?
Yapılandırılmış dal stratejisi — main, develop, feature, release, hotfix
Tek ana dal, sık commit, feature flag ile güvenli deployment
# Git Flow - Tam iş akışı örneği
# Başlangıç kurulumu
git flow init -d
# Dallar: main, develop, feature/, release/, hotfix/
# Yeni özellik geliştirme
git flow feature start user-profile-redesign
# → feature/user-profile-redesign dalı oluşturuldu
# Geliştirme süreci
git add src/views/ProfileView.swift
git commit -m "feat(profile): redesign user profile card"
git add src/viewmodels/ProfileViewModel.swift
git commit -m "feat(profile): add avatar lazy loading"
# Özellik tamamlandı — develop'a birleştir
git flow feature finish user-profile-redesign
# → feature dalı silindi, develop'a merge edildi
# Release hazırlığı
git flow release start 2.4.0
# → release/2.4.0 dalı oluşturuldu
# Release branch'te sadece bug fix!
git commit -m "fix: avatar cache invalidation on logout"
git commit -m "chore: bump version to 2.4.0"
# Release tamamlandı
git flow release finish 2.4.0
# → main'e merge, tag oluşturuldu (v2.4.0), develop'a geri merge
# Üretim hatası tespiti
git flow hotfix start fix-crash-on-launch
git commit -m "fix: nil pointer in AppDelegate startup"
git flow hotfix finish fix-crash-on-launch
# → main ve develop'a merge, v2.4.1 tag# Trunk-Based Development - Günlük iş akışı
# Her sabah: güncel başla
git pull origin main
# Kısa feature branch (max 1-2 gün!)
git checkout -b feat/quick-login-improvement
# Küçük, atomik commitler
git add src/views/LoginView.swift
git commit -m "feat: add biometric login button"
git add tests/LoginTests.swift
git commit -m "test: biometric auth unit tests"
# Hemen trunk'a merge (bitmese bile feature flag ile!)
git checkout main
git pull origin main
git merge feat/quick-login-improvement
git push origin main
git branch -d feat/quick-login-improvement
# Feature flag ile incomplete özelliği gizle (Swift)
# FeatureFlags.swift
enum FeatureFlag: String {
case newLoginUI = "new_login_ui"
case profileV2 = "profile_v2"
case darkModeV3 = "dark_mode_v3"
}
class FeatureFlagService {
static func isEnabled(_ flag: FeatureFlag) -> Bool {
// Remote config'den veya local override'dan oku
return RemoteConfig.shared.bool(forKey: flag.rawValue)
}
}
// View'da kullanım
if FeatureFlagService.isEnabled(.newLoginUI) {
NewLoginView()
} else {
LegacyLoginView()
}
# CI/CD pipeline (GitHub Actions)
# .github/workflows/ci.yml:
# on: push (branches: [main])
# → lint → test → build → deploy staging → smoke test → deploy productionWeb servisleri ve SaaS ürünleri için Trunk-Based Development modern standarttır — CI/CD ile mükemmel uyum, hızlı iterasyon. iOS uygulamaları için Git Flow'un hafifletilmiş versiyonu (sadece main + feature dalları) pratik: App Store review süreci ve sürüm döngüleri bu yapıya daha uygun. GitHub Flow (main + short-lived feature branches) iyi bir orta yol.
GitHub Flow basitleştirilmiş versiyon: sadece main ve feature branch'leri var. Release branch, develop branch yok. Küçük-orta ekipler için ideal orta yol.