Выборочный SVN экспорт файлов в репозиторий - PullRequest
0 голосов
/ 13 января 2012

Я был над этой проблемой уже несколько дней и не смог ее решить.

Я не уверен, выполним ли мой метод, поэтому, если у кого-то есть лучший обходной путь, я открыт для идей, поэтому я собираюсь предложить полную картину

Это сценарий

У нас есть большой репозиторий, который мы сейчас перемещаем из StarTeam в SVN.

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

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

Я также, возможно, использовал свойства для установки всех файлов, но нет возможности экспортировать через свойства

Спасибо

Ответы [ 3 ]

0 голосов
/ 13 января 2012

Это не решение на основе SVN, а обходной путь для вашей проблемы на основе ограничений SVN.

Не уверен, что это сработает, но вы можете подумать об изменении макета репо, просто изменив направление ссылок на файл перевода. Вы можете хранить фактические файлы в своей директории, скажем, ту, которую хотите экспортировать, и использовать ссылки там, где ранее находились фактические файлы (« распределено по всему остальному дереву проекта »).

Там у вас не будет проблем с SVN для экспорта каталога файлов перевода.

0 голосов
/ 13 января 2012

Не совсем уверен, что вы подразумеваете под ссылками . Subversion в Unix может хранить символические ссылки на другие файлы в хранилище, но я обычно не рекомендую это. Это не подходит для Windows.

Как вы используете эти ссылки точно? Вы экспортируете только этот каталог, и поскольку он связан с реальным содержимым, вы извлекаете только те файлы, которые хотите? Это как ссылки на файловую систему, или это проприетарная функция StarTeam, как старая общая в VisualSourceSafe?

Я обычно рекомендую позаботиться о чем-то подобном через какую-то систему сборки. Вы можете использовать язык сборки, такой как Ant, который достаточно мощный и работает на любой платформе, использующей Java. Или вы можете использовать что-то вроде Python или Perl. Я бы держался подальше от сценариев оболочки и пакетных сценариев, поскольку они не так универсальны.

Вы выполняете полную проверку из своего хранилища, а затем запускаете сборку, чтобы выполнить экспорт за вас. Экспорт просто скопирует нужные файлы в какой-то каталог сборки. (Я рекомендую создать каталог с именем target в корневом каталоге извлечения и поместить туда все сгенерированные файлы сборки. Это делает очистку сборки очень простой. target/archive).

Это не только облегчает переход от системы контроля версий к системе контроля версий, но и позволяет использовать такую ​​систему, как Jenkins , для создания и хранения необходимых артефактов. Когда вам нужен релиз, вместо того, чтобы проверить его, вы можете просто загрузить его с веб-страницы Jenkins.

0 голосов
/ 13 января 2012

Я думаю, что если вы хотите сделать это с помощью svn, а не с помощью внешних сценариев (которые вы должны рассмотреть в качестве альтернативы), вам, вероятно, нужно создать новую структуру репозитория для этого.

Одной из особенностей svn является svn: externals, где вы можете создать новый репозиторий, который будет извлекать подкаталоги из других репозиториев svn. Поскольку вы говорите, что у вас так много файлов, я думаю, что какой-то внешний сценарий может быть единственным разумным решением.

Я бы, вероятно, пошел примерно так: я бы поместил список файлов в текстовый файл, который находится в хранилище, и попросил бы скрипт взять этот список файлов и экспортировать его туда, где он вам нужен, в нужную вам структуру , Формат списка и инструменты для обработки зависят от структуры, которая у вас есть, и той, которая вам нужна для экспорта.

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