Gitolite ile Git’e kullanıcı eklemek

Eklenecek kullanıcının public_key’i alınır. Bunun için kullanıcın bilgisayarında, geliştirme için kullanılan kullanıcı hesabı ile login olunur ve aşağıdaki komut çalıştırılır.

ali[email protected]:~/ ssh-keygen -t rsa -C “[email protected]

bu komut ile kullanıcın home klasöründe bulunan .ssh klasörü altında “[email protected]” isimli bir public key oluşur. Bu public key dosyası gitolite yönetici olan kullanıcıya iletilir. gitolite yöneticisi olan kullanıcı, bu public key dosyasını “gitolite-admin/keys” klasörüne yerleştirir ve gitolite deposuna ekler

[email protected]:~/gitolite-admin/git add keydir/[email protected]

Sonrasında eklenecek kullanıcı için git kullanıcısı oluşturulur:

[email protected]:~/gitolite-admin/git config –global user.name “ali”
[email protected]:~/gitolite-admin/git config –global user.email “[email protected]

bu işlemden sonra “gitolite-admin/conf/” klasöründe bulunan “gitolite.conf” dosyasını düzenleyerek “ali” kullanıcısının geliştireceği proje deposunu ve erişim yetkilerini belirleyebilir:

[email protected]:~/gitolite-admin/nano conf/gitolite.conf

@administrators = git-admin
@developers       = ali

repo    gitolite-admin
RW+     =   @administrators

repo    project
RW+      =   @administrators
RW        =   @developers
R            =   hasan

repo    testing
RW+     =   @all

Şimdi bu dosya içeriğini satır satır inceleyelim.

ilk iki satırda “@” işareti ile başlayan tanımlamalar “alias” tanımlamalarıdır. Alias tanımlamaları bir projede çalışacak birden fazla aynı erişim yetkisi olan kullanıcıları tek tek her projeye eklemek yerine, tanımlanan alias ile ortak projelerde ortak yetkileri olan kullanıcıları guruplayarak eklemeyi sağlar.

repo” ile başlayan satırlar proje depolarını belirler. Yeni bir depo oluşturmak için yeni bir satıra:

repo     yeniproje

satırı eklemek yeterlidir. Her repo’nun kendine özel erişim yetkileri olabilir erişim yetkileri şu şekilde tanımlanır:

  • R    = Sadece okuma yetkisi
  • RW    = Mevcut ref push ya da yeni ref oluşturma
  • RW+    = Okuma, yazma ve “push -f” ya da ref silme yetkisi (i.e., destroy information)
  • – (the minus sign)    = Erişim yasaklama (deny access)

Yukarıdaki örnekte “R” yazan satırda da görülebileceği üzere herhangi bir gruba dahil olması gerekmeyen kullanıcıları doğrudan kullanıcı adı ile ekleyebilirsiniz. “gitolite.conf” dosyasında gerekli düzenlemeler yapıldıktan sonra eklenen key dosyaları ve değiştirlen conf dosyası giotsis-admin (bu örnekte veli isimli kullanıcı) tarafından  yerel depoya gönderilip uzak depoya itelenir.

[email protected]:~/gitolite-admin/git commit -a -m “yeni depo ve kullanıcı eklendi”

[master a5f1bad] yeni depo ve kullanıcı eklendi
1 file changed, 3 insertions(+), 4 deletions(-)

[email protected]:~/gitolite-admin/git push

Enter passphrase for key ‘/home/veli/.ssh/id_rsa’:
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 384 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To [email protected]:gitolite-admin
ec31c2f..a5f1bad  master -> master

Bu şekilde hem kullanıcı hem de repository oluşturmuş oldun. Aynı zamanda repository’e kullanıcıları tanımlayıp yetkilerini verdik.