Versiyon Kontrol Sistemi [Kurulum]

Herhangi bir projede birden fazla kişi çalıştınız mı? Eğer cevabınız hayırsa bence yol yakınken bu yazıya bir göz atın derim. Eğer evetse ve versiyon kontrol sistemini hiç kullanmadıysanız bu yazının sizin için çok faydalı olacağına inanıyorum.

Ekip olarak bir oyun geliştiriyorsanız, aynı anda çalışabilmenin önemli çok büyük. Bu çok iyi bir planlamanın yanı sıra yazılımsal olarak da bir takım bilgiler gerektiriyor. Herşeyi planladığımızı ve projeyi geliştirmeye başladığımızı varsayarak işin yazılımsal tarafına geçiyorum.

Versiyon Kontrol Sistemi Nedir?

Versiyon kontrol sistemi, bir veya birden fazla dosya üzerinde yapılan değişikleri kaydeden, bunları takip ve senkronize eden sistemlerdir. Bu sayede projenizin geçmişe ait olan bir sürümüne erişebilir, varsa  değişiklikleri karşılaştırabilir, değişiklikleri kimin ve ne zaman yaptığını görebilir, aynı zamanda bunları tüm geliştiriciler ile senkron bir şekilde gerçekleştirebilirsiniz. Aslında bu sistem de kendi içerisinde farklı dallara ayrılıyor fakat biz Unreal Engine‘in desteklediği Merkezi Versiyon Kontrol Sistemini(Perforce,Subversion) kullanacağız. Kısaca anlatmak gerekirse bu sistem geliştirilcierin, kullanacakları dosyayayı sunucuya bildirmesi ve sunucunun bu bilgiyi tüm istemcilere göndermesi üzerine kuruludur.

Epic Games başta olmak üzere Unreal Engine kullanan pek çok stüdyo,firma,ekip Perforce kullanmaktadır. Bu yüzden yazının ilerleyen bölümlerinde bununla alakalı bilgiler yer alacaktır.

Projeyi Sunucuda Barındırmak

Perforce yukarıda da bahsettiğim gibi bir merkezi versiyon kontrol sistemidir ve bir sunucuya ihtiyaç duyar. Bu noktada yerel olarak kendi sunucunuzu kurabilirsiniz. Fakat bunun yerine daha “doğru” bir çözüm olan bulut sunucusu kiralamanızı öneriririm;  bu sayede hem başkalarıyla uzaktan çalışabilir hem de donanım maaliyeti, bakım maaliyeti, bant genişliği, güvenlik gibi pek çok sorun için endişelenmek zorunda kalmazsınız. Sunucu konusunda pek çok alternatif bulunuyor fakat bu noktada kendi kullandığım Digital Ocean‘i önerebilirim.

Digital Ocean, hem basit arayüze sahip hem de tek tık ile istediğiniz herşeyi halledebiliyorsunuz. Eğer Digital Ocean kullanacaksanız yazının ilerleyen bölümlerinde nasıl kiralayacağınız hakkında da bilgiler vereceğim.

Sunucu Kiralama ve Kurulum

Bu bölümde Digital Ocean üzerinden bir sunucu kiralayıp, Linux kurulumunu gerçekleştireceğiz. Eğer hali hazırda bir Linux sunucunuz varsa bu adımı atlayabilirsiniz. Eğer Windows sunucunuz varsa anlatacak pek birşey yok, sunucunuza uygun olan perforce versiyonunu indirip kolayca kurabilirsiniz.

  1. Bir DigitalOcean hesabı oluşturmak için sağ üstte yer alan SignUp düğmesine tıklayın.
  2. Size gönderilen e-postayı onaylayın.
  3. Ödeme bilgilerinizi girin.
  4. Sonrasında size uygun olan sunucuyu seçip Create düğmesine tıklayın.
    • Sunucu adınızın anlaşılır olmasına özen gösterin.
    • Bölgeyi yaşadığınız yere yakın olmasına özen gösterin. Türkiye’de yaşıyorsanız en mantıklı seçenek Almanya olacaktır.
    • Eğer Backup seçeneğini işaretlerseniz haftalık yedeklemeler yapacaktır. Bunu işaretlediyseniz; seçtiğiniz paketteki sabit disk boyutu ile proje boyutunuzu göz önünde bulundurun.
    • Güvenlik için SSH oluşturabilirsiniz. (Bunu farklı bir yazıda anlatmayı düşünüyorum)

Sunucuya Erişmek

