Получение имени проекта в обработчике subversion - PullRequest
2 голосов
/ 18 июня 2011

У меня есть хранилище Subversion, выложенное так:

Repo
    ProjectA
        trunk
        branches
        tags
    ProjectB
        trunk
        branches
        tags

Я пытаюсь написать скрипт перехвата пост-фиксации, который применяется только к одному проекту, но я только что узнал, что они размещены в корне хранилища.

Единственные два параметра, которые я получаю - это путь к хранилищу и номер редакции. Могу ли я выполнить этот сценарий только для конкретного проекта?

Спасибо

Решение: Окончательное решение получилось примерно так:

#!/bin/bash
REPOS="$1"
REV="$2"
if svnlook changed -r $REV $REPOS | grep ProjectA; then
    echo "do stuff"
fi

Ответы [ 3 ]

3 голосов
/ 18 июня 2011

да, используйте svnlook , чтобы получить список файлов, измененных в принятой ревизии, затем введите имена с подходящим регулярным выражением, чтобы определить, содержит ли путь после фиксации имя вашего проекта в правильном поместите, если он выполняет код, в противном случае перейдите к концу сценария и верните 0.

1 голос
/ 24 июня 2015

Я пришел сюда в поисках ответа на этот вопрос для VisualSVN на Windows 2012 Server.После сбора дополнительной информации вот решение, которое я придумала для ловушки после фиксации пакетного файла Windows на VisualSVN, которая загружает скрипт PHP на сервер разработки, чтобы вызвать развертывание конкретного проекта на этом сервере.Команда перехвата состоит из одной строки:

svnlook changed "%1" | findstr /L "ProjectA/trunk/" && powershell -Command "Invoke-WebRequest http://192.168.0.177/checkout_on_commit/checkout_on_commit.php -OutFile $ENV:SYSTEMROOT\Temp\commit.txt" || rem

Рем был необходим как «неоперативный», чтобы Tortoise не сообщала о перехвате о сбое при фиксации других проектов.Содержимое checkout_on_commit.php, которое вызывает развертывание проекта на сервере Linux:

<?php
`date >> checkout.log`;
`svn sw --non-interactive --no-auth-cache --username project_a_readonly --password trytoguess https://svnserver/svn/GroupA/ProjectA/trunk /app/www/ >> checkout.log`;
?>
0 голосов
/ 18 июня 2011

В Subversion не существует определения типа «Проект» ... определение должно быть сделано вами.Это означает, что Subversion выполняет это при изменении в хранилище, а не в базе данных «Project» ...

Вы можете использовать полученную информацию, например, хранилище и номер редакции, чтобы извлечь нужную информацию ...Вы можете сделать это, просто используя svnlook для извлечения необходимой информации, вызвав svnlook с соответствующими параметрами.

...