Şifre komut dosyasının adı, deşifre etmeyi yönetirseniz çok korkutucu değildir: revizyon öncesi özellik değiştirme kancasıdır . Kısacası, pre-revprop-changekanca komut dosyasının amacı, sürüm (özellik) özelliklerindeki değişiklikleri kontrol etmek ve bildirim göndermek (ör. Revizyon özelliği değiştirildiğinde e-posta göndermek).
Subversion'da 2 tip mülk vardır:
- dosyalarda ve dizinlerde ayarlanabilen sürüm özellikleri (ör.
svn:needs-lockve svn:mime-type),
- depo revizyonlarında ayarlanmış sürüm (revizyon) özellikleri (ör.
svn:logve svn:date) .
Sürümlendirilmiş özelliklerin geçmişi vardır ve bir depoya Okuma / Yazma erişimi olan sıradan kullanıcılar tarafından değiştirilebilir. Öte yandan, sürüm bilgisi olmayan mülklerin geçmişi yoktur ve çoğunlukla bakım amacına hizmet ederler. Örneğin, bir düzeltme yaparsanız derhal işleminizin svn:dateUTC saati, svn:authorkullanıcı adınız ve işlem svn:logkaydı iletiniz (varsa) ile birlikte gelir.
Daha önce belirttiğim gibi, pre-revprop-changekanca betiğinin amacı revizyon özelliklerindeki değişiklikleri kontrol etmektir. Bir depoya erişimi olan herkesin tüm düzeltme özelliklerini değiştirmesini istemezsiniz, bu nedenle varsayılan olarak düzeltme özelliklerini değiştirmek yasaktır. Kullanıcıların özellikleri değiştirmesine izin vermek için pre-revprop-changekanca oluşturmanız gerekir .
En basit kanca sadece bir satır içerebilir: exit 0. Kimliği doğrulanmış herhangi bir kullanıcının herhangi bir revizyon özelliğini değiştirmesine izin verir ve gerçek ortamda kullanılmamalıdır. Windows'da, pre-revprop-changekanca içine bazı mantık uygulamak için toplu komut dosyasını veya PowerShell tabanlı komut dosyasını kullanabilirsiniz .
Bu PowerShell betiği svn:logyalnızca özelliği değiştirmeye izin verir ve boş günlük iletilerini reddeder.
# Store hook arguments into variables with mnemonic names
$repos = $args[0]
$rev = $args[1]
$user = $args[2]
$propname = $args[3]
$action = $args[4]
# Only allow changes to svn:log. The author, date and other revision
# properties cannot be changed
if ($propname -ne "svn:log")
{
[Console]::Error.WriteLine("Only changes to 'svn:log' revision properties are allowed.")
exit 1
}
# Only allow modifications to svn:log (no addition/overwrite or deletion)
if ($action -ne "M")
{
[Console]::Error.WriteLine("Only modifications to 'svn:log' revision properties are allowed.")
exit 2
}
# Read from the standard input while the first non-white-space characters
$datalines = ($input | where {$_.trim() -ne ""})
if ($datalines.length -lt 25)
{
# Log message is empty. Show the error.
[Console]::Error.WriteLine("Empty 'svn:log' properties are not allowed.")
exit 3
}
exit 0
Bu toplu komut dosyası yalnızca "svnmgr" kullanıcısının düzeltme özelliklerini değiştirmesine izin verir:
IF "%3" == "svnmgr" (goto :label1) else (echo "Only the svnmgr user may change revision properties" >&2 )
exit 1
goto :eof
:label1
exit 0