Pazartesi, Ocak 07, 2013

GIT Sürüm Kontrol Uygulaması

GIT Sürüm Kontrol Yapısı Oluşturmak

1. İlgili paketler sunucu ve istemci tarafında kurulur:

# yum install git gitweb git-gui gitk

2. GIT için ön tanımlar /etc/gitconfig ~/.gitconfig veya PROJE/.gitconfig dosyalarında tutulmaktadır. Dosyaları oluşturmak için;

# git config --global user.name "Ad SOYAD"

# git config --global user.email KULLANICI@ETKI_ALANI
# git config --global core.editor vim
# git config --global color.status auto
# git config --global color.brunch auto
# git config --global color.interactive auto
# git config --global color.diff auto

komutları kullanılabilir.Daha çok parametre için;

# git help config

komutu kullanılabilir. Dosyadaki parametreleri görüntilemek için;

# git config --list

komutu kullanılabilir.Sadece belli bir parametreyi görüntülemek için;

# git config user.name

komutu kullanılabilir.


3. GIT'i kullanmak için öncelikle mevcut projenin GIT sistemine dahil edilmesi gerekir. Bunun için projenin/dosyaların bulunduğu dizine gidilerek;

# git init

komutu çalıştırılır. Bu komut dizin içerisinde .git isminde gizli bir dizin oluşturur. Bundan sonra bu projedeki dosya ve dizinleri GIT'e eklemek gerekir. Bunun için;

# git add DOSYA_ADI
# git add *.txt
# git add .

gibi komutlar ile dosya GIT'e dahil edilir. Sürüm kontrolü yapılacak dosyalar eklendikten sonra, işlem onaylanır (COMMIT).

# git commit -m 'İlk sürüm'

GIT Sunucusu Hazırlamak

1. Daha önce hazırlanan GIT projesinin sunucu versiyonunu hazırlamak gerekir bunun için;

# git clone --bare PROJE_ADI PROJE_ADI.git

Bu komut çalışma dizini (.git) olmayan bir proje hazırlar. Bu işlemin ikinci adımda oluşturulan kullanıcı ile gerçekleştirilmesi uygun olacaktır.

2. Projelere erişmek için farklı kullanıcılar kullanılabileceği gibi tek bir kullanıcı (GITUSER) da kullanılabilir. Farklı kullanıcılar kullanılması durumunda, erişim izinleri ile ilgili düzenleme yapılması gerekiyor. Özellikle objects dizinine aynı gruptaki kullanıcılara yazma hakkı verilmesi gerekir. Bir diğer çözüm ise umask ile oluşturulacak dosyaların 002 hakkı ile oluşturulmasını sağlamaktır.
Burada GITUSER oluşturulacak ve sunucu erişimi bu kullanıcı ile ve SSH protokolü ile gerçekleştirilecektir.

# useradd gituser
# passwd gituser
# usermod -s /usr/bin/git-shell gituser

3. Kullanıcı ve proje oluşturulduktan sonra aşağıdaki örnek işlemler takip edilerek bir sunucu projesi hazırlanır.

NOT : config dosyasının daha önceden düzenlenmiş olması önerilmektedir. Böylece değişikliklerin kimin tarafından yapıldığı takibi gerçekleştirilebilir.

gituser$ mkdir prj01
gituser$ cd prj01
gituser/prj01$ echo test > t.txt
gituser/prj01$ git add .
gituser/prj01$ git commit -m 'ilk sürüm'
gituser/prj01$ cd ..
gituser$git clone --bare prj01 prj01.git


4. Başka bir bilgisayardan oluşturulan projenin değiştirilmesi için öncelikle projenin bir kolonunu almak gerekir;

user$ git clone gituser@SUNUCU_ADI:/PROJE_DIZINI/prj01.git
*****

user$ cd prj01
user/prj01$ echo test > t2.txt
user/prj01$ git add .
user/prj01$ git commit -m 'ilk sürüm t2.txt'
user/prj01$ git push

NOT : Son komut .git dizinindeki config dosyasında tanımlanan değerler kullanılarak işletilir. Aslında;
user/prj01$ git push origin master
komutu çalıştırılmaktadır.
origin : Projenin kaynağı
master : Projenin hangi dalı (branch) olduğunu belirtir.

GIT Sunucusuna SSH Üzerinden Anahtar İle Erişmek

1. Erişmek istediğimiz istemcide aşağıdaki komut çalıştırılarak bir anahtar çifti oluşturulur;

user$ ssh-keygent -t rsa -b 2048 -C "KULLANICI ADI"

Oluşan id_rsa ve id_rsa.pub dosyaları .ssh dizininde oluşur. Id_rsa dosyasının hakları;

user/.ssh$chmod 600 id_rsa

olacak şekilde düzenlenir.

2. Oluşturulan açık anahtar (id_rsa.pub) sunucuya kopyalanır;

user/.ssh$scp id_rsa.pub gituser@SUNUCU_ADI:/home/gituser/.ssh/

3. Kopyalanan açık anahtar .ssh dizininde bulunan/oluşturulan authorized_keys dosyasına kopyalanır.
user/.ssh$cat id_rsa.pub >> authorized_keys


4. 3. ve 4. adımlar yerine;

  user/.ssh$ ssh-copy-id gituser@SUNUCU

komutu da kullanılabilir.


5. Bu işlem sonrası sunucuya GITUSER kullanıcısı ile erişmek için şifre girilmesine gerek kalmayacaktır.