SVN

2011-03-20 31 views
9

.. bu aynısı olup olmadığını, hala doğru cevabı bulamadık Maalesef SVN

nasıl komut satırından svn dizini kilitleyebilirim bir dizin kilitlemek?
ben svn sunucusuna erişmek için kişiyi gerektirir buldum Tüm cevaplar: Ben checkins

Düzenleme

bir dalı kilitlemek gerekiyor. Bu benim için bir seçenek değil. Kaynak kontrol makinesinin tam anlamıyla bir kasada kilitlendiği bir şirkette çalışıyorum. Kimlik doğrulama kurallarını değiştirmek için erişim elde etmek, ATM'yi kullanamadığım bir süreçtir.

+1

http://stackoverflow.com/questions/4064229/svn-lock-branch – easel

cevap

7

Dizini kilitleyemezsiniz. Dizinlere yazma erişimini engelleyecek yetkilendirme kuralları oluşturabilirsiniz. Bu genellikle böyle bir şeyin nasıl yapıldığıdır. Önceden hazırlanmış bir kanca da kullanabilirsiniz ama sanırım Subversion'ın authz'i en iyisi. İşte link:

http://svnbook.red-bean.com/nightly/en/svn.serverconfig.pathbasedauthz.html

+0

Bunu, komut dosyası aracılığıyla ve authz dosyasını düzenlemek zorunda kalmadan ayarlamak için bir yol var mı? Kazayla silinmeyi önlemek için geçici olarak bir dizini BLOCK etmeniz gerekiyor (örneğin bir svn rm işlemi yaparken). – runlevel0

1

Geçenlerde http://www.noah.org/engineering/olden/svn_directory_lock.html

söz konusu yayında özellikle python komut dosyası overkill esinlenerek çözüm tarafından bu çözüldü, ama için önceden taahhüt kanca aşağıdaki koymak benim repsoitory: Yani şimdi

#!/bin/sh 

err() { echo ${1+"[email protected]"} 1>&2; } # stderr is sent to user 

REPOS="$1" 
TXN="$2" 

SVNLOOK=/usr/bin/svnlook 

# Make sure there is a log message. 
# 
$SVNLOOK log -t "$TXN" "$REPOS" | grep -q "[a-zA-Z0-9]" 
if [ $? -eq 1 ] 
then 
    err "ERROR: Must enter a log message for this commit!" 
    exit 1 
fi 

# Usage: locked_dir dir [transaction_id] 
locked_dir() 
{ 
    if [ -z "$2" ]; then _tid=""; else _tid="-t $2"; fi 
    $SVNLOOK propget $_tid "$REPOS" lock "$1" >/dev/null 2>&1 
    if [ $? -eq 0 ]; then echo true; else echo false; fi 
} 

for d in $($SVNLOOK dirs-changed -t "$TXN" "$REPOS") 
do 
    locked_before=$(locked_dir $d) 
    locked_tx=$(locked_dir $d "$TXN") 

    if [ $locked_before = $locked_tx -a $locked_tx = true ] 
    then 
    err "ERROR: Directory $d is locked. Delete lock before you commit." 
    exit 1 
    fi 
done 

# All checks passed, so allow the commit. 
exit 0 

, sadece "svn PROPSET" kullanmak ve kilitlemek istediğiniz bir dizin için bir "kilit" özelliğini oluşturmak için tahsis edebilirler.