Git, açık ara en çok kullanılan sürüm kontrol sistemidir. Aslen Linus Torvalds tarafından oluşturulmuş, ücretsiz ve açık kaynaklı bir yazılımdır ve GPLv2 lisansı altında yayınlanmıştır. Github veya Gitlab gibi birçok çevrimiçi platform, geliştiricilerin git’i arka uç olarak kullanarak genel veya özel depolardaki kodlarındaki değişiklikleri kolayca depolamasına ve izlemesine olanak tanır.
Bu yazıda, git depolarımızın yedeklerini oluşturmamıza ve bunları yerel olarak veya bir platformdan diğerine yansıtmamıza izin veren, Go’da yazılmış güzel bir araç olan gickup hakkında konuşuyoruz.
Kurulum
Gickup açık kaynaklı bir yazılımdır: kodu Github’da barındırılır. Yazma anında, araç henüz herhangi bir Linux dağıtım deposunda mevcut değildir, bu nedenle, onu derlemek istemiyorsak, temelde onu kullanmanın iki yolu vardır:
- önceden derlenmiş dosyayı Github’dan indirerek
- özel Docker Görüntüsünü kullanarak
Bu seçenekleri keşfedelim.
Önceden derlenmiş dosyayı kullanma
0.10.17 yazılırken, gickup’ın mevcut en son sürümüdür; önceden derlenmiş dosyayı projenin Github’daki yayınlar sayfasından indirebiliriz. Tüm büyük işletim sistemleri ve en yaygın mimariler için önceden derlenmiş dosyalar mevcuttur. Verilerin bütünlüğünü doğrulamak için Linux sürümünü, *checksum.txt dosyasıyla birlikte indirmek istiyoruz. Gickup’ı makinemde çalıştırmak için “amd64” sürümünü indirmem gerekiyor:
$ curl --location --remote-name-all https://github.com/cooperspencer/gickup/releases/download/v0.10.17/{gickup_0.10.17_linux_amd64.tar.gz,gickup_0.10.17_checksums.txt}
Tarball sağlama toplamını doğrulamak için, iki dosyanın aynı dizinde olduğunu varsayarak (yukarıdaki komutu çalıştırmanın sonucu olarak), şunu çalıştırabiliriz:
$ sha256sum -c gickup_0.10.17_checksums.txt
Tarball’ın sağlama toplamı dosyada yazılana karşılık gelirse, aşağıdakine benzer bir mesaj görmemiz gerekir:
gickup_0.10.17_linux_amd64.tar.gz: OK
Çalıştırdığımız tarball’ı çıkarmak için:
$ tar -xvzf gickup_0.10.17_linux_amd64.tar.gz
Uygulamayı kullanmak için, çıkarılmış dosyayı tıpkı diğer yürütülebilir dosyalar gibi başlatmamız ve yapılandırma dosyasının yolunu (birazdan daha fazlası) ilk argüman olarak geçirmemiz yeterlidir:
$ ./gickup /path/to/conf.yml
Özelleştirilmiş Docker görüntüsünü kullanma
Önceden derlenmiş ikiliyi kullanmak istemiyorsak, alternatif olarak docker-compose.yml dosyasını indirebilir ve docker veya podman kullanarak aracı bir kapta çalıştırabiliriz. Dosyayı doğrudan komut satırından indirebiliriz:
$ curl --remote-name https://raw.githubusercontent.com/cooperspencer/gickup/main/docker-compose.yml
Bir sonraki adım, bu durumda conf.yml olarak adlandırılması gereken yapılandırma dosyasını az önce indirdiğimiz dosyanın aynı dizinine yerleştirmektir. Yedeklemeyi başlatmak için aşağıdakileri çalıştırmamız yeterlidir:
$ sudo docker-compose up
Veya docker yerine podman kullanılıyorsa:
$ podman-compose up
Docker kullanıyorsanız ve kullanıcınız “docker” grubundaysa sudo; bunun yerine podman, root ayrıcalıkları olmadan çalışabilir.
Gickup’ı çalıştırmak için kullanabileceğimiz talimatlar bunlar. Aracın ne yapması gerektiğini ve nasıl yapması gerektiğini yukarıda bahsettiğimiz konfigürasyon dosyası üzerinden belirtebiliriz. Kullanımına bir örnek görelim.
Hızlı yapılandırma dosyası
Gickup, yedeklerimizin kaynaklarını ve hedeflerini ve diğer yararlı eylemleri tanımladığımız bir YAML yapılandırma dosyasından yararlanır. Bazı örnekler verelim. Bu eğitimin hatırına tüm depolarımı Github’dan yerel makineme indireceğim:
source: github: - token: <github-token> username: egdoc destination: local: - path: ~/Downloads/gitbackup structured: true zip: true keep: 5 bare: true
Yukarıdaki örnekte, kaynak sözlükteki github anahtarını kullanarak Github depolarımı yedeklemek istediğimi belirttim. Hem genel hem de özel depoları yedeklemek istediğim için, belirteç anahtarının argümanı olarak bir belirteç sağlamam gerekiyordu. Bir Github belirteci oluşturmak oldukça kolaydır: Github profilinizde “Ayarlar -> Geliştirici ayarları -> Kişisel erişim belirteçleri”ne gitmeniz, ayrıntılı veya kişisel bir belirteç seçmeniz ve ona gereken minimum ayrıcalık kümesini vermeniz yeterlidir. . Bu durumda, aşağıdaki resimde gösterildiği gibi “repo” kutusunu işaretlemeniz yeterli olacaktır:
![Creating a personal token with "repo" privileges on Github](https://linuxconfig.org/wp-content/uploads/2023/06/01-how-to-backup-your-git-repositories-with-gitckup.webp)
Once the token is generated, keep note of it, since you will not be able to visualize it in the future.
Yapılandırma dosyasında kullandığım bir sonraki anahtar, klonlama işlemi için kullanıcıyı belirtmek üzere kullanıcı adıdır. Bunun yerine hedef sözlüğü ile yedekleme hedefini belirledim. Bu durumda, depoların yerel olarak klonlanmasını istediğim için, yerel bir yol belirtmek için yol anahtarını ve kaynak web sitesini ve kullanıcı adını yansıtan bir dizin ağacındaki depoları gickup klonlamak için yapılandırılmış anahtarı kullandım. Bu durumda Github’da barındırılan depolar ~/Downloads/gitbackup/github.com/egdoc dizinine kopyalanacaktır.
Zip anahtarı, klonlanan her deponun sıkıştırılmasını istediğimizi belirtmek için kullanılır; bunun yerine, kaç adet “sıkıştırılmış” yedeklemenin saklanması gerektiğini belirtmek için kullanılır. Son olarak çıplak anahtarın değerini true olarak ayarlayarak depoların “bare” olarak klonlanmasını istediğimizi belirttim.
Havuzları bir platformdan diğerine yansıtma
Önceki örnekte Github’da barındırılan tüm depolarımı yerel makinemde klonladım. Bununla birlikte, gickup kullanarak depoları doğrudan bir platformdan diğerine klonlayabiliriz. Tüm depoları Gitlab’a yansıtmak istediğimi varsayalım. İşte yazabileceklerim:
source: github: - token: <github-token> username: egdoc destination: gitlab: - token: <gitlab-token> username: egdoc
Gördüğünüz tüm örneklerde, tam platform URL’sini değil, yalnızca platform adını (ör. “github” veya “gitlab”) belirttim. Bu mümkündür çünkü gickup bu platformlar için yerleşik desteğe sahiptir. Kaynak olarak desteklenen platformlar şunlardır:
- Github
- Gitea
- Gogs
- Gitlab
- Bitbucket
- Onedev
- Sourcehut
Ayrıca yukarıdaki listede yer almayan platformlar hakkında bilgi belirtmek için “Any” tuşu kullanılabilir.
Bunun yerine hedef olarak desteklenen platformlar şunlardır:
- Gitea
- Gogs
- Gitlab
- Local
Bu eğitimde, git depolarımızı yerel olarak veya bir web platformundan diğerine yansıtmak için kullanabileceğimiz, Go’da yazılmış güzel bir açık kaynak araç olan gickup hakkında konuştuk. Her iki sonucun da nasıl elde edileceğine dair iki küçük örnek verdik; proje hakkında daha fazla bilgi edinmek için resmi belgelere göz atabilirsiniz.
Yazının orijinalini buradan okuyabilirsiniz.
![](/wp-content/uploads/2022/03/Huseyin-guc.jpeg)
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.