#git
Есть сервер git, туда я поставил web-интерфейс, и надо прикрутить ctags на файлы, для этого надо обработать каждый push в hook'ах, решил я сделать две ветки на репозитории origin: master dev Надо теперь как то узнавать элейес репозитория (origin или др.), и ветку, по http такая информация не передается. проделал я в локальном репе: git checkout dev git commit -am message git push origin dev` после этого я посмотрел файл head: в .git/HEAD на клиенте: ref: refs/heads/dev на сервере ref: refs/heads/master dev была создана после master но HEAD по сути должен же указывать на последний коммит в дереве изменений? Почему на сервере master? вот еще выполнил на сервере: grep dev $(find . -name "*") grep: .: Это каталог grep: ./branches: Это каталог grep: ./logs: Это каталог grep: ./logs/refs: Это каталог grep: ./logs/refs/heads: Это каталог grep: ./hooks: Это каталог grep: ./objects: Это каталог grep: ./objects/48: Это каталог grep: ./objects/64: Это каталог grep: ./objects/23: Это каталог grep: ./objects/85: Это каталог grep: ./objects/0d: Это каталог grep: ./objects/c8: Это каталог grep: ./objects/a5: Это каталог grep: ./objects/5a: Это каталог grep: ./objects/c6: Это каталог grep: ./objects/4b: Это каталог grep: ./objects/50: Это каталог grep: ./objects/91: Это каталог grep: ./objects/pack: Это каталог Двоичный файл ./objects/pack/pack-382c3207511c9c58c83e7d34690c5d3615876bf0.pack совпадает grep: ./objects/45: Это каталог grep: ./objects/ab: Это каталог grep: ./objects/1f: Это каталог grep: ./objects/41: Это каталог grep: ./objects/2e: Это каталог grep: ./objects/dd: Это каталог grep: ./objects/2f: Это каталог grep: ./objects/62: Это каталог grep: ./objects/b9: Это каталог grep: ./objects/info: Это каталог grep: ./objects/ad: Это каталог grep: ./objects/30: Это каталог grep: ./refs: Это каталог grep: ./refs/tags: Это каталог grep: ./refs/heads: Это каталог grep: ./info: Это каталог ./info/refs:4869dddb814126c310e424276797f4bf0ea7540a refs/heads/dev то есть, может быть информация о ветке хранится в .pack файле? который по сути является хеш-таблицей(архивом) всего проекта.
Ответы
Ответ 1
предварительное напоминание в git-е веткой (branch) называется «скользящий» указатель на commit, а не набор commit-ов, как принято в некоторых других системах управления контролем версий. но HEAD по сути должен же указывать на последний коммит в дереве изменений? Почему на сервере master? в bare-репозитории файл HEAD ссылается на «ветку по умолчанию», что в первую очередь влияет на результаты клонирования этого репозитория: если при клонировании не указано, на какую ветку следует переключить рабочий каталог (working directory) по окончании клонирования, именно на эту ветку и произойдёт переключение. может быть информация о ветке хранится в .pack файле? информация о ветках хранится в каталоге refs/heads. в описанном вами репозитории там должно быть по крайней мере два файла master и dev, содержащие хэш коммита, на который в данный момент и указывает соответствующая ветка.
Комментариев нет:
Отправить комментарий