Monday 10 August 2009

SVN Keyword Substitution

  • SVN commitlerinde revision,date, author gibi değerlerin otomatik eklenmesi için
  1. Kullanıcının root dizini altında Subversion dizini altındaki config dosyasında yer alan(./subversion/config) "enable-auto-props = yes" satırı eklenmelidir.
  2. Yine aynı konfigurasyon dosyasında .java uzantılı dosyalar için Date,Author,Revision gibi etiketler verilerek bunların karşılığının commit sırasında var olan değerlerle değişmesi için "*.java = svn:keywords=Date Author Revision Id HeadURL" satırı eklenmelidir. (Not:Önceden eklenmiş dosyalar için bu değişikliğin etkisi yoktur,Otomatik değişim için etiketleri ekledikten sonra "add" veya "import" çalıştırılmalıdır. )
  3. Örneğin Foo.java idosyasının içeriğinde aşağıdaki gibi bir kullanım sonrası yeni Foo.java elde edilecektir.

//Foo.java (commit öncesi)

package aa;

/**
* @author: Bekir Sıtkı Ertuğrul
* @author: XXXX YYYY
* @author: Last modified by $Author: $
* @version: $Revision: $ $LastChangedDate: $
*/
public class Foo {
}

//Foo.java (commit sonrası)

package aa;

/**
* @author: Bekir Sıtkı Ertuğrul
* @author: XXXX YYYY
* @author: Last modified by $Author: Bekir $
* @version: $Revision: 19 $ $LastChangedDate: 2009-08-06 11:25:57 +0300 (Per, 06 Ağu 2009) $
*/

public class Foo {
}

  • SVN'de bulunan dosyalara daha önce eklenmemiş olan Date,Revision gibi değerlerin eklenmesi

(Not: Yapacak olduğumuz bu ayarı TortoiseSVN ilede yapabiliyoruz.)

  1. Yazdığımız java classlarına istediğimiz etiketleri ekliyoruz.

package aa;

/**
* @author: Bekir Sıtkı Ertuğrul
* @since: Last modified at $Date: $
*/
public class Foo {
}

2. Sonra aşağıdaki scripti çalıştırıyoruz.

svn up
find . -type f | grep -v '/\.svn/' | egrep "\.(java)$" > list
for FILE in `cat list`
do
svn propset svn:keywords "Date Author Revision Id HeadURL" $FILE
done
svn commit -m "Adding Date property to some files"