Sunucuzu oluşturduktan sonra, IP Adresleri ve giriş bilgilerinin yer aldığı bir e-posta alacaksınız. Giriş yapmak için bu bilgilere ihtiyacımız olacak.

Elimizde artık sunucumuza ait giriş bilgileri yer alıyor ve artık sunucumuza erişebiliriz! Bunun için PuTTY isimli programı indiriyoruz. Artık bu noktadan sonra karşımızda arayüz ekranları yerine komut satırı olacak.

  • Programı açtıktan sonra IP adresimizi yazıp Open düğmesine tıklayın.
  • Sunucuya güvenip güvenmediğinizi soran güvenlik uyarısı açılırsa Yes düğmesine basın.
  • Kullanıcı ismimizi girmemizi isteyecektir. Kullanıcı ismi için root yazıp Enter’a basın.
  • E-posta adresimize gelen şifreyi yazıp Enter’a basın.

Not: Yazdığınız zaman ekranda herhangi bir karakter çıkmayacak. O yüzden yazmıyor sanabilirsiniz. Ayrıca komut satırı içerisinde yapıştırma işlemi için farenin sağ düğmesini kullanabilirsiniz.

  • DigitalOcean ilk girişten sonra şifre değiştirmeyi zorunlu tutuyor. Bu yüzden e-posta adresinize gelen şifreyi tekrar girip, iki kez yeni şifrenizi girin. Şifreyi unutmayacağınız bir şey yaptığınızdan emin olun.
  • Eğer son satırda root@sunucuadiniz:~# gibi bir şey yazıyorsa başarıyla giriş yaptınız demektir.

Perforce Sunucusunun Kurulumu

Artık sunucumuz hazır ve istediğimiz gibi erişim sağlayabiliyoruz. Bu noktadan sonra istemciler ile iletişim kurması için sunucumuza Perforce yükleyeceğiz.

Kurulum Dosyalarının İndirilmesi

İlk adım Perforce Server kurulum dosyalarını indirmek. Perforce Server’ın tüm versiyonlarına bu bağlantıdan ulaşabilirsiniz. Bu yazıyı yazdığım tarihte en güncel sürüm Linux 64 bit için r16.2 sürümü, bu yüzden ben bu sürümü kurdum. Fakat güncel sürüm okuduğunuz tarihe göre değişkenlik gösterebilir. Bu yüzden en güncel sürümü yukarıda verdiğim FTP üzerinden bulabilirsiniz.

wget ftp://ftp.perforce.com/perforce/r16.2/bin.linux26x86_64/p4d

Yukarıdaki komutu komut satırına yazıp Enter’a basın. Eğer bir hata olmaz ise sunucunuz dosyaları indirmeye başlayacaktır.

Dosyayı Kurulum İçin Hazırlamak

Genellikle Linux tabanlı işletim sistemleri, dosyaları çalıştırmak için bazı izinlere ihtiyaç duyar. Öncelikle indirdiğimiz dosyaya bu izinleri veriyoruz. Yani bu, Ubuntu veya Perforce’a özgü bir durum değil.

chmod +x p4d

Artık dosyamızı çalıştırabiliriz. Fakat çalıştırmadan önce aşağıdaki komutu kullanarak onu /usr/local/bin konumuna taşıyoruz.

sudo mv p4d /usr/local/bin

Güvenlik Ayarlarının Yapılandırılması

Perforce’u root üzerinden çalıştırmayı kesinlikle önermiyorum. Çünkü root gereken tüm yetkilere sahip ve Perforce sunucumuz kötü niyetli kişilerin eline geçerse(pek mümkün değil) yapacaklarını kısıtlamamız gerekiyor. Bu yüzden yeni bir kullanıcı oluşturuyoruz.

sudo adduser perforce

Bu komutu yazdıktan sonra sizden bir takım bilgiler isteyecek. Bu kısım çok önemli değil istediğiniz gibi dolurabilirsiniz. Bizim için önemli olan verdiğimiz kullanıcı adı olan perforce.

Dizinlerin Oluşturulup Yetkilendirilmesi

Şimdi oyun dosyalarımızın ve raporların tutulacağı dizinlerimizi oluşturup daha sonra az önce oluşturduğumuz perforce kullanıcısına bu dizinlerde gerekli yetkileri vermemiz gerekiyor.

sudo mkdir /perforce_depot
sudo chown perforce /perforce_depot 
sudo mkdir /var/log/perforce 
sudo chown perforce /var/log/perforce

Perforce Sunucusunu Arka Planda Çalıştırmak

