SVN импортировать, не изменять ревизию ИЛИ не изменять список файлов в транзакции - PullRequest
1 голос
/ 12 июня 2010

За последние несколько лет я получил так много знаний / знаний от этого сайта, что теперь я действительно надеюсь получить некоторое просветление.

Сценарий выглядит следующим образом: У вас есть общая структура репо (ствол, ветви, теги), но вы добавили к макету еще один каталог с именем 'db_revs'. Теперь при предварительной фиксации вы берете дамп определенной базы данных (подробности не имеют значения) во временный файл, скажем /tmp/REV.sql (REV - номер ревизии HEAD репо или транзакции).

K все хорошо, и вы можете просто импортировать этот временный файл в репозиторий в /db_revs/REV.sql Теперь очевидно, что импорт, даже если он происходит во время фиксации, увеличивает ревизию репо. Поэтому, когда вы в какой-то момент делаете коммит, чтобы сказать «test.php» в транке, и он завершается, скажем, в ревизии 159, тогда предварительная фиксация запускается как надо, и дамп БД импортируется, но затем вы сидите с деревом в Браузер репозитория, где «trunk» находится в ревизии 159, а «db_revs», в котором есть импортированный дамп, - в 158 (я сделал так, чтобы имя файла соответствовало ревизии, то есть: 159.sql, но тогда этот файл находится в ревизии 158). Редакция HEAD перед коммитом в этом примере была 157

NB Если вы выполняете импорт в предварительной фиксации, вам нужно добавить некоторую логику, чтобы не выполнять импорт, скажем, сначала проверив наличие временного файла, в противном случае он будет из-за переполнения стека, и ваш компьютер будет быстро ползти на месте

Поэтому я хотел знать, возможно ли выполнить импорт, чтобы не фиксировать его изменения. Я понимаю, что для начала я могу ошибиться с деревом, поэтому у меня есть еще одна идея сделать это, чтобы привести меня ко 2-й части моего вопроса, можно ли будет изменить список файлов, которые транзакция собирается совершить в репо. Я знаю, что это можно сделать с WC, но это не поможет, так как WC является извлеченной копией, скажем, ствола, поэтому я не уверен, как вы добавите файл в папку 'db_revs', которая находится над стволом?

Любая помощь с благодарностью

Приветствие Vaughan

1 Ответ

0 голосов
/ 17 марта 2011

Общий ответ: «Вам не разрешено изменять какую-либо версионную информацию во время предварительной * фазы транзакции». Это включает в себя внесение изменений в файлы или каталоги или изменения свойств в файлах или каталогах. Свойства ревизии (такие как svn: log или svn: author) не являются версионными и поэтому являются честной игрой.

Эта проблема подробно обсуждалась в другом месте, но сводится к следующему:

Если вы измените транзакцию в середине полета, в настоящее время у сервера svn нет механизма, чтобы сообщить клиенту, что все изменилось. Поскольку нет механизма / нет обновлений, ваш клиент думает, что он актуален по отношению к репо, хотя на самом деле это не так.

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

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