SVN заблокировать каталог - PullRequest
12 голосов
/ 20 марта 2011

Извините, если это дубликат, я все еще не нашел правильный ответ ..

Как заблокировать каталог svn из командной строки? Мне нужно заблокировать ветку от checkins

Edit:
Все эти ответы, которые я нашел, требуют, чтобы человек получил доступ к серверу SVN. Это не вариант для меня. Я работаю в компании, где система контроля версий буквально заперта в хранилище. Получение доступа для изменения правил аутентификации - процесс, который я не могу отработать в банкомате.

Ответы [ 2 ]

7 голосов
/ 20 марта 2011

Вы не можете заблокировать каталог.Вы можете создавать правила авторизации, которые запрещают доступ на запись в каталоги.Это, как правило, так делается.Вы также можете использовать ловушку перед фиксацией, но я думаю, что авторизация Subversion лучше.Вот ссылка:

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

2 голосов
/ 04 ноября 2014

Я недавно решил это с помощью решения, вдохновленного http://www.noah.org/engineering/olden/svn_directory_lock.html

Конкретный скрипт на python в этом посте излишний, но я положил следующее в ловушку pre-commit для моего репозитория:

#!/bin/sh

err() { echo ${1+"$@"} 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

Итак, теперь вы можете просто использовать "svn propset" и зафиксировать создание свойства "lock" для каталога, который вы хотите заблокировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...