Deamon programları arka planda çalıştırmak için bir kullanınlan Linux aracıdır. Bu çok önemli bir nokta çünkü eğer bunu yapmazsak Perforce arka planda çalışmaz ve dolayısıyla PuTTY’den çıktıktan sonra erişim sağlayamayız. Deamon’u yüklemek için asağıdaki komutu kullanıyoruz.

sudo apt-get update
sudo apt-get install daemon

Deamon Ayarlarının Yapılması

Sunucumuz herhangi bir sebepten dolayı yeniden başladığında her seferinde Perforce’u elle çalıştırmak istemiyorum. Bu yüzden Perforce’u ön yükleme programı olarak tanımlam gerekiyor.

cd /etc/init.d

Bunun için bir servis oluşturacağız. Ve bunu önyükleme esnasında otomatik başlatacağız. Bunun için init.d klasöründeyken aşağıdaki komutları yazın.

wget https://raw.githubusercontent.com/SertacOgan/linux-perforce-installer/master/p4dservice
chmod +x p4dservice

Gerekli servisi indirdikten sonra Ubuntu önyükleyicisini güncelliyoruz.

sudo update-rc.d p4dservice defaults

Sunucumuzu Yeniden Başlatmak

Eğer buraya kadar herşeyi doğru yaptıysak, sunucumuzu yeniden başlattığımızda Perforce otomatik olarak arkaplanda çalışacaktır. Aşağıdaki komutu yazarak sunucumuzu yeniden başlatıp terminaldeki işimizi bitiriyoruz.

sudo reboot

Perforce Sunusuna Bağlanmak

Artık bir sunucumuz var ve içerisine Perforce kurup çalıştırdık. Sıra geldi istemciler üzerinden sunucumuza bağlanmaya. Çalıştığından emin olmanın en kolay yolu sunucumuza bağlanmaya çalışmaktır. Bunun için Perforce’un sitesinden Perforce Visual Client (P4V) programını indiriyoruz. Programı kurup çalıştırdıktan karşımıza çıkan ekrana sunucumuzun ip adresini ve 1666 portunu giriyoruz.

Örneğin: 107.155.255.255:1666

IP adresimizi girdikten sonra User kutusunun yanındaki New düğmesine basıyoruz. Bastıktan sonra aşağıdaki gibi bir ekran karşınıza çıkacaktır. Buraya bilgilerinizi girdikten sonra Save düğmesine basın.

Artık sunucumuza giriş yapabiliriz. İlk defa giriş yaptığımız için superuser olup olmadığınızı soran bir uyarı penceresi gelecek. Bu pencereden Yes düğmesine tıklıyoruz.

Not: Eğer giriş yaptıktan sonra karşınıza otomatik kurulum menüsü çıkarsa kapatın. Daha sonra elle bu ayarları yapacağız.

Çalışma Alanı Oluşturma

İngilizce adıyla workspace istemciyle sunucu arasındaki dosyaların karşılaşıtırılması için kullanılan yerel depolardır. Bu depolar temel olarak sunucudaki güncellemeleri indirip yapılan değişiklikleri sunucuya yükler. Perforce kullanan her istemcinin kendine ait bir çalışma alanı olmalıdır.

Çalışma alanı oluşturmak için Workspace sekmesindeyken New Workspace düğmesine tıklanır.

Çalışma Alanı Ayarları

  • Öncelikle ismi basit ve kısa olmalı. Örneğin Sertac_Ev gibi kime ait olduğu ve nerede olduğuna dair bilgiler içeren bir isimlendirme yapılabilir. Bu noktada birden fazla bilgisayarda çalışabileceğinizi gözardı etmeyin.
  • Konumununda mümkün olduğunca kısa olmasında fayda var. Kesinlike isimlendirmelerde türkçe karakter kullanmayın!
  • İsim ve konumu ayarladıktan sonra Advanced sekmesine tıklayın.

  • Kırmızıyla işaretli olanlar haricinde tüm alanları varsayılan olarak bırakın.

  • OK düğmesine bastıktan sonra karşımıza Otomatik Kurulum Sihirbazı çıkarsa Cancel düğmesine basarak kapatın.

File Mapping ve Ignore Yapılandırmaları

Perforce, dosyaları uzantılarına göre farklı şekilde değerlendirir. Örneğin .uasset dosyaları üzerinde tek bir kişi çalışabilirken .cpp dosyası üzerinde birden fazla kişi aynı anda çalışabilir. Bu yüzden Perforce’a hangi dosya uzantısının ne şekilde değerlendirilmesi gerektiğini söylememiz gerekiyor.

  • İlk olarak Connection>Environment Settings’e gidip en alttaki kutucuğun işaretli olduğundan emin olun.
  • Komut istemcisini açıyoruz. Bunun için Windows+R kısayolunu kullanıp ekrana gelen çalıştır penceresine cmd yazabilirsiniz.
  • Komut istemsine p4 typemap yazıp Enter’a basın.
  • Açılan not defterini aşağıdaki şekilde düzenleyin ve not defterini kapatın.
