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:
/usr/local/lib/redmine/extra/svn/Redmine.pm
ln -s /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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# /svn location for users PerlLoadModule Apache::Redmine <Location /svn> DAV svn SVNParentPath "/var/svn" Order deny,allow Deny from all Satisfy any PerlAccessHandler Apache::Authn::Redmine::access_handler PerlAuthenHandler Apache::Authn::Redmine::authen_handler AuthType Basic AuthName "Redmine SVN Repository" #read-only access <Limit GET PROPFIND OPTIONS REPORT> Require valid-user Allow from my_domain.com Allow from localhost Satisfy any </Limit> # write access <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept> ## Mysql-Settings RedmineDSN "DBI:mysql:database=redmine;host=localhost" RedmineDbUser "redmine" RedmineDbPass "my_password" </Location> |
4) Depo klasörünü oluşturup, özelliklerini düzenleyelim.
1 2 3 |
mkdir -p /var/svn chown -R www-data:www-data /var/svn chmod 0750 /var/svn |
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:
1 2 3 4 5 6 7 |
ruby /usr/local/lib/redmine/extra/svn/reposman.rb \ --redmine redmine.alan_adi.com \ --svn-dir /var/svn \ --owner www-data \ --url http://redmine.alan_adi.com/svn \ --verbose \ --key=API_anahtarı |
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.
1 |
*/10 * * * * ruby /usr/local/lib/redmine/extra/svn/reposman.rb --redmine redmine.alan_adi.com --svn-dir /var/svn --owner www-data --url http://redmine.alan_adi.com/svn --verbose --key=API_anahtarı |
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:
1 |
ln -s /etc/apache2/sites-available/svn /etc/apache2/sites-enabled/svn |
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
2 ping
Yorumu formunu geç ↓
Hasan Malatya
15 Haziran 2012, 20:45 (UTC 2) Bu yoruma bağlantı
Teşekkürler Çok faydalı oldu.
rulet
14 Ekim 2012, 19:27 (UTC 2) Bu yoruma bağlantı
Bu tür yazılarınızın devamını bekliyoruz.
Murat Özalp
16 Ekim 2012, 05:50 (UTC 2) Bu yoruma bağlantı
Teşekkür ederim.
Rıfat
02 Ocak 2013, 13:22 (UTC 2) Bu yoruma bağlantı
Teşekkürler. Bilgi işlem sistemi olarak ilgilendiğim bir iş olarak bu konu da son derece faydalı oldu. Çok teşekkürler.
SEO
06 Ocak 2013, 23:04 (UTC 2) Bu yoruma bağlantı
svn kurulumuyla ilgili en okunaklı işe yarar kaynak olmuş teşekkürler
ilgazpet
12 Şubat 2013, 11:35 (UTC 2) Bu yoruma bağlantı
evet bencede
thenakliye
29 Ocak 2013, 06:44 (UTC 2) Bu yoruma bağlantı
Teşekkürler Güzel YAzı :)
ilgazpet
12 Şubat 2013, 11:35 (UTC 2) Bu yoruma bağlantı
teşekkürler
faruk çankaya
23 Ağustos 2013, 19:49 (UTC 2) Bu yoruma bağlantı
Hocam çok teşekkür ederim işime yaradı makaleniz.
Murat Özalp
23 Ağustos 2013, 20:19 (UTC 2) Bu yoruma bağlantı
Sevindim. Ben de teşekkür ederim.
Web Tasarım
17 Ekim 2014, 23:40 (UTC 2) Bu yoruma bağlantı
Tesekkürler Gercekten okunur ve anlasılır bır makale Web Tasarım
Redmine 2.0 Kurulum - Murat Özalp
05 Haziran 2012, 11:01 (UTC 2) Bu yoruma bağlantı
[…] Subversion (SVN) kurulumu ve Redmine ile Entegrasyon […]
Go (GoLang) Programlama Dili Maceram - Murat Özalp
23 Ağustos 2015, 19:29 (UTC 2) Bu yoruma bağlantı
[…] 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 […]