私の質問は this one に似ていますが、ファイルをコピー/アップロードするときに、いくつかのディレクトリを再帰的に除外したいと思います。具体的には、アップロードするコードベース全体から.gitフォルダーを除外したいと思います(サブリポジトリーが含まれ、構造のかなり深い部分もあります)
「-」キーを使用して.gitの選択を解除すると、現在のディレクトリに対して実行できますが、これを再帰的に実行する方法はありますか?
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メニューに入れる」というアイデアのブレンドとして...これらの2つのコマンドを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/men'
このファイルがすでに存在する場合は、それをENDに追加します(特定のものはファイルの最初にある必要があり、それを台無しにしたくない)。
このファイルが存在しなかった場合、ここのエントリは、通常表示されていたすべてのデフォルトのF2 /ユーザーメニューエントリを置き換えます。これらのメニューエントリを元に戻す必要がある場合(いくつかは便利です!)、findという名前のファイルmc.men(通常は/ etc/mc /)にあります)、それを〜/ .config/mc/menにコピーし、もう一度、上記を最後に追加します。終わり!
古いバージョンのmcを使用している場合は、mc.menファイルを検索する必要がある場合があります。 menファイルは〜/ .mc.men ...にある必要があります複雑です、はい、少し。しかし最近、mcは、ベストプラクティス(XDGの提案)を反映するように構成ファイルの場所を修正し、すべてを〜/ .config/mc/。 mc(1)のマニュアルページは非常に役立ちます。ユーザーメニューを検索してください。
これにより、2つのコマンドが追加されます。
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でこれを実行しないようにするためのテストを追加しましたが、これは破壊的ではありません...そこでそれを実行できるのはうまくいきませんでした。
楽しい!