Forgejo ve Emacs #1

Open
opened 2025-06-23 12:10:08 +00:00 by mertgor · 2 comments
Owner

github organizasyonlarımı ve depolarımı otomatik görebilmem ve oraya pushlayabilmem için GitHub apilerinden yararlanmam mı gerekli ?

Evet Mert, GitHub organizasyonlarını ve depolarını otomatik şekilde görmek, bu verilere erişmek veya push işlemleri yapmak istiyorsan GitHub API’lerini kullanman gerekecek. Özellikle:

  1. GitHub REST API veya GraphQL API sayesinde:

    • Organizasyon bilgilerini ve repo listelerini çekebilirsin.
    • Hangi repolarda hangi yetkilere sahip olduğunu sorgulayabilirsin.
    • Otomasyon sistemlerine entegre edebilirsin.
  2. Push işlemleri için:

    • Genellikle git komut satırı araçları ve uygun şekilde yapılandırılmış SSH anahtarları veya Personal Access Token (PAT) ile push yapılır.
    • API üzerinden direkt olarak dosya içeriği push'lamak da mümkündür (örneğin, PUT /repos/:owner/:repo/contents/:path ile içerik güncellenebilir), ama bu daha çok spesifik dosya değişiklikleri içindir.
  3. Kapsamlar (scopes) çok kritik:

    • Eğer özel repolarla çalışacaksan repo gibi yetkileri içeren bir token kullanmalısın.
    • Organizasyon bilgileri için read:org gerekebilir.

Dilersen Python, Emacs Lisp veya başka bir dilde bu işlemleri otomatikleştiren bir örnek sistem de kurabiliriz. Free Software etiklerini önemsediğin için GitHub dışı alternatifleri (örneğin Gitea ya da GitLab CE) de konuşmak istersen, oralarda da API'ler benzer şekilde çalışıyor. Hangisini düşünüyorsun?

github organizasyonlarımı ve depolarımı otomatik görebilmem ve oraya pushlayabilmem için GitHub apilerinden yararlanmam mı gerekli ? Evet Mert, GitHub organizasyonlarını ve depolarını otomatik şekilde görmek, bu verilere erişmek veya push işlemleri yapmak istiyorsan GitHub API’lerini kullanman gerekecek. Özellikle: 1. **GitHub REST API veya GraphQL API** sayesinde: - Organizasyon bilgilerini ve repo listelerini çekebilirsin. - Hangi repolarda hangi yetkilere sahip olduğunu sorgulayabilirsin. - Otomasyon sistemlerine entegre edebilirsin. 2. **Push işlemleri** için: - Genellikle `git` komut satırı araçları ve uygun şekilde yapılandırılmış **SSH anahtarları** veya **Personal Access Token (PAT)** ile push yapılır. - API üzerinden direkt olarak dosya içeriği push'lamak da mümkündür (örneğin, `PUT /repos/:owner/:repo/contents/:path` ile içerik güncellenebilir), ama bu daha çok spesifik dosya değişiklikleri içindir. 3. **Kapsamlar (scopes)** çok kritik: - Eğer özel repolarla çalışacaksan `repo` gibi yetkileri içeren bir token kullanmalısın. - Organizasyon bilgileri için `read:org` gerekebilir. Dilersen Python, Emacs Lisp veya başka bir dilde bu işlemleri otomatikleştiren bir örnek sistem de kurabiliriz. Free Software etiklerini önemsediğin için GitHub dışı alternatifleri (örneğin Gitea ya da GitLab CE) de konuşmak istersen, oralarda da API'ler benzer şekilde çalışıyor. Hangisini düşünüyorsun?
mertgor added this to the QB for all milestone 2025-06-23 12:10:08 +00:00
mertgor self-assigned this 2025-06-23 12:10:08 +00:00
byte8192 was assigned by mertgor 2025-06-23 12:10:08 +00:00
Author
Owner

ek olarak Forgejo federasyonu kurulumu ve dış sistemlerle entegrasyon, CMF için iyi olur düşüncesindeyiz

ek olarak Forgejo federasyonu kurulumu ve dış sistemlerle entegrasyon, CMF için iyi olur düşüncesindeyiz
Author
Owner

Emacs üzerinden Emacs Lisp ile eklenti paket yazsam Forgejo API'lerini kullansam kendi sunucuma kurduğum bir Forgejo'da Emacs yerelden depo açma organizasyon açma gibi işlemler yapabilir miyim

Evet Mert, Emacs üzerinden Emacs Lisp ile yazacağın bir eklenti paketiyle Forgejo API’lerini kullanarak kendi Forgejo sunucunda depo açma, organizasyon oluşturma gibi işlemleri gerçekleştirebilirsin. Forgejo, Gitea’nın bir çatallanması olduğu için API yapısı da oldukça benzer; RESTful ve JWT tabanlı kimlik doğrulama destekli. Bu da Emacs Lisp ile HTTP istekleri yaparak Forgejo’yu kontrol etmeni mümkün kılıyor.

🛠️ Yapabileceklerin (Forgejo API ile)

Aşağıdaki işlemleri Forgejo API üzerinden gerçekleştirebilirsin:

  • Yeni depo oluşturma (POST /orgs/:org/repos veya POST /user/repos)
  • Organizasyon oluşturma (POST /orgs)
  • Kullanıcı bilgisi alma (GET /user)
  • Depo bilgisi güncelleme (PATCH /repos/:owner/:repo)
  • SSH anahtarı ekleme (POST /user/keys)
  • Issue, Pull Request, Wiki gibi özellikleri yönetme

🧠 Emacs Lisp ile Nasıl Yapılır?

Emacs Lisp’te HTTP istekleri için url-retrieve, request.el gibi kütüphaneler kullanılabilir. request.el daha modern ve JSON ile çalışmak için daha uygundur.

