svn changelist

Repo’nuzdaki değişikliklerin hepsini commit yapmak istemeyebilirsiniz. Örneğin, bazı dosyalarda değişiklik yaptınız ve bazı dosyaları da sildiniz ve sadece silinen dosyaları commit yapmak istediğinizde, daha düzenli ve anlaşılır olsun diye değ. yapılan dosyaları gruplayarak (ui-changelist, styles-changelist gibi) kolayca takip etmek istediğinizde svn’in changelist özelliğini kullanabiliriz.

Kullanılışı

Changelist oluşturma ve ona dosya ekleme

svn changelist cl-name cl-file-to-add

Changelist’den dosya çıkarma

svn changelist --remove file-to-delete-from-cl

Changelist’i commit’leme

svn commit --changelist cl-name

 

Örnek kullanım

Aşağıdaki örnek bir web proje repo’sundadaki değişiklik yapılan dosyaları front-end ve back-end olmak üzere 2 changelist oluşturarak commit yapalım:

Repo’daki tüm değişikliklerin listesi:

$ svn st
M views/user/add.php
M views/user/update.php
M views/user/delete.php
D views/user/_delete.php
M models/User.php
M controllers/UserController.php
M helpers/Db.php

front-end ve back-end changelist’lerini oluşturarak dosyaları ilgili yerlerine ekleyelim:

$ svn changelist front-end views/user/add.php views/user/update.php views/user/delete.php views/user/_delete.php
$ svn changelist back-end back-end models/User.php controllers/UserController.php

Changelist’leri oluşturduktan sonraki repo’nun duruma bakalım:

$ svn st
M helpers/Db.php
--- Changelist 'front-end':
M views/user/add.php
M views/user/update.php
M views/user/delete.php
D views/user/_delete.php
--- Changelist 'back-end':
M models/User.php
M controllers/UserController.php

Her iki changelist’i de commit’leyelim:

$ svn commit --changelist front-end
$ svn commit --changelist back-end

Repo’nun en son durumu:

$ svn st
M helpers/Db.php

 

svn changelist ile ilgili aktaracaklarım bu kadar. Daha ayrıntılı bilgi için http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.advanced.changelists bağlantısını ziyaret edebilirsiniz.

Svn İpuçları (svn tips)

Commit’de değişen dosyaları listeleme

$ svn log --verbose -r 42

Özyinelemeli dosya/dizin ekleme

$ svn add * --force

svn branch alma

$ svn copy https://1.1.1.1/svn/gui/trunk https://1.1.1.1/svn/gui/branches/GUI_RELEASE_1_0 -m "gui release 1.0 branch"

svn tag alma

$ svn copy https://1.1.1.1/svn/gui/trunk https://1.1.1.1/svn/gui/tags/GUI_RELEASE_1_0 -m "gui release 1.0 tag"

“svn: File ‘file1.php’ has inconsistent newlines – svn: Inconsistent line ending style” hatasını çözme

Bu hata, farklı OS’deki yeni satır meta-karakterlerin kendi OS’nizde algınanamamasından kaynaklanmaktadır. (mesela bendeki durum, ilgili dosya Win’de kodlanmış ve satır sonu \r\n kullanılıyor fakat ben Linux kullandığım için burada da sadece \n kullanıldığı için problem çıkartıyor). Çözüm için:

1. çözüm

svn propdel svn:eol-style file1.php

2. çözüm

  1. Sorun çıkaran dosyayı şu şekilde silin: svn –force delete file1.php
  2. Dosya içindeki \r’leri silin ve sonra svn add file1.php

Mevcut bir repo’dan yenisine geçme

$ svn switch --relocate https://1.1.1/svn/gui/trunk/panel https://2.2.2.2/svn/gui/trunk/panel

Projeyi .svn dosyaları olmadan alma

$ svn export --username user1 https://1.1.1.1/svn/gui/trunk/panel/ /var/www/panel/

Svn’den tek dosya alma

$ svn export --username user1 https://1.1.1.1/svn/gui/trunk/panel/index.php