21 Şubat 2013 Perşembe

SVN dahili dizin yapısı

Bir SVN projesinde aşağıdaki dizin ve dosyalar bulunmaktadır.

# ls -al /var/svn/surgate
total 36
drwxr-xr-x 7 apache apache 4096 Feb 12 01:22 .
drwxr-xr-x 5 apache apache 4096 Feb 13 05:57 ..
drwxr-xr-x 2 apache apache 4096 Feb 12 00:47 conf
drwxr-xr-x 3 apache apache 4096 Feb 12 01:22 dav
drwxr-sr-x 7 apache apache 4096 Feb 14 23:32 db
-r--r--r-- 1 apache apache    2 Feb 12 00:47 format
drwxr-xr-x 2 apache apache 4096 Feb 12 00:47 hooks
drwxr-xr-x 2 apache apache 4096 Feb 12 00:47 locks
-rw-r--r-- 1 apache apache  229 Feb 12 00:47 README.txt

Buradaki en önemli dizinler db,hooks ve conf dizinidir. db dizinin hiyerarşisi aşağıdaki gibidir:


db dizini

  db/revs:             revizyonları içerir. Buradaki alt dizindeki her bir dosya bir commit işlemini içerir.

Örnek bir dizi yapısı aşağıdaki gibidir.

# ls  -al /var/svn/surgate/db/revs/
total 12
drwxr-sr-x 3 apache apache 4096 Feb 12 00:47 .
drwxr-sr-x 7 apache apache 4096 Feb 14 23:32 ..
drwxr-sr-x 2 apache apache 4096 Feb 12 01:28 0
# ls  -al /var/svn/surgate/db/revs/0
total 28
drwxr-sr-x 2 apache apache 4096 Feb 12 01:28 .
drwxr-sr-x 3 apache apache 4096 Feb 12 00:47 ..
-rw-r--r-- 1 apache apache  115 Feb 12 00:47 0
-rw-r--r-- 1 apache apache  281 Feb 12 01:22 1
-rw-r--r-- 1 apache apache  321 Feb 12 01:27 2
-rw-r--r-- 1 apache apache  342 Feb 12 01:28 3
-rw-r--r-- 1 apache apache  664 Feb 12 01:28 4

Buradaki en son sayı 4. Bu da en güncel revision numarasının 4 olduğu anlamına gelir. Bunuda svn info komutu ile görebilirsiniz.


# svn info
Path: .
URL: http://192.168.1.100/svn/surgate/trunk
Repository Root: http://192.168.1.100/svn/surgate
Repository UUID: eeb80374-687f-47f5-a93c-3ad0b907a178
Revision: 4
Node Kind: directory
Schedule: normal
Last Changed Author: ismail
Last Changed Rev: 4
Last Changed Date: 2013-02-12 01:28:43 +0200 (Tue, 12 Feb 2013)


db/current

# cat /var/svn/surgate/db/format
4
layout sharded 1000

Yukarıdaki birinci satırdaki sayı değeri bize projenin hangi subversion sürümü ile oluşturulduğunu  veya hangi sürüme kadar desteklendiğini gösterir.
Format numaraları ve farkları:

  Format 1: Subversion 1.1+ tarafından tanınıyor.
  Format 2: Subversion 1.4+ tarafından tanınıyor.
  Format 3:  Subversion 1.5+ tarafından tanınıyor.
  Format 4: Subversion 1.6+ tarafından tanınıyor.
  Format 5: Subversion 1.7-dev ve sonrası tarafından tanınıyor.
  Format 6: Subversion 1.8 tarafından tanınıyor.

db/uuid: Dosyanın UUID(universally unique identifier) değerini gösterir.

Bu değer diğer doğrulama formlarının(URL kontrolu vs) yeterli olmadığı zaman depo kimliğini doğrulamak için Subversion istemcileri tarafından kullanılır.

# cat /var/svn/surgate/db/uuid
eeb80374-687f-47f5-a93c-3ad0b907a178

Bu değer svn info çıktısındaki Repository UUID değerine karşılık gelir.

Repository UUID: eeb80374-687f-47f5-a93c-3ad0b907a178


db/current
En güncel svn revizyon numarasını belirtir.

# cat /var/svn/surgate/db/current
4

svn info çıktısındaki Revision değerine karşılık düşer.


db/fs-type