Örnek: Yeni depo oluşturma

(require 'request)

(defun forgejo-create-repo (token org repo-name)
  "Forgejo'da yeni bir depo oluştur."
  (request
    (format "https://forgejo.example.com/api/v1/orgs/%s/repos" org)
    :type "POST"
    :headers `(("Content-Type" . "application/json")
               ("Authorization" . ,(concat "token " token)))
    :data (json-encode `(("name" . ,repo-name)))
    :parser 'json-read
    :success (cl-function
              (lambda (&key data &allow-other-keys)
                (message "Repo oluşturuldu: %s" (assoc-default 'html_url data))))
    :error (cl-function
            (lambda (&rest args &key error-thrown &allow-other-keys)
              (message "Hata: %S" error-thrown)))))

🔐 Kimlik Doğrulama

Forgejo API token’ı ile çalışır. Kullanıcı arayüzünden bir Access Token oluşturup bunu Emacs içinde saklayabilir ya da auth-source ile güvenli şekilde yönetebilirsin.

📦 Paketleştirme

Eğer bu eklentiyi bir Emacs paketi haline getirmek istersen:

  • forgejo.el gibi bir dosya oluştur.
  • define-minor-mode veya define-derived-mode ile bir arayüz tanımlayabilirsin.
  • package.el, straight.el veya quelpa ile yüklenebilir hale getirebilirsin.

🌐 Ekstra Fikirler

  • Forgejo ile entegre bir Emacs Issue Tracker arayüzü
  • magit ile entegrasyon (örneğin magit-push sonrası otomatik PR açma)
  • org-mode ile Forgejo görevlerini eşleştirme

İstersen birlikte bir temel Forgejo Emacs paketi taslağı çıkarabiliriz. Hatta görsel bir simgeyle federatif yapıyı temsil eden bir mod da ekleyebiliriz. Ne dersin?

Emacs üzerinden Emacs Lisp ile eklenti paket yazsam Forgejo API'lerini kullansam kendi sunucuma kurduğum bir Forgejo'da Emacs yerelden depo açma organizasyon açma gibi işlemler yapabilir miyim Evet Mert, Emacs üzerinden Emacs Lisp ile yazacağın bir eklenti paketiyle Forgejo API’lerini kullanarak kendi Forgejo sunucunda depo açma, organizasyon oluşturma gibi işlemleri gerçekleştirebilirsin. Forgejo, Gitea’nın bir çatallanması olduğu için API yapısı da oldukça benzer; RESTful ve JWT tabanlı kimlik doğrulama destekli. Bu da Emacs Lisp ile HTTP istekleri yaparak Forgejo’yu kontrol etmeni mümkün kılıyor. ### 🛠️ Yapabileceklerin (Forgejo API ile) Aşağıdaki işlemleri Forgejo API üzerinden gerçekleştirebilirsin: - **Yeni depo oluşturma** (`POST /orgs/:org/repos` veya `POST /user/repos`) - **Organizasyon oluşturma** (`POST /orgs`) - **Kullanıcı bilgisi alma** (`GET /user`) - **Depo bilgisi güncelleme** (`PATCH /repos/:owner/:repo`) - **SSH anahtarı ekleme** (`POST /user/keys`) - **Issue, Pull Request, Wiki gibi özellikleri yönetme** ### 🧠 Emacs Lisp ile Nasıl Yapılır? Emacs Lisp’te HTTP istekleri için `url-retrieve`, `request.el` gibi kütüphaneler kullanılabilir. `request.el` daha modern ve JSON ile çalışmak için daha uygundur. #### Örnek: Yeni depo oluşturma ```elisp (require 'request) (defun forgejo-create-repo (token org repo-name) "Forgejo'da yeni bir depo oluştur." (request (format "https://forgejo.example.com/api/v1/orgs/%s/repos" org) :type "POST" :headers `(("Content-Type" . "application/json") ("Authorization" . ,(concat "token " token))) :data (json-encode `(("name" . ,repo-name))) :parser 'json-read :success (cl-function (lambda (&key data &allow-other-keys) (message "Repo oluşturuldu: %s" (assoc-default 'html_url data)))) :error (cl-function (lambda (&rest args &key error-thrown &allow-other-keys) (message "Hata: %S" error-thrown))))) ``` ### 🔐 Kimlik Doğrulama Forgejo API token’ı ile çalışır. Kullanıcı arayüzünden bir **Access Token** oluşturup bunu Emacs içinde saklayabilir ya da `auth-source` ile güvenli şekilde yönetebilirsin. ### 📦 Paketleştirme Eğer bu eklentiyi bir Emacs paketi haline getirmek istersen: - `forgejo.el` gibi bir dosya oluştur. - `define-minor-mode` veya `define-derived-mode` ile bir arayüz tanımlayabilirsin. - `package.el`, `straight.el` veya `quelpa` ile yüklenebilir hale getirebilirsin. ### 🌐 Ekstra Fikirler - Forgejo ile entegre bir **Emacs Issue Tracker** arayüzü - `magit` ile entegrasyon (örneğin `magit-push` sonrası otomatik PR açma) - `org-mode` ile Forgejo görevlerini eşleştirme İstersen birlikte bir temel Forgejo Emacs paketi taslağı çıkarabiliriz. Hatta görsel bir simgeyle federatif yapıyı temsil eden bir mod da ekleyebiliriz. Ne dersin?
mertgor changed title from github organizasyonlarımı ve depolarımı otomatik görebilmem ve oraya pushlayabilmem için GitHub apilerinden yararlanmam mı gerekli ? to Forgejo ve Emacs 2025-08-08 17:28:26 +00:00
Sign in to join this conversation.
No milestone
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: qbnetworks/cmf#1
No description provided.