# Perforce File Type Mapping Specifications.
#
#  TypeMap:             a list of filetype mappings; one per line.
#                       Each line has two elements:
#
#                       Filetype: The filetype to use on 'p4 add'.
#
#                       Path:     File pattern which will use this filetype.
#
# See 'p4 help typemap' for more information.

TypeMap:  
                binary+S2w //depot/....exe
                binary+S2w //depot/....dll
                binary+S2w //depot/....lib
                binary+S2w //depot/....app
                binary+S2w //depot/....dylib
                binary+S2w //depot/....stub
                binary+S2w //depot/....ipa
                binary //depot/....bmp
                text //depot/....ini
                text //depot/....config
                text //depot/....cpp
                text //depot/....h
                text //depot/....c
                text //depot/....cs
                text //depot/....m
                text //depot/....mm
                text //depot/....py
                binary+l //depot/....uasset
                binary+l //depot/....umap
                binary+l //depot/....upk
                binary+l //depot/....udk

Typemap saved. uyarısını alırsanız diğer adıma geçebilirsiniz. Eğer herhangi bir hatayla karşılaşırsanız önceki adımlara dönüp tekrar deneyebilirsiniz.

Not: Eğer klasörünüze başka bir isim verdiyseniz yukarıdaki alanı ona göre düzenlemeniz gerekmektedir.

Eğer aksini belirtmezsek Perforce bütün dosyaları kontrol etmek isteyecek ve buda gereksiz yere zaman kaybına yol açacak. Bu yüzden Perforce’a .p4ignore dosyası ile bazı dosyaları görmezden gelmesini söyleyebiliriz.

  • Bunun için Notepad açın.
  • Aşağıdaki metni kopyalayıp yapıştırın.
Saved/  
Intermediate/  
DerivedDataCache/  
*.pdb
obj/  
*.vcxproj
*.sln
*-Debug.*
FileOpenOrder/
  • Daha sonra .p4ignore ismiyle çalışma alanınızın ana dizinine kayıt edin.

Çalışma alanınızın ismi farklılık gösterebilir. Bu ve bundan sonraki adımlarda çalışma dizinini D:/depot olarak varsayıyorum. Siz kendi dizinize göre değiştirebilirsiniz.

Not: Eğer sunucuya atmasını istediğiniz uzantılar varsa listeden çıkarabilirsiniz.

Son olarak komut satırını açıp aşağıdaki komutları yazıyoruz.

cd d:\depot

p4 set P4IGNORE=.p4ignore

Eğer herşey doğru ise herhangi bir hata mesajı almazsınız. Eğer hata mesajı alıyorsanız yukarıdaki adımları gözden geçirip tekrar deneyin.

Dosyaları Sunucuya Göndermek ve Almak

Gerekli tüm ayarları yaptıktan sonra artık projemizi çalışma alanımıza ekleyebilir ve sunucuya gönderebiliriz. Eğer hali hazırda bir projeniz varsa bu konuma kopyalayabilirsiniz. Eğer projeye yeni başlıyorsanız, projenizi bu konumda oluşturabilirsiniz. Daha sonra Workspace sekmesindeyken proje klasörünüze sağ tıklayıp Mark for Add sonrasında Submit düğmesini kullanarak sunucuya yükleyebilirsiniz. Aynı şekilde sunucudaki dosyalar ile çalışma alanınızı senkronize etmek için Get Latest Revision düğmesini kullanabilirsiniz.

Son olarak Unreal Engine içerisinde versiyon kontrol sistemini etkinleştirmek için bu bağlantıyı kullanabilirsiniz. Gerekli tüm açıklamar döküman üzerinde mevcut olduğundan hangisinin ne işe yaradığını açıklama ihtiyacı görmedim. Artık sizde senkron bir şekilde projenizi geliştirebilirsiniz!

Bir sonraki yazımda sunucumuzu nasıl daha güvenli bir hale getirebiliriz ondan bahsedeceğim. Görüşmek üzere!

Bu yazıda anlattığım bilgileri Michael Allar’ın kişisel blog sitesinden öğrendim. Kendisine bu yüzden teşekkürü borç bilirim. Umarım faydalı bir yazı olmuştur.

Bir Yorum Yazın