Niedawno uporządkowałem nieco moje vim-owe sprawy, odświeżyłem pluginy (były w bardzo starych wersjach - nie miałem jak ich sprawnie aktualizować, a skoro działały, to nie ruszałem…), i ogólnie uporządkowałem. Zacząłem od instalacji pathogena, później znalazłem repo gita do każdego z używanych przeze mnie pluginów (chwała niech będzie pomysłodawcy https://github.com/vim-scripts/). Każdy z pluginów dodałem jako submoduł do mojego repo plików vima, i tyle. No dobra, prawie tyle. Po wygenerowaniu tagów z pomocą pojawiły się pliki z tagami w folderach poszczególnych pluginów. A co na to git?
# modified: bundle/gundo (untracked content)
Kiepsko :(
Dla submodułów w git nie działa pliczek .gitignore w folderze głównym, w żaden sposób. Na początku udało się łatwo - dodałem po prostu .gitignore z treścią:
.gitignore
tags
do folderu każdego z submodułów, i było fajnie. Ba, nawet dziś napisałem prosty skrypt, który jechał mi po wszystkich folderach w bundle, i jeśli nie było tam symlinka do mojego wspólnego dla bundli pliku .gitignore, to go symlinkował.
Dodałem sobie zatem ostatnio kolejny jakiś plugin (chyba gist), zapuściłem tego prostego skrypciora, git st, i…
# modified: bundle/gist (untracked content)
:(
Skrypt nawalił? Bez sensu, tak proste rzeczy się nie psują ;) Okazało się, że w skrypcie sprawdzam czy już plik istnieje, a dla gist .gitignore był zdefiniowany. Właściciel repo dodał go, całkiem słusznie, do repo. Jeśli bym go skasował, i dodał swój, to git też by się czepiał. Bez sensu ;)
Wyjścia jakie znalazłem są dwa:
- w konfiguracji repo (.git/config) dodać wpis który spowoduje, że komenda status nie wyświetli nie śledzonych plików. Rozwiązanie do tyłka, bo wtedy nawet jak będę miał jakiś nowy plik w .vim/, to st mi go nie pokaże. No way.
- W konfiguracji każdego z submodułów dodać wpis, mówiący o tym, żeby tam nie pokazywać nie śledzonych plików. Też średnio, ale w momencie gdy nie mam w planach grzebać w tak zaciągniętych wersjach pluginów (jeśli już to przez forka), to rozwiązanie jest OK. Szczególnie, że robi się to w jednym pliku.
Skoro już wiadomo, że na chwilę obecną wchodzi w grę tylko jedno rozwiązanie (drugie), to jedziemy: vim .gitmodules, i dla każdego z wpisów dodajemy linijkę:
ignore = untracked
Voila, można commitnąć zmiany, wyrzucić wszystkie utworzone przeze mnie symlinki do .gitignore.bundle, i zapomnieć o temacie ;)