gokayburuc.dev

GIT Helper Fonksiyonu

Introduction

ÖN BILGILENDIRME: Bu yazı, GIT commit işlemlerini sistem çapında otomatikleştirme yöntemleri hakkında bilgi vermek amacıyla yazılmıştır.

test-gif

Siz de Open-Source projelerle yoğun olarak çalışıyorsanız çok fazla commit yaptığınız projelerle karşı karşıya geliyorsunuz demektir. Git üzerinde push/pull request işlemlerinizi yaparken tekrar tekrar şifre ve username girmek eğer çok fazla commit yapıyorsanız sinir bozucu olabiliyor.

VSCode üzerinden push işlemleri yaparken bir kere GIT_ACCESS_TOKEN ve GIT_USERNAME girişi yaptıktan sonra bu işlemleri sürekli olarak gerçekleştirebiliyorsunuz. Peki, Neovim kullanıcısı iseniz, Neovim'den çıkmadan git push ve pull işlemlerinizi GIT_USERNAME ve GIT_ACCESS_TOKEN tek bir tuşla push/pull edebileceğinizi biliyor muydunuz?

Bu yazımda size kısaca bunu yapmak için gerekli ilk konfigurasyondan bahsedeceğim.

.gitconfig configurations

İlk iş olarak sistem genelinde GIT_USERNAME ve GIT_ACCESS_TOKEN tanıması gerçekleştirebilmek için .gitconfig dosyamıza aşağıdaki helper fonksiyonun ekleyeceğiz.

Linux içerisinde $HOME 'a erişebilmek için cd ile /home/ klasörüne giderek bir .gitconfig dosyası oluşturuyoruz. Eğer mevcut bir config dosyanız varsa o zaman [credential] altına aşağıdaki helper fonksiyonunu ekleyin:

# HOME
cd
# open .gitconfig file
nvim .gitconfig

Açılan dosyanın içerisine aşağıdaki gibi kendinize ait bir yapı oluşturun. Kendi kullanıcı adınızı [user] alanı altında giriş yapın ve helper fonksiyonun aşağıdaki şekilde kopyalayıp yapıştırın ve dosyanızı kaydedin.

[user]
  email = ....@yandex.com
  name  = G... B....
[credential]
  helper = "!f() { echo \"username=${GIT_USERNAME}\"; echo \"password=${GIT_ACCESS_TOKEN}\"; }; f"
[core]
  editor = nvim

Helper fonksiyonu yardımıyle kabuk üzerinde yapacağımız işlemlerde username kısmına otomatik olarak GIT_USERNAME ve access_token alanına da GIT_ACCESS_TOKEN isimli sistem genelinde tanımlı değişkenleri çağırıyoruz.

Helper Function: : Yardımcı fonksiyon, başka bir fonksiyonun hesaplanmasının bir kısmını gerçekleştiren bir fonksiyondur. Yardımcı işlevler, hesaplamalara açıklayıcı adlar vererek programlarınızın okunmasını kolaylaştırmak için kullanılır.

zshrc and bashrc configurations

Sisteminizde kullandığınız kabuğa bağlı olarak (shell) aşağıdaki iki satırı bu kabuğa ait konfigurasyon dosyasına kopyalıp yapıştırıyoruz.

# HOME directory
cd

# if you are using zsh
nvim .zshrc

# if you are using bash
nvim .bashrc

.zshrc ya da .bashrc dosyanızın herhangi bir yerine aşağıdaki değişkenleri ekleyin. <your-access-token> alanına Github üzerinden aldığınız GIT_ACCESS_TOKEN ı yapıştırın.

GIT_USERNAME="<your-username>"
GIT_ACCESS_TOKEN="<your-access-token>"

Lazygit

Lazygit git ile ilgili tüm işlemleri tek bir ekran üzerinden yönetmenizi sağlayan bir dashboard ve git managerdır. Commit dosya ekleme ve dosya çıkarma, ignore, merge, branch, pull/push gibi birçok git komutunu bu arayüz sayesinde yönetebilirsiniz.

lazygit

Lazygit Setup and Configurations

Eğer Astro.nvim kullanıcısı iseniz sisteminizde lazygit yüklü olarak kullanıma başlarsınız. Eğer kurulum yapmanız gerekirse aşağıdaki adımları takip edin.

Eğer Neovim içerisinde Lazy paket yöneticisi kullanıyorsanız aşağıdaki kod satırını kullanarak yükleme yapabilirsiniz:

-- nvim v0.8.0
return {
  "kdheepak/lazygit.nvim",
  cmd = {
    "LazyGit",
    "LazyGitConfig",
    "LazyGitCurrentFile",
    "LazyGitFilter",
    "LazyGitFilterCurrentFile",
  },
  -- optional for floating window border decoration
  dependencies = {
    "nvim-lua/plenary.nvim",
  },
  -- setting the keybinding for LazyGit with 'keys' is recommended in
  -- order to load the plugin when the command is run for the first time
  keys = {
    { "<leader>lg", "<cmd>LazyGit<cr>", desc = "LazyGit" }
  }
}

Lazygit Usage

Lazygit resmi web sayfası üzerinden kullanıma ve tuş kombinasyonlarına ait gerekli bilgileri Github - Lazygit web sayfası üzerinden öğrenebilirsiniz.

Ayrıca typecraft_dev kanalı üzerinden lazygit anlatımını da bulabilirsiniz.

typecraft_dev - Lazygit

#bash #git #github #linux #turkish