Из домашнего каталога ~/
в Linux я хотел бы создать репозиторий полезных файлов, которые я настраивал с течением времени. В частности, например, такие файлы, как ~/.bashrc
или ~/.vimrc
.
Теперь в домашнем каталоге также есть папка .vim
, в которой есть несколько плагинов, которые я клонировал. Например, ~/.vim/plugged/vim-snippets
. В этой папке также есть папка .git/
по адресу ~/.vim/plugged/vim-snippets/.git
. Это репозитории, которые я клонировал просто для использования в качестве пользователя. Они разработаны и поддерживаются кем-то другим.
Наличие этой последней папки .git/
, по-видимому, не позволяет отслеживать что-либо в папке ~/.vim/plugged/vim-snippets/
или ее подпапках из репозитория, который я хотел бы создать в ~/
. Некоторые из файлов в ~/.vim/plugged/vim-snippets/
, которые я настроил и изменил, включают, например, ~/.vim/plugged/vim-snippets/UltiSnips/tex.snippets
, который содержит мои настройки для файлов LaTeX. Я хотел бы поместить этот файл в свой личный репозиторий системы контроля версий под ~/
.
Несмотря на наличие !/.vim/plugged/vim-snippets/
в ~/.gitignore
, файл tex.snippets
не отслеживается. Однако при прочих равных условиях удаление папки .git
из ~/.vim/plugged/vim-snippets
действительно отслеживает файл tex.snippets
.
Можно ли как-то решить эту проблему? Я просмотрел подмодули, но обратите внимание, что я не хочу фиксировать в своем репозитории под ~/
все под ~/.vim/plugged/vim-snippets/
, что, похоже, является проблемой, решаемой подмодулями. Я настраиваю только один или два файла в ~/.vim/plugged/vim-snippets/
, которые я хотел бы передать в свой личный репозиторий системы управления версиями под ~/
. Является ли удаление папки .git/
из /.vim/plugged/vim-snippets/
единственным способом добиться этого?
В Git нет способа сделать именно то, что вы хотите — или, по крайней мере, то, что, я думаю, вы хотите, то есть что-то вроде наложения/чередования.
У меня есть для личного пользования моя собственная система точечных файлов, и у меня была бы та же проблема, если бы я настроил репозитории с прямым клонированием. На данный момент, если бы я сделал это, я бы пошел дальше и использовал подмодули (или добавил что-то похожее на них в свою личную систему файлов точек). До сих пор мне везло в том, что дополнительные возможности vim, которые я использую, уже достаточно настраиваются, не затрагивая исходный репозиторий, и мне не нужно этого делать. Так что я на самом деле не реализовал ни один из трюков, о которых вы говорите.
Что здесь действительно необходимо, так это способ сказать: «используйте дерево из коммита какого-то репозитория Git, но используйте только эти его части и/или наложите на него эти другие элементы». Это не соответствует модели Git, поэтому клон другого репозитория Git, если таковой имеется, должен выходить за пределы собранного дерева файлов, а дерево файлов должно существовать вне репозитория Git.
Нет, за исключением того, что вы несете ответственность за обслуживание всего подрепозитория, не имея возможности напрямую обновлять «восходящие» обновления для этого пакета vim. (Конечно, вы можете объединить их вручную.)
Если «основной» разработчик что-то изменит в своем репозитории, могу ли я просто удалить этот плагин/пакет, который полностью очистит эту папку в ~/.vim/plugged/
, а затем переустановить его, который повторно заполнит эту папку, включая новую папку .git/
(которую я должен иметь удалять снова, до бесконечности)?
Да, это метод "слияния вручную". Я делал это в прошлом, это быстро надоедает.
Есть ли вред от простого локального удаления папки .git из клонированного репозитория? -- как пользователь этого репозитория, а не участник. Это выполняет свою работу и, на мой взгляд, кажется довольно чистым для пользователя.