Popular Categories

/home/ras0ir

there are no girls on the internet

gitolite ve redmine

Bir önceki yazımda git deposu yansılamaktan bahsetmiştim. Bu yazımda gitolite üzerinden yönetilen bir git deposuna Redmine üzerinden nasıl ulaşılacağını anlatacağım.

Evvela Redmine uzaktaki bir git deposunu okuyamıyor. Bu bir dezavantaj değil tabii ki, git’in yapısıyla ilgili bir mesele. Dolayısıyla Redmine’a doğrudan github’daki (ya da herhangi bir git servisi) clone adresini vermeniz mümkün değil. Redmine’ın çalıştığı makinede bir git yansısı tutarak bunu halledebilirsiniz.

Bu yazım git deposu ile Redmine’ın aynı sunucuda olduğu kurulumlar için geçerli olacak haliyle.

Evvela sorunu bir tanımlayalım. Yerelde gitolite tarafından oluşturulmuş depoyu Redmine’a eklediğinizde depo içeriğini görüntülemek istediğinizde depo içeriği yerine havanızı alıyorsunuz (404). Redmine her ne kadar dosya izinlerine ilişkin bir hata vermese bile (rails’ın production veya development logları dahil) sorunun dosya izinlerinden kaynaklandığı anlaşılıyor.

Nedeni ise gitolite belgelendirmesinde açıkça yazıyor zaten. gitolite öntanımlı umask olarak 0077 kullanıyor. Haliyle gitolite kullanıcısı hariç kimse depo içeriğine ulaşamıyor.

Bu aşamada bu sıkıntıyı gidermek için 2 yöntem bulunuyor:

1. gitolite tarafından sunulan deponun, redmine’ı çalıştıran kullanıcı tarafından yansılanması. Eğer güvenlik konusunda endişeleriniz varsa bu yöntemi kullanabilirsiniz.

2. Diğer yöntem ise benim tercih ettiğim yöntem. Disk üzerinde ikinci bir depo yansısı tutmak yerine gitolite’ın öntanımlı umask’ını 0022 yapmak.

İkinci yöntem üzerinden devam ettiğimizde yapmamız gereken işlemler oldukça basit.
Gitolite’ı kurduğunuzda (ister dağıtımınızın paket deposundan, ister gitolite’ın git deposundan) .gitolite.rc isimli dosyamızı düzeltmemiz gerekiyor. .gitolite.rc gitolite kullanıcısının ev dizininde tutuluyor. (Red Hat türevlerinde EPEL’den gitolite kurmuşsanız eğer /var/lib/gitolite dizini altında bulunuyor bu dosya)

İlgili dosyayı açıp şu değişikliği yapmanız yeni depolar için yeterli olacaktır:


$REPO_UMASK = 0022;

Yaptığımız bu değişiklik tahmin edebileceğiniz üzere daha önce oluşturduğunuz depoların izinlerine etki etmeyecektir. Burada eski depoların izinlerini değiştirmek için bir manuel bir işlem yapmamız gerekecek:


find depo_ismi.git -type d -exec chmod 755 {} \;
find depo_ismi.git -type f -exec chmod 644 {} \;
chmod a+x depo_ismi.git/hooks/*

Bu şekilde vermiş eski depoların da umask’ını 0022′ye çekmiş oluyorsunuz. Artık Redmine üzerinden depoyu ekleyebilir ve içeriğini görüntüleyebilirsiniz.

Son olarak da eğer commitlerinizin otomatik olarak Redmine’ı tetiklemesini istiyorsanız yapmanız gereken işlem basit. post-receive betiğinizin sonuna şunu ekleseniz yeterli.


curl (ya da wget) "http(s)://redmine.adresi/sys/fetch_changesets?key=redmine_depo_api_anahtarı"

Eğer custom bir SSL sertifikası kullanıyorsanız curl sertifika hakkında sızlanacaktır. Bunu aşmak için curl’e parametre olarak -k verebilirsiniz:


curl -k "https://redmine.adresi/sys/fetch_changesets?key=api_anahtarı"

API anahtarınızı Redmine -> Yönetim -> Ayarlar -> Depo kısmından oluşturabilir/öğrenebilirsiniz.

One thought on “gitolite ve redmine”

Leave a Reply

E-posta hesabınız yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir