stowを使用してディレクトリを無視する

stowを使用してディレクトリを無視する

stow正しく使用する際に問題があります。すべてをインストールするために使用するスクリプトはstow次のとおりです。

cd ~/Utility/configs
for file in *; do
  # Only run Stow on the directories in the dotfiles folder and not the individual files.
  # Using 'basename' strips the filepath from the directory name. 
  if [ -d ${file} ]; then
    stow  $(basename $file) -t ~/
    echo "$(basename $file) stowed."; 
  fi
done

現在、vimディレクトリには次のものがあります~Utility/configs/vim/

tree . -a  -L 2
.
├── .stow-local-ignore
├── .vim
│   ├── autoload
│   ├── plugged
│   └── UltiSnips
└── .vimrc

無視したいものは保存されないpluggedため、次のようになります.stow-local-ignore

\.vim/plugged
\.vim/spell

ただし、これは意図したとおりに機能せず、挿入は常にキャンセルされました。デフォルトでは、~/.vim/の内容はそこにあります~/Utility/configs/vim/.vim。これが私が望んでいないことです。特に欲しいただ autoloadそしてUltisnips他のものは何も保存できません。

どうすればいいですか?

注:私はvimを例として使用していますが、これはvimとは関係なく、stowと関連しています。だからvimチャンネルの代わりにここに投稿します。

出力保存、詳細=5

Stowing contents of Utility/configs/vim (cwd=/home/rudra)
  => Utility/configs/vim
  is_a_node(.)
  link_task_action(.): no task
  dir_task_action(.): no task
    parent_link_scheduled_for_removal(.): prefix 
    parent_link_scheduled_for_removal(.): returning false
  is_a_node(.): really exists
  Using ignore file: Utility/configs/vim/.stow-local-ignore
    Ignore list regexp for paths:    /(?^:(^|/)(\.vim/spell|^/\.stow\-local\-ignore$|\.vim/plugged)(/|$))/
    Ignore list regexp for segments: none
  Not ignoring .vimrc
Stowing Utility/configs / vim / .vimrc
  => Utility/configs/vim/.vimrc
  is_a_link(.vimrc)
  link_task_action(.vimrc): no task
  is_a_link(.vimrc): returning 0
  is_a_node(.vimrc)
  link_task_action(.vimrc): no task
  dir_task_action(.vimrc): no task
    parent_link_scheduled_for_removal(.vimrc): prefix .vimrc
    parent_link_scheduled_for_removal(.vimrc): returning false
  is_a_node(.vimrc): returning false
LINK: .vimrc => Utility/configs/vim/.vimrc
  Using ignore file: Utility/configs/vim/.stow-local-ignore
    Using memoized regexps from Utility/configs/vim/.stow-local-ignore
    Ignore list regexp for paths:    /(?^:(^|/)(\.vim/spell|^/\.stow\-local\-ignore$|\.vim/plugged)(/|$))/
    Ignore list regexp for segments: none
  Ignoring path /.stow-local-ignore
  Using ignore file: Utility/configs/vim/.stow-local-ignore
    Using memoized regexps from Utility/configs/vim/.stow-local-ignore
    Ignore list regexp for paths:    /(?^:(^|/)(\.vim/spell|^/\.stow\-local\-ignore$|\.vim/plugged)(/|$))/
    Ignore list regexp for segments: none
  Not ignoring .vim
Stowing Utility/configs / vim / .vim
  => Utility/configs/vim/.vim
  is_a_link(.vim)
  link_task_action(.vim): no task
  is_a_link(.vim): returning 0
  is_a_node(.vim)
  link_task_action(.vim): no task
  dir_task_action(.vim): no task
    parent_link_scheduled_for_removal(.vim): prefix .vim
    parent_link_scheduled_for_removal(.vim): returning false
  is_a_node(.vim): returning false
LINK: .vim => Utility/configs/vim/.vim
Planning stow of package vim... done

@Kusalananda:これは私がやっていることです。 verbose=2:

pwd
/home/rudra/Utility/configs
 mv vim/.stow-local-ignore ~/
stow -D vim --verbose=2
stow dir is /home/rudra/Utility/configs
stow dir path relative to target /home/rudra/Utility is configs
Planning unstow of package vim...
CONFLICT when unstowing vim: existing target is neither a link nor a directory: .vimrc
.vim did not exist to be unstowed
Planning unstow of package vim... done
WARNING! unstowing vim would cause conflicts:
  * existing target is neither a link nor a directory: .vimrc
All operations aborted.

cd vim/
stow -D .vim --verbose=2
stow dir is /home/rudra/Utility/configs/vim
stow dir path relative to target /home/rudra/Utility/configs is vim
Planning unstow of package .vim...
UltiSnips did not exist to be unstowed
autoload did not exist to be unstowed
plugged did not exist to be unstowed
Planning unstow of package .vim... done
Processing tasks...

stow -D .vimrc --verbose=2
stow dir is /home/rudra/Utility/configs/vim
stow dir path relative to target /home/rudra/Utility/configs is vim
stow: ERROR: The stow directory vim does not contain package .vimrc
cd ..
ll ~/.vim*
lrwxrwxrwx. 1 rudra rudra  24 Apr 30 16:16 /home/rudra/.vim -> Utility/configs/vim/.vim
-rw-------. 1 rudra rudra 13K Apr 30 16:17 /home/rudra/.viminfo
lrwxrwxrwx. 1 rudra rudra  26 Apr 30 16:10 /home/rudra/.vimrc -> Utility/configs/vim/.vimrc
unlink ~/.vim
unlink ~/.vimrc
cp ~/.stow-local-ignore vim/
stow vim -t ~/ --verbose=2
stow dir is /home/rudra/Utility/configs
stow dir path relative to target /home/rudra is Utility/configs
Planning stow of package vim...
LINK: .vimrc => Utility/configs/vim/.vimrc
LINK: .vim => Utility/configs/vim/.vim
Planning stow of package vim... done
Processing tasks...
Processing tasks... done
tree ~/.vim -L 1
/home/rudra/.vim
├── autoload
├── plugged
└── UltiSnips

答え1

無視ファイルの構文が正しいです。

この.stow-local-ignoreファイルは一度作成されると有効です。

適用すると、ロード、リロード、アンロードに影響します。

つまり、ディレクトリを入れてそれからファイルの無視を追加しました。ディレクトリを復元またはキャンセルした場合いいえに保存されている影響を受けるファイルは、.stow-local-ignoreそのファイルを指すシンボリックリンクがインストールされたままです。

したがって、ディレクトリに追加する.stow-local-ignoreときは、次のワークフローに従ってください。

  1. ディレクトリが次のようになっていることを確認してください。いいえ片付けてください。
  2. ファイルを追加する.stow-local-ignore
  3. 保存ディレクトリ。

今やるべきことは、無視ファイルの削除/名前の変更、ディレクトリのスタック解除、無視ファイルの追加、およびディレクトリを再度隠すことです。

関連情報