«

»

Haz 05 2012

Subversion (SVN) kurulumu ve Redmine ile Entegrasyon

Genel

Sürüm takip sistemi (version/revision control system ~ VCS), özellikle ekip ile yazılım geliştirirken, kodların ortak bir alanda tutulması, herkesin aynı kodlar üzerinde güncelleme yapabilmesi, güncellemeler sonrasında otomatik olarak yeni sürümler oluşturulması ve istendiğinde geri dönülebilmesi, vb. amaçlarla kullanılan sistemlerdir. Profesyonel yazılım geliştirme ekiplerinde işe gireceklere ilk sorulan sorulardan birisi, “hangi sürüm takip sistemlerini kullandın?” şeklindedir. Pardus ve Google’dan biliyorum. Çünkü ortak yazılım geliştirme oldukça sorunlu bir konudur. Bu sorunları en aza indirgemek için de bahse konu sistemler kullanılmaktadır.

En yaygın kullanılan açık kaynaklı (özgür) sistemler, alfabetik olarak, şöyle sıralanabilir:

  • Bazaar
  • CVS
  • Git
  • Mercurial
  • Subversion (SVN)

Bu sistemlerin genelde bir sunucu tarafı, bir de istemci tarafı vardır. İstemci tarafı herhangi bir işletim sistemi olabilir. Basit bir GUI üzerinden veya konsol komutları ile herhangi bir klasörü sunucuya bağlayabilir, yukarıda sayılan özellikleri kullanabilirsiniz. Sunucu tarafı için de genelde Linux kullanılmakla beraber, farklı işletim sistemlerinde çalışanları da bulunmaktadır.

Bu yazıda, Ubuntu üzerinde Subversion kurulumu ve Redmine böcek takip sistemi ile entegrasyonundan bahsedilecektir. Redmine kurulumu için, buradaki yazıyı okuyabilirsiniz. Neden Subversion seçtiğimize gelince… Aslında ilk hedefim Bazaar’dı. Ancak daha önce hiç sürüm takip sistemi kullanmadığım için, Bazaar’ın mantığını anlayamadım. Dağıtık modelde çalışıyormuş. Merkezi sistemlere göre biraz daha farklı bir mantığı var. Ben de en popüler olanlarından Subversion’a karar verdim. Bu arada; Redmine yukarıdakilerin tamamı ile entegre çalışabiliyor.

Redmine ile SVN entegre edildiğinde nasıl birşey oluyor? diyenler için burada çok kısa bir videoda özetlenmiş.

Kurulum

1) Gerekli paketleri kur:
apt-get install subversion libapache2-svn libapache2-mod-perl2

Bu baketler kurulduğunda, SVN doğrudan çalışmaya hazır haldedir. svnadmin komutu ile, yeni bir depo oluşturulabilir ve kullanmaya başlanabilir. Ancak bizim ihtiyacımız olan şey, kendi başına çalışan bir SVN değil, Redmine ile entegre çalışan bir SVN kurmak. Bu bağlamda, http üzerinden çalışan bir SVN yapılandıracağız. Redmine ile entegre olabilmesi için, Redmine yanında gelen bir betikten faydalanacağız. Bu durumda; svn’e oturum açmak için, MySQL üzerinde kayıtlı olan Redmine kullanıcı hesapları kullanılacak. Ayrıca; Redmine’da oluşturulan her bir proje için, otomatik olarak bir SVN deposu oluşturulacak ve hem Redmine içerisinden hem de SVN GUI istemcileri ile bu depoya ulaşılabilir olacak.

2) Redmine perl betiğini, Apache modülleri arasına ekle. ln komutu ile sembolik link oluşturulması yeterlidir.  Bahsi geçen betik farklı biryerde ise, doğru şekilde yolunu yaz:
ln -s
/usr/local/lib/redmine/extra/svn/Redmine.pm /usr/lib/perl5/Apache/Redmine.pm

3) SVN deposunun HTTP üzerinden erişilebilmesi ve Redmine’da tanımlı olan kullanıcı hesaplarının Apache üzerinden erişilebilir olması için, Apache’de gerekli yapılandırmayı yapalım. Öncelikle; /etc/apache2/sites-available/svn adında bir dosya oluşturup, içine şunları ekleyelim:

4) Depo klasörünü oluşturup, özelliklerini düzenleyelim.

5) Redmine’a oturup aç. Yönetim -> Ayarlar -> Depolar başlığına gel. “Depo yönetimi için WS’yi etkinleştir” seçeneğini işaretle. “Anahtar oluştur” seçeneğine tıkla. Oluşturulan API anahtarını bir yere kaydet. “Kaydet” seçeneği ileyapılandırmayı tamamla.

6) Redmine’de kayıtlı projeler için otomatik olarak SVN deposu oluşturulması için aşağıdaki komutu -yeşil kısımları kafana göre düzenleyerek- kullan:

