Условия: Большой проект где много сопутствующих разработке данных не предназначенных для публикации.Задача: Использоватьочищенный проект, публиковать только материалы согласно списку файлов.
В таком случае возможно использовать опцию игнорирования файлов, но если в проекте много тестовых материалов различных форматов, то поддерживать игнорируемый список весьма затруднительно. Особенно в SVN репозитории.
Примерная схема возможного проекта:
/MyProjRootDirectory
/docsDirectory
INSTALL.md
/buildDirectory
CMakeLists.txt
/srcDirectory
function1.php
function2.php
function2_test.php
function3.php
function3_test.php
...
function100.php
testZipRequest.zip
testRtfInput.rtf
testPdfInput.pdf
/testDirectory
AllFunctionTest.php
Создаем список, расположим его /buildDirectory/split-repo.list:
srcDirectory/function1.php
srcDirectory/function2.php
srcDirectory/function3.php
...
srcDirectory/function100.php
Отредактируем hook post-commit в репозитории относящимся к копии MyProjRootDirectory:
# пример для `svn`, файл находиться в директории текущего svn
# репозитория в подпапке `hooks`.
# вносим изменения:
/usr/bin/spch \
-u svn \
-e /usr/bin \
-r "${2}" \
-t svn \
-m /home/user/MyProjRootDirectory \
-s /home/user/__SplitRepo/MyProjRootDirectory_splitRelease \
-l buildDirectory/split-repo.list \
-j /home/svn/spch_splitRelease.log \
-x Release_
Создаем MyProjRootDirectory_splitRelease Репозиторий в директории доступной SVN серверу:
sudo -u svnadmin create /home/svn/MyProjRootDirectory_splitRelease
Создаем MyProjRootDirectory_splitRelease рабочую копию Репозитория с которой будет работать spch в директории доступной пользователю, необходимо чтоб директория принадлежала пользователю svn:
cd /home/user/__SplitRepo
shown -R svn:svn /home/user/__SplitRepo
sudo -u svn checkout file:///home/svn/MyProjRootDirectory_splitRelease
Директория /home/user/__SplitRepo должна быть доступна на запись пользователю svn.
Теперь при изменении файлов в проекте библиотеки, файлы включенные в список будут автоматически копироваться в Репозиторий MyProjRootDirectory_splitRelease.
Подключение к проекту разумно делать через
extendedатрибут дляSVN,
или черезsubmoduleдляGIT.
Ключ -x позволит добавлять к файлам указанный префикс, например: srcDirectory/function1.php -> srcDirectory/Release_function1.php.
MIT