Вход на сайт
Яндекс.Метрика

Рейтинг@Mail.ru

Команды SVN, svn hooks (svn хуки)

Команды SVN

1. Создать новый реп

svnadmin create /usr/local/www/svn/pxe-kiae

Где /usr/local/www/svn/ - путь до корня репозитория SVN

2. Удалить каталоги по списку из файла

#ls | egrep -v 'shellbox11.infra.hostcomm.ru|puppet-std.infra.hostcomm.ru' | xargs svn del

#for dir in `cat /home/skuleshov/dmnew.txt`;do svn ci ${dir} -m "e";done

Где dmnew.txt — файл со списком удаляемых директорий

3. Хуки в SVN(svn hooks)

[root@svn /]# cd /usr/local/www/svn/pxe-std/hooks/

[root@svn /usr/local/www/svn/pxe-std/hooks]# cat post-commit

#!/bin/sh

 

# post commit hook -- called for normal commits

#

# The mailer is put into the background in order to

# leave the script faster

#

# You need to adjust the config path

# and the path to svn-mailer if necessary.

 

CONFIG="/usr/local/etc/svn/mailer/mailer.conf"

MAILER="/usr/local/bin/svn-mailer"

 

REPOS="$1"

REV="$2"

 

"${MAILER}" --commit --config "${CONFIG}" --repository "${REPOS}" --revision "${REV}" --background

 

/usr/bin/ssh -i /usr/local/www/svn/.ssh/id_dsa -o \ UserKnownHostsFile=/usr/local/www/svn/.ssh/known_hosts Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. &

Где на той стороне, т.е. на dhcp-std.infra.server.ru, в /root/.ssh/authorized_keys имеем:

#cat /root/.ssh/authorized_keys

from="10.14.7.51",command="/usr/local/sbin/updatefromsvn;/usr/local/etc/rc.d/isc-dhcpd restart" ssh-dss tut_key Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Т.е. когда hook пойдет, то после авторизации по ключу с сервера IP=10.14.7.51, запустится команда /usr/local/sbin/updatefromsvn;/usr/local/etc/rc.d/isc-dhcpd restart

updatefromsvn — это скрипт «svn up»

Пример скриптов:

# cat /usr/local/sbin/updatefromsvn

#!/bin/sh

 

. /usr/local/etc/updatefromsvn.conf

 

for dir in `cat ${UPDATEDIRSFILE}`

do

/usr/local/bin/svn update -q --non-interactive --trust-server-cert --username ${SVNUSER} --password ${SVNPASS} ${dir}

done

 

# cat /usr/local/sbin/updatefromsvn

#!/bin/sh

 

. /usr/local/etc/updatefromsvn.conf

 

for dir in `cat ${UPDATEDIRSFILE}`

do

/usr/local/bin/svn update -q --non-interactive --trust-server-cert --username ${SVNUSER} --password ${SVNPASS} ${dir}

done

[root@dhcp-std /home/storage/releases/cdrom-amd64/freebsd/8.3-amd64-2013-11-20/livefs/conf]# cat /usr/local/etc/updatefromsvn.conf

 

SVNUSER=user-svn

 

SVNPASS=password 

UPDATEDIRSFILE=/usr/local/etc/updatedirsfile.conf

 

# cat /usr/local/etc/updatedirsfile.conf

/usr/local/etc/dhcpd

/home/storage/releases/cdrom-amd64/freebsd/8.3-amd64-2013-11-20/livefs/conf

/home/storage/releases/cdrom-amd64/freebsd/8.3-amd64-2013-11-20/livefs/conf/base

/home/storage/releases/cdrom-amd64/CentOS

 Всё, готово.

Обновлено 05.04.2016 08:56

unix-way