Я использую инструмент командной строки zip на OS X, чтобы сжать папку проекта XCode.
В эту папку включен файл .framework для OS X, который содержит символические ссылки, такие как xx.framework/Versions/Current
который указывает на xx.framework/Versions/A
Когда я заархивирую проект, а затем разархивирую его, обе версии /A и Versions /Current содержат один и тот же набор файлов - в основном они содержатся в архиве дважды - мне нужно избегать этого.
Однако у меня также есть символические ссылки в папке проекта, указывающие на файлы ресурсов, которые необходимо скопировать в zip-архив. Поэтому я не могу просто использовать глобальные zip-флаги для хранения символических ссылок, а не файлов / каталогов, на которые указывают.
Как я могу создать один ZIP-файл, в котором хранятся только определенные символические ссылки, в то время как другие будут хранить контент, на который они указывают?
Это вообще возможно с zip? Можно ли использовать другой zip-совместимый инструмент? Могу ли я выполнить команду zip несколько раз, исключая / включая определенные файлы, сохраняя файлы в одном и том же архиве, чтобы добиться того, что я хочу?
PS: я не могу иметь почтовый индекс внутри почтового индекса. После распаковки проект должен быть пригодным для использования и не требовать распаковки содержимого почтового индекса.
Вещи, которые я пробовал:
zip -rq4y $ZIPFILE $TARGETFOLDER/xx.framework
zip -rq4u $ZIPFILE $TARGETFOLDER
Идея состояла в том, чтобы сначала сжать .framework, сохранив символические ссылки. Затем обновите архив, чтобы добавить остальные файлы, включая любые файлы / папки, на которые указывают символические ссылки, которых еще нет в архиве (или, как я надеялся). Результат: поврежденный архив (ошибка 20 - не каталог).
Я также попробовал обратное, исключив фреймворк при первом проходе, а затем обновив архив с фреймворком:
zip -rq4 $ZIPFILE $TARGETFOLDER -x xx.framework
zip -rq4uy $ZIPFILE $TARGETFOLDER
Результат: поврежденный архив (Ошибка 21 - это каталог).