Files
imajviewer/docs/rapor-github-acik-kaynak.md
T

5.7 KiB
Raw Blame History

Rapor — imajViewer'ı GitHub'da Açık Kaynak Yapmak

Tarih: 2026-08-06 Konu: GitHub'a açık kaynak repo koymak için gerekenler + mevcut repo durumu + geçmiş/silinme sorusu + "pro" hale getirme planı

1. Sorunun cevabı: dosya silersem GitHub'a eski dosyalar gider mi?

Çalışma ağacından gider, geçmişten GİTMEZ.

  • Aynı repo geçmişini (aynı commit zincirini) GitHub'a push edersen: sildiğin dosyalar son sürümde (en son commit'te) görünmez, ama git geçmişindeki eski commit'lerde aynen durur. GitHub'da eski commit'lere tıklayan herkes o dosyaları görür ve indirebilir.
  • Üstelik bu geçmiş 391 MB binary taşıyor (aşağıda detay). GitHub'a geçmişle gitmek hem bu yükü hem de "eski dosyalar hâlâ orada" sorununu getirir.
  • Öneri: GitHub için geçmişsiz / tek commit'li temiz başlangıç yap. Ya git init ile yeni repo (sıfır geçmiş), ya da squash ile tek commit. O zaman ne sildiysen tamamen gider.

2. GitHub'a açık kaynak repo koymak için gerekenler (checklist)

Öğe Durum Not
LICENSE dosyası ❌ YOK README'de "MIT" yazıyor ama kökte LICENSE dosyası yok. GitHub lisansı bunu algılamaz
README ⚠️ Var Gitea URL'leri içeriyor, Türkçe, badge yok (detay: madde 4)
CONTRIBUTING.md ❌ YOK Katkı kuralları (kod stili, test, PR süreci)
CODE_OF_CONDUCT.md ❌ YOK GitHub topluluk standartları için beklenir
SECURITY.md ❌ YOK Güvenlik açığı bildirim yolu (private advisory)
CHANGELOG.md ❌ YOK 1.0.0 → 1.1.0 geçmişi yazılı değil
CI (GitHub Actions) ❌ YOK Sadece .gitea/workflows/ var — GitHub bunu ÇALIŞTIRMAZ, .github/workflows/ gerekir
Issue/PR template ❌ YOK .github/ISSUE_TEMPLATE/ + PULL_REQUEST_TEMPLATE.md
.gitignore ✅ Var İyi durumda (build/, .dart_tool/ ignore ediliyor)
Repo metadata ❌ description + topics (image-viewer, flutter, linux, windows) + lisans seçimi
Releases ⚠️ v1.1.0 tag + .deb/.exe asset'leri GitHub Releases'e taşınmalı
FUNDING.yml ❌ Opsiyonel

3. KRİTİK: Sızıntı / hijyen riskleri

  1. Gömülü token: git remote -v çıktısında origin URL'si https://git_alhan:1254baa3...@git.softmediadesign.com/... — token URL'e gömülü. Bu dosya .git/config'te; push ile GitHub'a gitmez (config transfer edilmez). Ama GitHub'a yeni remote eklerken bu URL'yi yanlışlıkla kopyalamamaya dikkat. Token'ı Gitea'dan yenilemek en temizi.
  2. Kişisel dosyalar repoda: imajviewer.desktop (yerel .desktop, mode 600), Implementation.md, PRD.md, update_plan_01.md, docs/session-*.md, docs/rapor-*.md — iç geliştirme notları. Açık kaynak repo'da hepsi durmamalı.
  3. Binary dosyalar git'te: deb/ (16 MB libflutter_linux_gtk.so vb. — build çıktısı) ve dist/ (.deb, .exe — sürüm paketleri) git ile takip ediliyor. Binary'ler git'e girmez; release asset'i olur. .gitignore'da *.deb/*.exe var ama !dist/*.deb istisnası ve deb/ dizini bunları açıkta bırakıyor.
  4. Mutlak yol: pubspec.yaml → msix_config.logo_path: C:/projects/imajviewer/... — yerel Windows yolu. GitHub runner'ında msix adımı kırılır; göreli yol olmalı.
  5. Geçmiş 391 MB: En büyük blob'lar: setup.exe 24 MB ×4 kopya, libflutter_linux_gtk.so 16 MB, .deb'ler 8-11 MB ×8, tar.gz 9 MB. GitHub'da dosya limiti 100 MB — şu an geçmiyor ama repo 1 GB'a yaklaşırsa GitHub uyarır, şişkinlik de kötü görünür.

4. README düzeltmeleri

  • Klon/curl komutlarındaki git.softmediadesign.com URL'leri GitHub URL'si olmalı
  • .deb kurulum adımındaki sürüm 1.0.0 yazılmış, güncel 1.1.0
  • Türkçe → açık kaynak için İngilizce (veya TR+EN iki dilli) önerilir
  • Badge'ler (build status, license, release) + ekran görüntüsü (imajviewer.png var)
  • "Gitea Actions" bölümü → "GitHub Actions" olarak yeniden yazılmalı

5. "Pro" hale getirme planı (uygulama adımları, onay sonrası)

  1. Kök temizliği: imajviewer.desktop sil; iç dokümanları (Implementation/PRD/ update_plan/docs) taşı ya da sil — karar gerekiyor (aşağıda).
  2. Binary'leri git'ten çıkar: git rm --cached deb/ dist/*.deb dist/*.exe, .gitignore'u düzelt (deb/ tamamen ignore; dist/'te sadece rebuild-deb.sh kalsın). Not: git rm --cached sadece ileriye dönük temizler; geçmişteki 391 MB durur — tam temizlik için ya filter-repo ya da temiz başlangıç gerekir.
  3. Lisans: Köke LICENSE (MIT) ekle.
  4. README'yi yeniden yaz: İngilizce, GitHub linkleri, badge, screenshot.
  5. Topluluk dosyaları: CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, CHANGELOG.md, .github/ (issue/PR template + workflows/build-windows.yml).
  6. CI'ı GitHub'a uyarla: .gitea/workflows/build-windows.yml → .github/workflows/: GITEA_TOKEN → GITHUB_TOKEN (otomatik), release adımı softprops/action-gh-release ile GitHub Release + .deb/.exe asset.
  7. pubspec.yaml: logo_path'i göreli yap (CI'da msix kırılmasın).
  8. GitHub'a aktarım: Yeni boş GitHub repo → git remote add github <url> → temiz tek commit (squash/orphan) → git push github main. Gitea ayrı kalır.

6. Açık kararlar (senin onayın gerekiyor)

  1. README dili: İngilizce mi, TR mi, iki dilli mi? (açık kaynak görünürlüğü için İngilizce önerilir)
  2. docs/ ve kök dokümanlar: iç raporlar/session notları ne olacak? (yerel yedek alınır mı?)
  3. Geçmiş: temiz tek commit mi, yoksa tüm geçmiş GitHub'a taşınsın mı? (öneri: temiz tek commit)
  4. GitHub hesabı/org: repo hangi hesaba? Repo adı: imajviewer mi imajViewer mi?
  5. Lisans: MIT kesin mi? (README'de MIT yazıyor, dosya yok)