3

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

Я могу сделать это для текущего каталога с ключом "-" и отменить выбор .git, но есть ли способ сделать это рекурсивно?

1 ответ1

3

Midnight Commander не имеет такого контроля над операциями с подкаталогами. Вид сделки типа «все или ничего». Как вы сказали, вы можете контролировать записи верхнего уровня, но не более того.

Я полагаю, вы могли бы написать какой-нибудь скрипт для использования в меню F2 ...

По-другому, вроде клудги, но сработало бы ...

find . -type d -name ".git" -exec chmod 000 "{}" \;

Из-за этого все подкаталоги .git будут нечитаемыми, MC выведет диалоговое окно с сообщением об ошибке, скажет «Продолжить» и продолжит обработку.

После этого:

find . -type d -name ".git" -exec chmod 750 "{}" \;

восстановить нужные разрешения. (Я сам использую 750 и 640, многие предпочитают 755 и 644 ... используйте там, где вы предпочитаете, вместо «750»)

Ха! и как смешение моей идеи «положить его в меню F2» ... вы можете поместить эти две команды в меню F2 ... делая это почти (почти!) безболезненный.


РЕДАКТИРОВАТЬ:

По запросу:

#
# Restore permissions for any .git subdirectories to 755
g   Restore .git directories to 755 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 755 "{}" \; 2>/dev/null
#
# Remove permissions for any .git subdirectories
G   Hide .git directories with 000 permissions
    if [ "x$PWD" = "x$HOME" ]; then
        exit
    fi
    find . -type d -name ".git" -exec chmod 000 "{}" \; 2>/dev/null
#

Сохраните это в файл ~/.config/mc/menu

Если этот файл уже существует, добавьте его в КОНЕЦ (некоторые вещи должны быть первыми в файле, не хотите испортить это).

Если этот файл не существует, то записи здесь заменят все записи меню F2/ пользователя по умолчанию, которые обычно просматривались. Если вам нужны эти пункты меню назад (некоторые из них удобны!), Найдите файл с именем mc.menu (обычно он находится в / etc/ mc/), скопируйте его в ~/ .config/ mc/ menu и снова добавьте выше до конца. КОНЕЦ!

Если вы используете более старую версию mc, вам может потребоваться выполнить поиск файла mc.menu , а файл меню должен быть в ~/.mc.menu ... сложный, да, немного. Но недавно mc пересмотрел расположение своих конфигурационных файлов, чтобы отразить лучшие практики (предложения XDG), и переместил все в ~/.config/mc/ . Справочная страница mc (1) очень полезна, ищите пользовательское меню .

Это добавляет две команды:

g (lowercase g)  which will RESTORE the 755 permissions for any .git subdirs
G (uppercase g)  which will REMOVE the permissions (set to 000) from any .git subdirs

Я добавил тест, чтобы предотвратить выполнение этого в вашем $ HOME, хотя это не разрушительно ... просто не получалось это сделать.

Наслаждайтесь!

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