Использование git-атрибута export-subst при экспорте подкаталога хранилища - PullRequest
1 голос
/ 22 ноября 2010

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

Решение выглядит так, как будто нужно добавить файл в .gitattributes с атрибутом export-subst и заменить маркер %H наимеет, когда git archive выполняется.Однако я не вижу такого поведения.

Я использовал страницу в книге Pro Git в качестве справочной информации (см. здесь ), но пытаюсь адаптировать ее для использования.с подкаталогом, а не с корнем репозитория.

Каталог, который я пытаюсь экспортировать, называется iDevice.Я создал файл в этой папке с именем hash_test, который содержит текст Last commit date: $Format:%cd$.

Когда я запускаю git archive --format=tar HEAD:iDevice/ | gzip > test.tar.gz, файл не изменяется.Когда я запускаю git archive --format=tar HEAD | gzip > test.tar.gz, файл изменяется .

Я пытался сохранить файл .gitattributes в корне моего каталога git, а также в корневом и подкаталогах.Я попытался сослаться на файл как iDevice/hash_test и hash_test в файле .gitattributes (так как я думал, что это может быть что-то похожее на ошибку, которую я видел в списке на kerneltrap.org, где использование --prefix = confused команды archive- URL-адрес заканчивается / mailarchive / git / 2008/4/8/1378004, на который я бы правильно сослался, но у меня нет репутации, чтобы публиковать дополнительные ссылки ...).Однако ничто из этого не помогло.

Будем благодарны за любые предложения!

1 Ответ

4 голосов
/ 22 ноября 2010

Атрибуты для git-archive взяты из дерева, которое архивируется.Это означает, что:

  • Для git archive ... HEAD:iDevice атрибуты должны быть в iDevice, или их невозможно увидеть.(Я предполагаю, что это поддерживается; я никогда не пробовал.)

  • Вы должны иметь commit ваш файл gitattributes.Что бы ни было в рабочем дереве, не имеет значения, если вы не используете опцию --worktree-attributes для git-archive.

И предложение, которое может обойти все это: используйте git archive ... HEAD iDevice, а не git archive HEAD:iDevice.Команда поддерживает <tree-ish> <path> аргументы;нет необходимости указывать объект дерева напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...