it:software:git:stow

Stow

Příkaz stow je nástroj pro správu symbolických odkazů (symlinků), který umožňuje efektivně organizovat a propojit konfigurační soubory s jejich cílovým umístěním. Typicky se používá v kombinaci s adresářem obsahujícím konfigurační soubory, často nazývaným dotfiles.

Pojmenování adresáře dotfiles je neformální standard používaný v komunitě správců Linuxu a Unixu pro úložiště uživatelských konfigurací. Název odkazuje na tradiční „dotfiles“ – soubory začínající tečkou (.), které jsou běžně skryté v domovském adresáři, například `.bashrc` nebo `.vimrc`.

Proč používat název dotfiles?

  1. Komunitní standard:
    • Adresář s názvem dotfiles okamžitě signalizuje, že obsahuje vaše konfigurační soubory.
    • Nástroje jako GitHub, GitLab a různé skripty často očekávají, že repozitář s názvem dotfiles bude obsahovat konfigurace.
  2. Znalostní zkratka:
    • Sdílení repozitáře dotfiles ostatním umožňuje rychle identifikovat vaše nastavení, což usnadňuje spolupráci a inspiraci.
  3. Flexibilita:
    • Dotfiles mohou obsahovat nejen soubory začínající tečkou, ale i další složky a konfigurace.
  4. Tradice a zdroje:
    • Použití tohoto názvu usnadňuje využití komunitních zdrojů, návodů a projektů zaměřených na správu dotfiles.
  • dotfiles
    • .git
    • README.md
    • kamery
      • Kamery
        • jednakamera.strm
        • druhakamera.strm
    • kodi
      • .kodi
        • userdata
          • profiles.xml
          • sources.xml

Symbolické odkazy lze vytvořit pro všechny složky v adresáři příkazem:

stow */

V mém případě dojde k následujícímu vytvoření symbolických odkazů v domovském adresáři:

  1. ~/Kamery/jednakamera.strm → dotfiles/kamery/Kamery/jednakamera.strm
  2. ~/Kamery/druhakamera.strm → dotfiles/kamery/Kamery/druhakamera.strm
  3. ~/.kodi/userdata/profiles.xml → dotfiles/kodi/.kodi/userdata/profiles.xml
  4. ~/.kodi/userdata/sources.xml → dotfiles/kodi/.kodi/userdata/sources.xml

Soubory jako `README.md` nebo adresář `.git` jsou automaticky ignorovány, protože je stow má nastavené jako výjimky.

Pro odstranění vytvořených symbolických odkazů lze použít příkaz:

stow -D */

Pokud nechcete mapovat všechny složky naráz, můžete zvolit konkrétní modul, například složku kodi:

stow kodi

Tento příkaz vytvoří symbolické odkazy pouze pro obsah složky kodi:

  1. ~/.kodi/userdata/profiles.xml → dotfiles/kodi/.kodi/userdata/profiles.xml
  2. ~/.kodi/userdata/sources.xml → dotfiles/kodi/.kodi/userdata/sources.xml

Ve výchozím nastavení stow předpokládá, že symbolické odkazy budou vytvořeny v domovském adresáři (`~`).

Pokud nechcete používat domovskou složku, můžete definovat jiný cílový adresář pomocí přepínače `-t`:

stow -t /cesta/k/cilovemu/adresari */

Do složky lze přidat sloubor .stow-local-ignore do kterého zadám, že chci ignorovat některé symlinky. Mám například složku certs, do ní jsem nahrál soubor .stow-local-ignore a do něj jsem vložil zástupné znaky, aby se ignorovaly všechny soubory ve složce.

.*

Při hromadném mapování složek

stow */

Mi tedy nejsou namapovány soubory ve složce, kde je právě soubor .stow-local-ignore.

  • it/software/git/stow.txt
  • Poslední úprava: 2025/01/05 22:27
  • autor: Petr Nosek