Страницы

Поиск по вопросам

воскресенье, 12 января 2020 г.

Как узнать текущую ветку и элейес репозитория на сервере git?

#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, содержащие хэш коммита, на который в данный момент и указывает соответствующая ветка.

Комментариев нет:

Отправить комментарий