Могу ли я злоупотреблять git, сделав мой домашний каталог репо, а затем имея в нем другие репозитории?

В течение многих лет я настроил свой домашний каталог как git repo:

~ $ ls -a
.git/  .vim/  code/  .bash_history  .bashrc  .gitconfig  .gitignore  .vimrc

Я стараюсь не фиксировать файлы, содержащие конфиденциальную информацию (например, мой закрытый ключ ssh). Фактически, я игнорирую все, кроме нескольких файлов:

~ $ cat .gitignore
# ignore everything
*

# except these
!.bashrc
!.gitignore
!.vimrc

Обычно у меня есть несколько проектов в code/ со своими git repos:

~ $ ls -a code/
ctest/  cpptest/  dwm/

~ $ ls -a code/ctest/
.git/  pointers  pointers.c  strings  strings.c

Мне никогда не приходило в голову, что это было странно, пока коллега не поднял опасений по поводу этого. Я каким-то образом злоупотребляю git, настраивая свой домашний каталог таким образом? Может ли это привести к проблемам с программами, пытающимися использовать мои файлы точек?

Ответ 1

Это определенно не сумасшествие, чтобы поместить ваши dotfiles в git. Я делаю это так, что я могу легко синхронизировать свою конфигурацию между несколькими машинами и Я не одинок.

Тем не менее, плохая форма имеет репозиторий git в вашем домашнем каталоге, а затем другие репозитории под ним.

Некоторые люди решают эту проблему, проверяя их репозиторий dotfiles в подкаталог $HOME, а затем символизируя эти файлы в домашних условиях. (Есть несколько сценариев, которые помогут справиться с этим в https://dotfiles.github.io.

Лично мне не нравится symlinking и вместо этого создаю репозиторий dotfiles в каталоге, который не является .git (например: .dotfiles.git). Вы можете просто переименовать папку .git в .dotfiles.git. Затем вы можете:

git checkout --git-dir=.dotfiles.git checkout .profile

Ответ 2

Я не думаю, что ваша идея в корне оскорбляет концепцию Git. Git - фактически файловая система версий. Из Git документации:

Во-первых, если он еще не ясен, Git является принципиально файловой системой, адресующей контент, с пользовательским интерфейсом VCS, написанным поверх нее.

Фактически, это стало официальным с проектами, такими как gitfs, который позволяет монтировать репозиторий Git вместо клонирования он.

Я не уверен, какие проблемы вы ожидаете с помощью dotfiles. Git обрабатывает их точно так же, как и любой другой тип файла. То же самое касается забот вашего коллеги. Если есть что-то конкретное, они, вероятно, необоснованны. Все Git действительно добавляет папку .git в ваш домашний каталог. Если вы не используете команды Git, эта папка ничего не делает для ваших других файлов. Git обычно не сжимает вещи, если вы специально не рассказываете об этом, поэтому это тоже не должно быть серьезной проблемой.

Подводя итог, ваша идея не дикая. Он использует намерение дизайна Git и не должен вызывать никаких проблем сам по себе.

Ответ 3

  • Я не думаю, что вы злоупотребляете git, он был создан для интенсивного использования.

  • Я не думаю, что ваша любая программа будет иметь проблемы с доступом к вашим dotfiles. Хотя вы должны быть осторожны в тех случаях, когда вы хотите вернуть состояние своего домашнего каталога, потому что вы можете потерять изменения или повредить содержимое файлов, и это первая проблема, которую я бы затронул в связи с этим использованием. Вторая проблема - дисковое пространство, которое может сильно расти, если вы не позаботитесь о нем или если вы храните много двоичных данных.