Я запускаю путем взгляда на то, для чего я хочу использовать машину:
Большая вещь о *отклоняет, то, что можно настроить любого из них для любой определенной потребности, которую Вы хотите. Дистрибутивы просто позволяют Вам достигать тех ниш без всей ручной конфигурации.
DistroWatch был бы хорошим местом к исследованию. Можно найти последние дистрибутивы, если Вы хотите пойти ультрасовременным путем или самым популярным, если Вы хотите пойти тем путем. Столбец The Weekly мог также дать Вам некоторое понимание.
У меня нет слишком большого опыта BSD, таким образом, я пошел бы тем путем. Но это - просто я.
Взгляните сначала на git help archive
. archive
команда мерзавца, которая позволяет делать архивы, содержащие только прослеженные файлы мерзавца. Вероятно, что Вы ищете. Один пример перечислил в конце страницы справочника:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Если Вы хотите, чтобы архив включал файлы, прослеженные мерзавцем, но не самим репозиторием мерзавца или каким-либо сгенерированным или в других отношениях неотслеженным файлом, то используйте git archive
.
Если Вы конкретно хотите исключить .git
но включайте все остальное, в соответствии с Linux или FreeBSD или OSX или Cygwin, tar имеет простую опцию исключить каталог:
tar -c --exclude .git -f - foo | gzip >foo.tgz
С tar GNU (т.е. в соответствии с Linux или Cygwin), можно сократить это к tar czf foo.tgz --exclude .git foo
.
POSIX способ создать архивы pax
.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
git
компиляции в любой системе, где tar
не доступно? :-)
– Stéphane Gimenez
13.08.2011, 02:35
tar
имеет нет --exclude
опция, такая как OpenBSD (который по общему признанию копирует мир s
опция, но это не общее расширение синтаксиса команды tar).
– Gilles 'SO- stop being evil'
13.08.2011, 02:38
Простейший ответ: Добавьте - exclude-vcs
- exclude-vcs
Это исключает все каталоги системы контроля версий
Лично я использую
tar -zcvf foo.tar.gz ./FOLDER_NAME --exclude-vcs
, поэтому все, что вам нужно сделать, это добавить --exclude-vcs в конце команды.
Благодаря ответ, который я получил на один из моих вопросов , я нашел другое решение . Итак, для полноты картины, вот решение, использующее find
:
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
И если вы хотите исключить возможные папки .git
внутри (sub) + folder :
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Последнее также может быть достигнуто с помощью:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Очень удобно, если вы можете использовать другие методы фильтрации из find
, например дата модификации, разрешения,…
(Поскольку часто подразумеваются правильно сформированные имена файлов, в противном случае вам нужно использовать нулевые байты в качестве разделителей, что может означать -print0
для find
и - null
для tar
, если поддерживается.)