mercurial: как мне получить имя корневой папки проекта в хуке группы изменений?

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

Всякий раз, когда поступает набор изменений для репозитория на моем сервере, я хочу выполнить некоторые пользовательские задачи. Я добавил раздел hooks в hgweb.config:

[hooks]
changegroup = printenv > /tmp/test/env.txt

Из информации, которую мне дает printenv, я вижу, что могу извлечь свой уникальный идентификатор для репо, но не название проекта! Мне нужно имя корневой папки репо для вызова API. Есть ли способ получить эту информацию?


person LarsVegas    schedule 04.09.2015    source источник
comment
Внешние хуки должны выполняться с корнем репозитория в качестве рабочего каталога. Вы можете получить это через "$PWD" или "$(pwd)" в сценарии оболочки. Для последней части папки используйте "$(basename $PWD)" или "$(basename "$(pwd)")".   -  person Reimer Behrends    schedule 04.09.2015
comment
Что я сказал, когда я смотрю на вывод printenv, я вижу содержимое "$PWD", но базовое имя является уникальным идентификатором, а не именем проекта, поскольку он был изначально создан.   -  person LarsVegas    schedule 05.09.2015
comment
У проектов Mercurial нет имени, и оно нигде не хранится, кроме как в качестве имени каталога (или его части) по соглашению. Если вы храните репозиторий в каталоге с другим именем, вы теряете эту информацию.   -  person Reimer Behrends    schedule 05.09.2015
comment
Ты абсолютно прав. Я думал, что имя каталога на стороне сервера — это какой-то уникальный хэш, созданный mercurial. Но в моем случае он создается приложением django, которое предоставляет репозитории через пользовательский интерфейс. Если вы поместите свой первый комментарий в ответ, я соглашусь.   -  person LarsVegas    schedule 07.09.2015


Ответы (1)


hg root указывает каталог, в котором находится репозиторий.

Однако не существует «уникального имени» или чего-то подобного — это просто имя каталога, которое можно изменить с помощью простой команды переименования на уровне файловой системы.

person planetmaker    schedule 08.09.2015