git - вложенность репозиториев
Модератор: Модераторы разделов
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
git - вложенность репозиториев
Хотелось бы узнать мнения о том, насколько нормальной считается практика вкладывания репозиториев git (каталогов .git) друг в друга.
Пример: есть $HOME/, в корне которого лежит .git. Часть дот-файлов из $HOME/ отправляется в упомянутый репозиторий git. Но есть $HOME/src, в котором есть куча подкаталогов с программными проектами, каждый из которых так же управляется с помощью git.
На первый взгляд - всё работает, то что комитится из $HOME/src/foot/, попадает в $HOME/src/foo/.git и никак не влияет на $HOME/.git, но насколько это хорошая практика и каковы вероятные последствия подобного подхода?
Разделить файлы в $HOME/ и в $HOME/src/ нужно обязательно и хранить их в одном репозитории нельзя, какое ещё может быть решение? Я не нашёл в git возможности установить переменную среды и указать реальное местоположение .git-каталога, где-то за пределеами $HOME.
Пример: есть $HOME/, в корне которого лежит .git. Часть дот-файлов из $HOME/ отправляется в упомянутый репозиторий git. Но есть $HOME/src, в котором есть куча подкаталогов с программными проектами, каждый из которых так же управляется с помощью git.
На первый взгляд - всё работает, то что комитится из $HOME/src/foot/, попадает в $HOME/src/foo/.git и никак не влияет на $HOME/.git, но насколько это хорошая практика и каковы вероятные последствия подобного подхода?
Разделить файлы в $HOME/ и в $HOME/src/ нужно обязательно и хранить их в одном репозитории нельзя, какое ещё может быть решение? Я не нашёл в git возможности установить переменную среды и указать реальное местоположение .git-каталога, где-то за пределеами $HOME.
Re: git - вложенность репозиториев
Сразу оговорюсь, я еще новичок в работе с git. В принципе файлы добавляете в реп руками. Следовательно ни чего страшного нет. Единственно при коммитах наверное большой смотрите на большой экран изменненых но не включенных в реп файлов - не прозевать нужный.
Кроме того стоит быть внимательным. В домашней директории в репе $HOME/.git как много файлов вы туда включили? Как они часто изменяются и как часто вы их комитите. Нет ли шансов нарваться на "коллизию хешей" (описано в "Магия Git" - Приложение А - А.1 Слабости sha1
Кроме того стоит быть внимательным. В домашней директории в репе $HOME/.git как много файлов вы туда включили? Как они часто изменяются и как часто вы их комитите. Нет ли шансов нарваться на "коллизию хешей" (описано в "Магия Git" - Приложение А - А.1 Слабости sha1
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: git - вложенность репозиториев
Всё нормально. У самого уже давным давно так работает :) Git считает корнем репозитория ближайший из родительских каталогов, в котором есть .git. Чтобы логически объединять «вложенные» репозитории, в git есть команда git submodule, хотя эти самые submodule всё равно остаются самостоятельными репозиториями.
(man git) писал(а):OPTIONS
--git-dir=<path>
Set the path to the repository. This can also be controlled by setting the GIT_DIR environment variable. It can be an absolute path or relative path to current working directory.
...
ENVIRONMENT VARIABLES
GIT_DIR
If the GIT_DIR environment variable is set then it specifies a path to use instead of the default .git for the base of the repository.
Мои розовые очки
Спасибо сказали:
Re: git - вложенность репозиториев
Может воспользоватьзя субмодулями git?
http://book.git-scm.com/5_submodules.html
http://book.git-scm.com/5_submodules.html
Спасибо сказали:
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: git - вложенность репозиториев
Конфиги в $HOME и копии исходников посторонних свободных проектов в $HOME/src - очень слабо связаны логически. В этом месте мне подмодули не подходят. Но вот в других (скажем, для того, чтобы объеденить конфиги в /etc, свои скрипты в /usr/local и самописные ебилды в /var/db/paludis/repositories/local) это явно то, что нужно.
Re: git - вложенность репозиториев
Хм, но я бы для версионирования конфигов из ~/ возпользовался бы подобным способом - http://github.com/ryanb/dotfiles
Т.е. конфиги лежат в ~/dotfiles, которые рулятся git + скрипт (по ссылке rake task), который бы создавал симлинки на конфиги из ~/dotfiles в ~/
Можно еще тут обсуждение посмотреть - https://bbs.archlinux.org/viewtopic.php?id=73789
имхо, самый православный способ.
Т.е. конфиги лежат в ~/dotfiles, которые рулятся git + скрипт (по ссылке rake task), который бы создавал симлинки на конфиги из ~/dotfiles в ~/
Можно еще тут обсуждение посмотреть - https://bbs.archlinux.org/viewtopic.php?id=73789
имхо, самый православный способ.
- Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
- Контактная информация:
Re: git - вложенность репозиториев
«Самый православный» способ — это держать под управлением git ~/.config, там же все конфиги. Да вот только далеко не все программы такие «православные».
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: git - вложенность репозиториев
Не все.
Угу. А некоторые — настолько уродские, что вперемешку со своими конфигами хранят ещё и кучу вспомогательных данных для ускорения работы (кэш, например).
Мои розовые очки
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: git - вложенность репозиториев
"Не все" - это очень мягко звучит... "Мало какие, до последних пор" - подходит больше. Ну и, к тому же, ~/.config - это всё же часть проекта Portland, а тот же bash, например, слабо ассоциируется с десктопными приложениями.
Буквально вчера вычищал остатки Midori и, по-правде говоря, как-то не слишком нравится разброс файлов по ~/.cache, ~/.local и ~/.config, вместо одного каталога ~/.midoriwatashiwa_darede... писал(а): ↑28.09.2010 16:22Угу. А некоторые — настолько уродские, что вперемешку со своими конфигами хранят ещё и кучу вспомогательных данных для ускорения работы (кэш, например).
Кстати, часто в ужасе представляю, что забудусь и сделаю в $HOME/ нечто подобное "git reset --hard", в результате чего останусь лишь только с одними дотфайлами и вчерашним бекапом. У git нет никакой защиты (средствами конфига, например) от подобного действия?
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: git - вложенность репозиториев
Есть. git commit -a почаще :)
А мне очень нравится такая схема у Chrome/Chromium. Можно не выкаблучиваться, а просто git add .config, причем повторять это часто и со вкусом, чтобы установленные/удаленные расширения подхватывались. А у firefox пока по всем профилям прошерстишь и подобавляешь — поседеешь, если скрипт не писать. Скрипт под firefox, скрипт под midori, скрипт под ещё какую-нибудь гадость подобную. Ну их нафиг.
P.S. Это спор из той же оперы, что FHS vs. Program Files. Мне гораздо удобнее, когда верхний уровень структуры каталогов делится по назначению, а не по принадлежности к программе.
Мои розовые очки
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: git - вложенность репозиториев
Перепутал с "git clean" - я её имел в виду. От неё защиты (в плане - вообще запретить) нет?
-
- Бывший модератор
- Сообщения: 4038
- Статус: Искусственный интеллект (pre-alpha)
- ОС: Debian GNU/Linux
Re: git - вложенность репозиториев
Нет, как и от rm -rf. Однако, git clean просто так не работает, по крайней мере у меня, только с флажком -n или -f, хотя это весьма слабенький foolproof.
Мои розовые очки