4

Я хочу создать дистрибутивный архив моего кода, который включает подмножество каталогов и исключает все файлы subversion. Я хотел бы, чтобы файлы были добавлены в архив с корневой папкой, которая идентифицирует версию выпуска, чтобы при распаковывании архива он использовал эту корневую папку (т.е. myAppV1.3)

Я не могу найти «переключатель» для этого, поэтому в данный момент мне нужно все сжать (используя исключения 7zip для фильтрации ненужных файлов), а затем разархивировать его в указанную папку. Затем снова скопируйте всю эту папку.

Пример текущего трехшагового процесса, который я использую:

c:\dev\myApp>7za -xr!?svn\* a myApp_temp.zip @listOfFilesInRelease.txt 
c:\dev\myApp>7za -omyAppV1.3 x myApp_temp.zip
c:\dev\myApp>7za a myAppV1.3.zip myAppV1.3

Есть ли более элегантный способ сделать это?

3 ответа3

3

Основываясь на информации и вдохновении, предоставленном Йоханнесом Ресселем (в основном то, что приложения сжатия не поддерживают то, что я пытаюсь сделать), я нашел более элегантный способ решения моего конкретного сценария. Хотя это не решает именованную корневую папку в проблеме с архивом, она может предоставить людям, которые приходят в поисках ответа, по-другому взглянуть на свою проблему.

Моим решением обойти трехэтапный процесс архивации было заменить первые два шага проверкой контроля исходного кода (по тегу) в именованную папку.

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

0

Так было почти для всех известных мне форматов сжатия или для приложений, которые их обрабатывают. Глядя на формат ZIP файла, хотя, я думаю , что это теоретически может быть. По-видимому, стимулов для реализации этого не так много.

Но почему вы не включили папку в первую очередь?

0

Вы можете сделать это в два этапа

  • экспортировать исходный код из Subversion в каталог с заданным именем
  • используйте 7-zip для упаковки этого каталога

SVN экспорт путь к хранилищу root-dir-name
7za имя-архива root-dir-name

Root-dir-name - это имя каталога, в который вы будете экспортировать файлы.

В вашем примере вы бы сделали

svn экспорт путь к хранилищу MyAppV1.3

Это позволит экспортировать только исходные тексты вашего проекта в каталог с именем MyApp1.3, исключая при этом все файлы Subversion. После этого используйте 7-zip для создания архива.

7za a MyAppV1.3.zip MyAppV1.3

Это сделает zip-архив из папки, в которую вы экспортировали исходный код. Архив будет иметь файлы в корневом каталоге с именем MyAppV1.3. Конечно, вы можете использовать 7z как расширение, чтобы получить лучшее сжатие.

Для клиента командной строки SVN я рекомендую SlickSVN.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .