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

89 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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ıı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)