Popular Categories

/home/ras0ir

there are no girls on the internet

Redmine ve karşıdaki (uzaktaki, remote, whatever) git depoları

Daha önce Redmine ile git deposu aynı makinedeyse bu git deposunu Redmine’a nasıl ekleyebileceğimizi yazmıştım. Bu yazıda ise Redmine ve git deposu farklı makinelerde ise depoyu Redmine üzerinde nasıl görüntüleyebileceğinizi anlatacağım. Redmine uzaktaki SVN deposunu “svn ls” yardımıyla görüntüleyebilirken git içerisinde “svn ls” muadili bir yapı olmadığı için zorunlu olarak deponun bir yansısını Redmine ile aynı sunucuda tutmanız gerekiyor.

Yansılayabilmek için yapmanız gerekenler ise oldukça basit. github, gitorious, gitolite veya gitosis kullanıyorsanız yapmanız gerekenler şunlar:

git clone --bare xyz@xyz.com:proje.git proje.git
cd project.git
git remote add origin xyz@xyz.com:proje.git
git fetch -v
git fetch origin
git reset --soft refs/remotes/origin/master

Yukarıdaki şekilde yansılama işini tamamladıktan sonra belirli aralıklarla fetch ve reset işlemlerini yapmanız gerekiyor. Bunu cron ile yapabilirsiniz:


*/5 * * * * cd /path/to/proje.git && git fetch origin && git reset --soft refs/remotes/origin/master

Bundan sonra Redmine tarafında yapmanız gereken tek işlem, Redmine içerisinde proje ayarlarında depo tanımlayıp depo yolu olarak “proje.git” deposunun tam dosya yolunu göstermek. Redmine bu şekilde deponun o anki halini görüntüleyebilecektir; ancak sonradan yaptığınız güncellemelerin de yansıması için şu şekilde bir cron tanımlamanız gerekecektir.


*/10 * * * * rake -f /path/to/redmine/Rakefile RAILS_ENV=production redmine:fetch_changesets > /dev/null 2>&1

Not: Eğer projede branch üzerinde değişiklik yapmışsanız (isim değişikliği, silmek vb.) bu branchların local branch olarak değerlendirilebilmesi için “git reset” işleminden önce şunu yapmanız gerekebiliyor (git clone yaparken –bare yerine –mirror kullanıldığında gerek kalmadığına dair rivayetler var):


git fetch origin +refs/heads/*:refs/heads/*

  • Mehmet Mungan

    Teşekkürler, ilk fırsatta deneyeceğim.