Хвост SVN post-commit: Обновить рабочую копию в зависимости от проекта, к которому принадлежал коммит - PullRequest
2 голосов
/ 19 декабря 2010

Раньше у меня была эта ловушка после фиксации для обновления моей рабочей копии на моем сервере:

#!/bin/sh
cd /var/www/MyWebAppStaging
svn up >> /var/log/svn/MyWebApp.log

Внутри / var / www / MyWebAppStaging была, очевидно, рабочей копией моего проекта

Но теперь у меня есть несколько проектов в моем хранилище.Мой репозиторий находится в / var / svn / repository и имеет два проекта:

MyWebApp --> trunk
MyMobileWebApp --> trunk

У меня есть следующие папки внутри / var / www

/var/www

 |-->MyWebApp

 |-->MyWebAppStating

 |-->MyMobileWebApp

 |-->MyMobileWeAppStaging

Кто-то передает код в MyWebApp-Проект я хотел бы, чтобы мой пост-коммит обновил рабочую копию в / var / www / MyWebAppStaging.И если кто-то фиксирует код в MyMobileApp-Project, я бы хотел, чтобы мой post-commit обновил рабочую копию в / var / www / MyMobileAppStaging

Так как я могу изменить свой post-commit, чтобы он обновлял нужныерабочая копия в зависимости от проекта, к которому принадлежит коммит?

1 Ответ

2 голосов
/ 19 декабря 2010

Вы можете использовать svnlook, чтобы узнать, какие файлы были изменены в коммите. Для этого люди обычно используют Perl или Python в хуке после фиксации, но что-то вроде этого может работать (не проверено):

if (svnlook changed -r $2 $1|grep MyWebApp)
then
    (cd /var/www/MyWebAppStaging; svn up >> /var/log/svn/MyWebApp.log)
fi
if (svnlook changed -r $2 $1|grep MyMobileApp)
then
    (cd /var/www/MyMobileAppStaging; svn up >> /var/log/svn/MyWebApp.log)
fi
...