SVN dosya sistemi formatını belirtir. Default olarak fsfs'dir. Bunun dışında bdb formatı da kullanılabilr.

# cat /var/svn/surgate/db/fs-type
fsfs

db/revprops: revision properties ifadesinin kısaltılmasıdır. Her bir commit işlemindeki güncelleme işlemine ait bilgiler tutar. Örnek bir kayıt aşağıdaki gibidir:

# ls  /var/svn/surgate/db/revprops/0
0  1  2  3  4  5

# cat /var/svn/surgate/db/revprops/0/5
K 10
svn:author
V 6
ismail
K 8
svn:date
V 27
2013-02-21T18:24:37.346410Z
K 7
svn:log
V 20
ikinci test dosyasi

END



hooks dizini

Her bir commit öncesi veya sonrası alınacak aksiyonları belirleyen dosyaları içerir. Ön tanımlı içeriği aşağıdaki gibidir.

# ls -al /var/svn/surgate/hooks/
total 44
drwxr-xr-x 2 apache apache 4096 Feb 12 00:47 .
drwxr-xr-x 7 apache apache 4096 Feb 12 01:22 ..
-rw-r--r-- 1 apache apache 1977 Feb 12 00:47 post-commit.tmpl
-rw-r--r-- 1 apache apache 1638 Feb 12 00:47 post-lock.tmpl
-rw-r--r-- 1 apache apache 2289 Feb 12 00:47 post-revprop-change.tmpl
-rw-r--r-- 1 apache apache 1567 Feb 12 00:47 post-unlock.tmpl
-rw-r--r-- 1 apache apache 3426 Feb 12 00:47 pre-commit.tmpl
-rw-r--r-- 1 apache apache 2410 Feb 12 00:47 pre-lock.tmpl
-rw-r--r-- 1 apache apache 2786 Feb 12 00:47 pre-revprop-change.tmpl
-rw-r--r-- 1 apache apache 2100 Feb 12 00:47 pre-unlock.tmpl
-rw-r--r-- 1 apache apache 2780 Feb 12 00:47 start-commit.tmpl

Yukarıdaki dosyalar  birer template (.tmpl) dosyasıdır. Dosyaların aktif olması için .tmpl uzantısı olmadan dosya oluşturulması gerekir. Örneğin post-commit operasyonu(commit sonrası yaplacak işler) uygulamak için dosya adı post-commit olmalı ve dosya çalıştırılabilir haklara(755) sahip olmalıdır.

post-commit ile genelde şu işler yapılır.
  • Her commit sonrası ilgili kişilere e-posta gönderimi
  • Commit sonrasında mantis hata takip sistemine kayıt girilmesi

pre-commit ise commit svn'e kabul edilmeden önce yapılacak kontroller için kullanılır. Biz bu özelliği svn commit yapan kişilerin commit mesajında JIRA'daki bir iş numarası girmediğinde commit işleminin reddedilmesi için kullandık. Bununla ilgili yazıyı buradan okuyabilirsiniz.

Yukarıdaki diğer dosyalardaki post ve pre ile benzer şekilde işlemin öncesinde ve sonrasında belli aksiyonlar alınabiliyor. En çok kullanılan dosyalar ise yukarıda bahsettiğim pre-commit ve post-commit dosyasıdır.

conf dizini

Bu dizinde ön tanımlı olarak 3 adet dosya bulunur.
 # ls /var/svn/surgate/conf/
authz  passwd  svnserve.conf

Buradaki authz ve passwd dosyaları yetkilendirme ve kullanıcı parolası tanımlamak için kullanılır. Fakat birden fazla svn projeniz varsa bu dizini kullanmak yerine daha önceki subversion kurulum yazımda bahsettiğim gibi global bir yapılandırma dosyası kullanmak daha sağlıklı olacaktır. Aksi halde her proje dizininde ayrı ayrı authz ve passwd dosyaları tanımlamanız gerekecek.

svnserve.conf dosyası ise svnserve servisinin yapılandırma dosyasıdır. Eğer Apache üzerinden svn yetkilendirmesi yapıyorsunuz bu dosyanın bir anlamı yoktur.




http://svn.apache.org/repos/asf/subversion/trunk/subversion/libsvn_fs_fs/structure adresinden dizin yapısı hakkında detaylı bilgi alabilirsiniz.




Hiç yorum yok:

Yorum Gönder