https://github.com/tv42/gitosis
4 Eylül 2017 Pazartesi
Git server ve gitosis.
https://github.com/tv42/gitosis
git init ve git init --bare arasındaki fark
Bu yazımda genel olarak aralarındaki farkın anlaşılmakta zorlanıldığı iki git komutunu açıklamaya çalışacağım.
git init : Bu komut bir dizini çalışma dizini haline getirip bu dizinde bir git repository'si oluşturur.Bu repository sayesinde yerelde yapmış olduğunuz commit'leri takip edebilir,bir repository server'a bu commitleri push'layabilirsiniz.Komutu verdiğiniz dizin içerisinde .git isimli bir dizin oluşur.Bu dizin içerisinde repository'e ait config ve log dosyaları bulunur.Server'a push yaparken bu dosyalar kullanılır.Diff vb. komutlar bu dosyalar kullanılarak çalıştırılır.
git init --bare : Bu komut aynı diğer komut gibi bir git repository'si oluşturur. İlk farkı repository'nin oluştuğu dizin bir çalışma dizini değildir yani üzerinde değişiklikler yapılmaz(yapılabilir ancak yapılmamalı).Yine diğer komut gibi config dosyalarını oluşturur ancak diğerindeki gibi .git isimli bir dizin oluşturmaz.B
u dosyalar direkt dizin içerisinde oluşturulur.Bu komutla oluşturulan repository'lere pull ve push işlemleri ile değişiklikler yapılır.Doğrudan dizin üzerinde değişiklikler yapılmaz.Bu özelliklerden anlaşılabileceği üzere komutun amacı, sunucuda merkezi git repository'si oluşturmaktır.
Konuyu bir örnekle netleştirmek gerekirse ;
ilk komut gitkraken ya da source tree vb. gibi bir programda lokal git reposu oluşturduğunuzda çalışır.
ikinci komut ise github ya da gitlab vb. gibi bir uzak repository sağlayıcısında bir repository oluşturduğunuzda bu sağlayıcıların server'larında çalışır.
Aşağıdaki görsel ile konunun daha da net anlaşılacağını umuyorum ;
git init : Bu komut bir dizini çalışma dizini haline getirip bu dizinde bir git repository'si oluşturur.Bu repository sayesinde yerelde yapmış olduğunuz commit'leri takip edebilir,bir repository server'a bu commitleri push'layabilirsiniz.Komutu verdiğiniz dizin içerisinde .git isimli bir dizin oluşur.Bu dizin içerisinde repository'e ait config ve log dosyaları bulunur.Server'a push yaparken bu dosyalar kullanılır.Diff vb. komutlar bu dosyalar kullanılarak çalıştırılır.
git init --bare : Bu komut aynı diğer komut gibi bir git repository'si oluşturur. İlk farkı repository'nin oluştuğu dizin bir çalışma dizini değildir yani üzerinde değişiklikler yapılmaz(yapılabilir ancak yapılmamalı).Yine diğer komut gibi config dosyalarını oluşturur ancak diğerindeki gibi .git isimli bir dizin oluşturmaz.B
u dosyalar direkt dizin içerisinde oluşturulur.Bu komutla oluşturulan repository'lere pull ve push işlemleri ile değişiklikler yapılır.Doğrudan dizin üzerinde değişiklikler yapılmaz.Bu özelliklerden anlaşılabileceği üzere komutun amacı, sunucuda merkezi git repository'si oluşturmaktır.
Konuyu bir örnekle netleştirmek gerekirse ;
ilk komut gitkraken ya da source tree vb. gibi bir programda lokal git reposu oluşturduğunuzda çalışır.
ikinci komut ise github ya da gitlab vb. gibi bir uzak repository sağlayıcısında bir repository oluşturduğunuzda bu sağlayıcıların server'larında çalışır.
Aşağıdaki görsel ile konunun daha da net anlaşılacağını umuyorum ;
4 Haziran 2017 Pazar
git 101 ve Temel git komutları(GitHub 2)
Bir önceki yazımda açıklamaya çalıştığım VKS mimarilerini uygulayan birden çok yazılım projesi bulunmakta.Bunlardan en çok kullanılanı,Linus Torvalds'ın Linux çekirdeğinin geliştirilmesini daha sistematik hale getirmek amacıyla başlattığı git projesidir.git Dağıtık Versiyon Kontrol Sistemi mimarisini kullanır.Dağıtık VKS mimarisinin temel özelliği,projeye ait verilerin geliştirici bilgisayarında da tutulabiliyor olmasıydı.git kullanabilmek için bir sunucuya ihtiyaç duyulmaz.Yani https://git-scm.com/ linkinden bilgisayara indirilidiğinde lokal kullanıma hazırdır.Linkteki program komut satırından çalışmakta olup görsel arayüzle çalışan alternatif programlarda bulunmaktadır.(GitKraken,SourceTree vb.).
Repository :
Projenin tutulduğu dizin.Lokalde de Uzaktada olabilir.
Commit :
Bir projede yapılan değişikliklerin tutulduğu veri tabanı kaydıdır.
Örnek bir commit ;
Yukarıdan aşağıya ;
1-hash-code(Bu commit'i diğerlerinden ayıran kimlik kodu)
2-commit'i yapan kişiye dair kimlik ve tarih bilgisi
3-commit adı
4-önceki commit'le oluşmuş farklar
Lokalde proje oluşturma ve commit yapma örneği;
Repository :
Projenin tutulduğu dizin.Lokalde de Uzaktada olabilir.
Commit :
Bir projede yapılan değişikliklerin tutulduğu veri tabanı kaydıdır.
Örnek bir commit ;
Yukarıdan aşağıya ;
1-hash-code(Bu commit'i diğerlerinden ayıran kimlik kodu)
2-commit'i yapan kişiye dair kimlik ve tarih bilgisi
3-commit adı
4-önceki commit'le oluşmuş farklar
Lokalde proje oluşturma ve commit yapma örneği;
rfm@hplinux ~ $ git init testproje #proje oluşturulduUzak repository'e bağlanma ve commit yapma örneği;
Initialized empty Git repository in /home/rfm/testproje/.git/
rfm@hplinux ~ $ cd testproje/ #projenin bulunduğu dizine gelindi
rfm@hplinux ~/testproje $ micro test.py #projeye yeni bir dosya eklendi
rfm@hplinux ~/testproje $ git add . #değişiklikler önbelleğe alındı
rfm@hplinux ~/testproje $ git commit -m"İlk commit" #değişiklikler commit edildi
[master (root-commit) 63889ad] İlk commit
1 file changed, 2 insertions(+)
create mode 100644 test.py
rfm@hplinux ~ $ git clone https://github.com/rfum/blog #github üzerinde var olan bir repoyu lokale taşıdı
rfm@hplinux ~ $ cd blog/ #projenin bulunduğu dizine gelindi
rfm@hplinux ~/blog $ micro test.py #projeye yeni bir dosya eklendi
rfm@hplinux ~/blog $ git add . #değişiklikler önbelleğe alındı
rfm@hplinux ~/blog $ git commit -m"İlk commit" #değişiklikler commit edildi
rfm@hplinux ~/blog $ git push #değişiklikler uzak repo'ya gönderildi
Versiyon Kontrol Sistemi Kavramı(GitHub 1)
Bir yazılım projesinde yapılan değişiklikleri sistematik hale getirmeye yarayan sistemlere Versiyon Kontrol Sistemi(VersionControlSystem) denir.3 farklı Versiyon Kontrol Sistemi mimarisi bulunur.
1-Yerel Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,değişimi yapan kişinin bilgisayarında tutulduğu sistemlerdir.Varsayılan haliyle ağ üzerinden erişime kapalıdır.Bilgisayarda çıkacak donanımsal bir problemde eğer proje ve veritabanı yedeklenmemişse proje tamamen kaybedilebilir.
2-Merkezi Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,merkezi bir bilgisayarda yani bir sunucuda tutulduğu sistemdir.Sunucuda çıkacak donanımsal bir problemde eğer proje ve veritabanı yedeklenmemişse proje tamamen kaybedilebilir.
3-Dağıtık Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,merkezi bir bilgisayarda ve geliştirenlerin bilgisayarında saklandığı sistemlerdir.Sunucuda problem çıkması durumunda projeye,geliştirici bilgisayarlarındaki verilerden bilgisayarda problem çıkması durumundaysa sunucudaki verilerden devam edilebilir.
Biraz daha ayrıntılı anlatım için :
1-Yerel Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,değişimi yapan kişinin bilgisayarında tutulduğu sistemlerdir.Varsayılan haliyle ağ üzerinden erişime kapalıdır.Bilgisayarda çıkacak donanımsal bir problemde eğer proje ve veritabanı yedeklenmemişse proje tamamen kaybedilebilir.
2-Merkezi Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,merkezi bir bilgisayarda yani bir sunucuda tutulduğu sistemdir.Sunucuda çıkacak donanımsal bir problemde eğer proje ve veritabanı yedeklenmemişse proje tamamen kaybedilebilir.
3-Dağıtık Versiyon Kontrol Sistemi : Proje üzerinde yapılan değişiklikleri içeren veritabanının ve kaynak kodların,merkezi bir bilgisayarda ve geliştirenlerin bilgisayarında saklandığı sistemlerdir.Sunucuda problem çıkması durumunda projeye,geliştirici bilgisayarlarındaki verilerden bilgisayarda problem çıkması durumundaysa sunucudaki verilerden devam edilebilir.
Biraz daha ayrıntılı anlatım için :
3 Kasım 2016 Perşembe
raspberry pi 3 wifi ssh erişim
Raspberry pi 3 kartını ağ üzerinden ssh yarıdmıyla terminal üzerinden komutlar vererek kullanmak mümkündür.
ilk olarak ssh'in başarılı olarak kurulup kurulmadığını öğrenmek için bir terminale;
Herhangi bir GNU/Linux işletim sisteminden karta bağlanmak için terminale;
Windows işletim sisteminden karta bağlanmak için PuTTY programını bilgisyarınıza indirin hostname alanına raspberry pi kartının ip adresini yazın ve "connection type" seçeneklerinden SSH 'i seçin.Şifrenizi girdikten sonra bağlantınız kurulmuştur.
ilk olarak ssh'in başarılı olarak kurulup kurulmadığını öğrenmek için bir terminale;
komutunu yazın.Dönen sonuç eğer "active" ise ssh service sistemde başarı ile çalışmaktadır.ssh 'e ağ üzerinden erişim sağlanacağı için kartın ip adresini bilmek gerekir kartın ip adresini öğrenmek için terminale ;
pi@raspberrypi:~ $ systemctl is-active ssh
pi@raspberrypi:~ $ ifconfig -ayazın ve çıkan sonuçlardan wlan0 arayüzü için olan "inet addr:" karşısındaki 4 bölümlü sayı kartın ip adresidir bu adresi biryere not alın ya da ezberleyin.Kartın ssh portunun açık olmadan karta erişmek mümkün olmayacağından terminale ;
komutunu yazın eğer "SSH-2.0-OpenSSH_6.7p1 Raspbian-5+deb8u3" benzeri içerisinde openssh metni geçen bir dönüt alıyorsanız ssh portu iletişime geçmek için müsaittir.
pi@raspberrypi:~ $ nc <kartın ip adresi ile değiştirin> 22
Herhangi bir GNU/Linux işletim sisteminden karta bağlanmak için terminale;
[rfm@localhost ~]$ ssh pi@<raspinin ip adresi>komutunu yazın ve şifreye -eğer kendiniz başka şifre atamadıysanız- raspberry yazın.İşlem bu kadar buradan istediğiniz gibi raspberry pi kartınıza komutlar verebilirsiniz.
Windows işletim sisteminden karta bağlanmak için PuTTY programını bilgisyarınıza indirin hostname alanına raspberry pi kartının ip adresini yazın ve "connection type" seçeneklerinden SSH 'i seçin.Şifrenizi girdikten sonra bağlantınız kurulmuştur.
Kaydol:
Kayıtlar (Atom)