7) Redmine’a yeni eklenen projeler için de SVN deposunun otomatik olarak oluşturulabilmesi için, üstteki komutun cron’a eklenmesi gerekiyor. Çok sık çalıştırmaya gerek yok, 10 dakikada bir uygundur mesela. crontab -e komutu ile cron arabirimini açıp, en alta aşağıdaki komutu ekle.

8) Apache üzerinde oluşturulan /svn sanal klasörü ile ilgili yapılandırmanın devreye alınabilmesi için, aşağıdaki komutla aktif siteler kısmına sembolik link ekle:

9) Apache’ye restart et:
/etc/init.d/apache2 restart

 

Uygulama

Yukarıdaki adımlarda sorun olmadıysa, önemli işlemler buarad bitiyor. Bundan sonra, Redmine’daki projelere bir kullanıcıyı istediğiniz bir rolle atayın. Örneğin, “otomasyon” adında bir proje olsun. Yeni oluşturulan projelerin deposunun 10 dakikada bir oluşturulduğunu unutmayın.

Üstteki örnek için, depo dosyalarına web üzerinden erişmek isterseniz, şu şekilde erişebilirsiniz: http://redmine.alan_adi.com/svn/otomasyon

Üstteki web alanına erişim için, Redmine’de otomasyon projesine atanmış olan bir kulalnıcının hesap bilgilerini girmek gerekecektir.

İsterseniz, doğrudna Redmine içerisinde proje sayfasına gidip, “Depo” ksımından projeye bağlanmış olan SVN deposundaki verilere ulaşabilir, değişiklikleri, farkları  ve revizyon numaralarını inceleyebilirsiniz.

SVN istemci yazılımı ile SVN sunucusuna bağlanmak isterseniz; herhangi bir SVN istemcisini (TortoiseSVN tavsiye edilir. Türkçe dil desteği, Windows Explorer ile bütünleşme özelliği, çoklu platform desteği var. ) bilgisayarınıza kurduktan sonra; SVN sunucusuna bağlanıp, doğrudan SVN üzerinden çalışmaya başlayabilirsiniz.

Projenizi özel yapmak (parolası olmayanlar göremesin) isterseniz, Redmine üzerinden projenin ayar sayfasında “Genel” seçeneğini pasifleştirebilirsiniz.

Normalde SVN sistemi; http, ssl, svn, svn+ssl gibi protokolleri desteklemektedir. Mesela isterseniz, svnserve komutu ile, Apache’ye gerek kalmadan SVN sunucusunu kendi kendine de daemon modda çalıştırıp SVN protokolü üzerinden hizmet vermesini sağlayabilirsiniz. Ancak bu durumda SVN’in Redmine kullanıcıları ile yetkilendirme yapması ve güvenlik duvarı kullanan sietemlerde erişim sıkıntıları olabilecektir. Yukarıda yapılan kurulumda HTTP kullanıldığı ve oturum açma özelliği kullanıldığı için hem güvenli hem de Redmine ile etkileşimli bir sistem kurulmuştur.

Bilgilerin büyük kısmını aşağıdaki kaynaktan aldım. Denedim, çalıştı ve yazdım. Umarım birilerinin işine yarar.

Kaynaklar

  1. https://grandslam90.wordpress.com/2012/05/22/howto-redmine-2-0-0-passenger-subversion-repositories-in-ubuntu-12-04/

2 ping

Yorumu formunu geç

  1. Hasan Malatya

    Teşekkürler Çok faydalı oldu.

  2. rulet

    Bu tür yazılarınızın devamını bekliyoruz.

    1. Murat Özalp

      Teşekkür ederim.

  3. Rıfat

    Teşekkürler. Bilgi işlem sistemi olarak ilgilendiğim bir iş olarak bu konu da son derece faydalı oldu. Çok teşekkürler.

  4. SEO

    svn kurulumuyla ilgili en okunaklı işe yarar kaynak olmuş teşekkürler

    1. ilgazpet

      evet bencede

  5. thenakliye

    Teşekkürler Güzel YAzı :)

  6. ilgazpet

    teşekkürler

  7. faruk çankaya

    Hocam çok teşekkür ederim işime yaradı makaleniz.

    1. Murat Özalp

      Sevindim. Ben de teşekkür ederim.

  8. Web Tasarım

    Tesekkürler Gercekten okunur ve anlasılır bır makale Web Tasarım

  1. Redmine 2.0 Kurulum - Murat Özalp

    […] Subversion (SVN) kurulumu ve Redmine ile Entegrasyon […]

  2. Go (GoLang) Programlama Dili Maceram - Murat Özalp

    […] proje yapmamıştım. Sürüm takibi adına tek kullandığım, az miktarda SVN oldu. İşyerinde Redmine ve Subversion’u entegre edip kodları burada tutmak için çalışmalar yapmıştık, çok ta güzel olmuştu. Hala da […]

Yorumlara kapatılmıştır.

Bad Behavior has blocked 14 access attempts in the last 7 days.