git.alt/FAQ
Материал из ALT Linux Wiki
(Новая: == Q1 == Q: Как удалить ветку из репозитория git.alt? A: Как обычно в git.) |
м (→Q: Как просто скопировать неудавшееся чужое задание?: rebuild is not an action shown by "task show") |
||
(25 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | + | {{DISPLAYTITLE:git.alt/FAQ}} | |
- | Q: Как удалить ветку из репозитория [[git.alt]]? | + | == Q: Как удалить ветку из репозитория [[git.alt]]? == |
- | A: [[Git#Удаление удалённных веток|Как обычно в git]]. | + | A: [[Git#Удаление удалённных веток в git|Как обычно в git]]. |
+ | |||
+ | == Q: Почему не получается собрать переделанный тег? == | ||
+ | |||
+ | A: Потому что теги фиксируются при добавлении задания на сборку. Лучше не мухлевать, см. тж. [http://ftp.kernel.org/pub/software/scm/git/docs/git-tag.html git-tag(1)] насчёт "re-tag". | ||
+ | |||
+ | == Q: Можно ли оперативно получить собранный пакет? == | ||
+ | |||
+ | A: [http://lists.altlinux.org/pipermail/devel/2009-February/166004.html да:] | ||
+ | # успешно собранные из gear-репозиториев пакеты сразу публикуются на [http://git.altlinux.org/gears/ /gears] (он же git.altlinux.org::gears) | ||
+ | # успешно собранные из srpm-файлов пакеты сразу публикуются на [http://git.altlinux.org/srpms/ /srpms] (он же git.altlinux.org::srpms) | ||
+ | |||
+ | Обратите внимание: | ||
+ | * обновления gear-пакетов НЕ публикуются на git.altlinux.org::srpms, а | ||
+ | * обновления srpm-пакетов НЕ публикуются на git.altlinux.org::gears. | ||
+ | |||
+ | Пакет, будучи однажды собранным из gear-репозитория, более не обновляется | ||
+ | на git.altlinux.org::srpms. | ||
+ | |||
+ | == Q: Почему не находится апстримный тег версии при постановке задания на сборку? == | ||
+ | |||
+ | A: | ||
+ | * либо не был добавлен в {{path|.gear/tags/}} (при помощи {{cmd|gear-store-tags}}, ранее {{cmd|gear-update-tags}}), | ||
+ | * либо добавлен после тега, отправленного на сборку -- в таком случае можно получить подобное: | ||
+ | |||
+ | generating pkg.tar for collectd.git tag "4.10.3-alt1"... \ | ||
+ | gear: .gear/rules line 1: Name "collectd-4.10.3" not found in tag list | ||
+ | gear: .gear/rules line 1: Failed to make archive | ||
+ | girar-task add: failed to create pkg.tar for collectd.git tag "4.10.3-alt1" | ||
+ | |||
+ | Рекомендуемый порядок команд для репозиториев, где апстримная ветка мержится в ту, на которой создаётся тег для сборки (например, <tt>sisyphus</tt>): | ||
+ | |||
+ | gear-store-tags -acv | ||
+ | gear-hsh | ||
+ | gear-create-tag | ||
+ | |||
+ | Во избежание забывания [http://lists.altlinux.org/pipermail/devel/2011-March/189512.html рекомендуется] добавить проверку перед коммитом (стоя в корневом каталоге gear-репозитория): | ||
+ | ln -snf /usr/share/git-core/templates/hooks/pre-commit.sample .git/hooks/pre-commit | ||
+ | |||
+ | == Q: Как просто скопировать неудавшееся чужое задание? == | ||
+ | Вот какую команду я сочинил, чтобы скопировать (воссоздать) задание: | ||
+ | |||
+ | ssh girar build $(ssh girar task show 183273 | ./girar-build-args-from-girar-task-show) | ||
+ | |||
+ | Если какие-то атрибуты не обрабатываются моим фильтром, то строчки останутся в неизменном виде (с двоеточием или <code>id=</code> -- это я обнаруживаю с помощью {{cmd|grep}} в примере использования ниже). | ||
+ | |||
+ | {{path|./girar-build-args-from-girar-task-show}}: | ||
+ | |||
+ | #!/bin/sed -rf | ||
+ | |||
+ | 1{ /test_only=yes/i --test-only | ||
+ | } | ||
+ | |||
+ | 1h | ||
+ | |||
+ | 1s!^((id|locked|shared|test_only)=[^ ]* ?)*repo=([^ ]+) ?((owner|state|try|iter)=[^ ]+ ?)*((depends=[^ ]+ ?)*)$!-b \3 \6! | ||
+ | |||
+ | 1s!depends=!--deps !g | ||
+ | |||
+ | ############### | ||
+ | # The actions # | ||
+ | ############### | ||
+ | |||
+ | # srpm is not handled. | ||
+ | # rebuild is not an action shown by "task show" (rather, it's handled by "build"). | ||
+ | |||
+ | s!^ [0-9]+:delete$!del! | ||
+ | |||
+ | # Only the default (sisyphus) is possible when using the build command: | ||
+ | s!^ [0-9]+:copy_repo=sisyphus$!copy! | ||
+ | |||
+ | # Simple way (commented out): fetch from the same original location | ||
+ | # (but unsafe: the tag may have changed): | ||
+ | #s!^ [0-9]+:dir=!! | ||
+ | |||
+ | # More reliable way: fetch from the old task: | ||
+ | /^ [0-9]+:dir=.*$/{ | ||
+ | s!^ ([0-9]+):dir=.*$!/tasks/@/gears/\1/git! | ||
+ | G | ||
+ | s!^(.*)@(.*)\n.*id=([^ ]+) .*$!\1\3\2!m | ||
+ | } | ||
+ | |||
+ | # The obligatory arguments: | ||
+ | s!^ [0-9]+:(tag_name|package)=!! | ||
+ | |||
+ | # Unneeded attributes; ignored: | ||
+ | s!^ [0-9]+:(userid|pkgname|tag_(id|author))=.*$!! | ||
+ | |||
+ | # Attributes we can't reuse; if you want to ignore them, uncomment: | ||
+ | #s!^ [0-9]+:relax_git_inheritance_check_for_commit=.*$!! | ||
+ | #s!^ [0-9]+:approved_by=.*$!! | ||
+ | |||
+ | # Usage example: | ||
+ | # | ||
+ | # for t in $(ssh girar task ls --all --brief | sed -re 's!^#([0-9]+) .*!\1!'); do \ | ||
+ | # ssh girar task show "$t" | ./girar-build-args-from-girar-task-show \ | ||
+ | # | if ! egrep -qs '(:|id=)'; then \ | ||
+ | # ssh girar build $(ssh girar task show "$t" | ./girar-build-args-from-girar-task-show) \ | ||
+ | # && ssh girar task rm "$t"; \ | ||
+ | # else echo "# Unhandled attrs in task $t!"; \ | ||
+ | # fi; \ | ||
+ | # done | ||
+ | |||
+ | Это работает, если в исходном задании были только сборки из gear-repo (и прочее), но не из srpm. (Если реализуете для srpm, пожалуйста, поделитесь результатом!) | ||
+ | |||
+ | Массовый "перезапуск" заданий (только тех, которые полностью переработаны фильтром) делался мной примерно так: | ||
+ | |||
+ | for t in $(ssh girar task ls --all --brief | fgrep imz | sed -re 's!^#([0-9]+) .*!\1!'); do \ | ||
+ | if (( t / 1024 >= 179 )); then continue; fi; \ | ||
+ | ssh girar task show "$t" | ./girar-build-args-from-girar-task-show \ | ||
+ | | if ! egrep -qs '(:|id=)'; then \ | ||
+ | ssh girar build $(ssh girar task show "$t" | ./girar-build-args-from-girar-task-show) \ | ||
+ | && ssh girar task rm "$t"; \ | ||
+ | else echo "# Unhandled attrs in task $t!"; \ | ||
+ | fi; \ | ||
+ | done | ||
+ | |||
+ | ;Замечания: | ||
+ | Копировать ''удавшееся'' задание просто так, наверное, не имеет | ||
+ | большого смысла (потому что его результаты уже попали в репозиторий). | ||
+ | (Проигрывание ещё раз удавшегося задания -- другая задача. Это | ||
+ | происходит при регулярной тестовой пересборке Sisyphus.) | ||
+ | |||
+ | Проиграть ''своё'' задание в виде нового, наверное, не такая сложная | ||
+ | задача, потому что можно просто повторить свои shell-команды. | ||
+ | |||
+ | ;Объяснение: делаем список чередующихся путей к gear-repo и тегов фильтрацией вывода {{cmd|task show}}: | ||
+ | |||
+ | $ ssh girar task show 153515 | ||
+ | id=153515 locked=no shared=no test_only=yes repo=sisyphus owner=cas state=FAILED try=26 iter=1 | ||
+ | 40:dir=/people/cas/packages/libwbxml.git | ||
+ | 40:tag_name=0.11.4-alt1 | ||
+ | 40:tag_id=d8143b4e577da0cd3ec5510406e5544600318fca | ||
+ | 40:tag_author=cas <cas@altlinux.org> | ||
+ | 40:userid=cas | ||
+ | 40:pkgname=libwbxml | ||
+ | 100:userid=cas | ||
+ | 200:userid=cas | ||
+ | 300:userid=cas | ||
+ | 400:userid=cas | ||
+ | 440:dir=/people/cas/packages/lasso.git | ||
+ | 440:tag_name=2.5.0-alt1 | ||
+ | 440:tag_id=e276eb2af0c557b67a4b44cc92343c3671f52e72 | ||
+ | 440:tag_author=cas <cas@altlinux.org> | ||
+ | 440:userid=cas | ||
+ | 440:pkgname=lasso | ||
+ | ... | ||
+ | |||
+ | == Q: Какие лимиты на сборочнице? == | ||
+ | |||
+ | См. [[Hasher/Справочник#Лимиты на сборку у инкамингера]]. | ||
+ | |||
+ | {{Category navigation|title=git.alt|category=git.alt|sortkey={{SUBPAGENAME}}}} | ||
+ | {{Category navigation|title=FAQ|category=FAQ|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 12:34, 26 мая 2017
Q: Как удалить ветку из репозитория git.alt?
A: Как обычно в git.
Q: Почему не получается собрать переделанный тег?
A: Потому что теги фиксируются при добавлении задания на сборку. Лучше не мухлевать, см. тж. git-tag(1) насчёт "re-tag".
Q: Можно ли оперативно получить собранный пакет?
A: да:
- успешно собранные из gear-репозиториев пакеты сразу публикуются на /gears (он же git.altlinux.org::gears)
- успешно собранные из srpm-файлов пакеты сразу публикуются на /srpms (он же git.altlinux.org::srpms)
Обратите внимание:
- обновления gear-пакетов НЕ публикуются на git.altlinux.org::srpms, а
- обновления srpm-пакетов НЕ публикуются на git.altlinux.org::gears.
Пакет, будучи однажды собранным из gear-репозитория, более не обновляется на git.altlinux.org::srpms.
Q: Почему не находится апстримный тег версии при постановке задания на сборку?
A:
- либо не был добавлен в .gear/tags/ (при помощи gear-store-tags, ранее gear-update-tags),
- либо добавлен после тега, отправленного на сборку -- в таком случае можно получить подобное:
generating pkg.tar for collectd.git tag "4.10.3-alt1"... \ gear: .gear/rules line 1: Name "collectd-4.10.3" not found in tag list gear: .gear/rules line 1: Failed to make archive girar-task add: failed to create pkg.tar for collectd.git tag "4.10.3-alt1"
Рекомендуемый порядок команд для репозиториев, где апстримная ветка мержится в ту, на которой создаётся тег для сборки (например, sisyphus):
gear-store-tags -acv gear-hsh gear-create-tag
Во избежание забывания рекомендуется добавить проверку перед коммитом (стоя в корневом каталоге gear-репозитория):
ln -snf /usr/share/git-core/templates/hooks/pre-commit.sample .git/hooks/pre-commit
Q: Как просто скопировать неудавшееся чужое задание?
Вот какую команду я сочинил, чтобы скопировать (воссоздать) задание:
ssh girar build $(ssh girar task show 183273 | ./girar-build-args-from-girar-task-show)
Если какие-то атрибуты не обрабатываются моим фильтром, то строчки останутся в неизменном виде (с двоеточием или id=
-- это я обнаруживаю с помощью grep в примере использования ниже).
./girar-build-args-from-girar-task-show:
#!/bin/sed -rf 1{ /test_only=yes/i --test-only } 1h 1s!^((id|locked|shared|test_only)=[^ ]* ?)*repo=([^ ]+) ?((owner|state|try|iter)=[^ ]+ ?)*((depends=[^ ]+ ?)*)$!-b \3 \6! 1s!depends=!--deps !g ############### # The actions # ############### # srpm is not handled. # rebuild is not an action shown by "task show" (rather, it's handled by "build"). s!^ [0-9]+:delete$!del! # Only the default (sisyphus) is possible when using the build command: s!^ [0-9]+:copy_repo=sisyphus$!copy! # Simple way (commented out): fetch from the same original location # (but unsafe: the tag may have changed): #s!^ [0-9]+:dir=!! # More reliable way: fetch from the old task: /^ [0-9]+:dir=.*$/{ s!^ ([0-9]+):dir=.*$!/tasks/@/gears/\1/git! G s!^(.*)@(.*)\n.*id=([^ ]+) .*$!\1\3\2!m } # The obligatory arguments: s!^ [0-9]+:(tag_name|package)=!! # Unneeded attributes; ignored: s!^ [0-9]+:(userid|pkgname|tag_(id|author))=.*$!! # Attributes we can't reuse; if you want to ignore them, uncomment: #s!^ [0-9]+:relax_git_inheritance_check_for_commit=.*$!! #s!^ [0-9]+:approved_by=.*$!! # Usage example: # # for t in $(ssh girar task ls --all --brief | sed -re 's!^#([0-9]+) .*!\1!'); do \ # ssh girar task show "$t" | ./girar-build-args-from-girar-task-show \ # | if ! egrep -qs '(:|id=)'; then \ # ssh girar build $(ssh girar task show "$t" | ./girar-build-args-from-girar-task-show) \ # && ssh girar task rm "$t"; \ # else echo "# Unhandled attrs in task $t!"; \ # fi; \ # done
Это работает, если в исходном задании были только сборки из gear-repo (и прочее), но не из srpm. (Если реализуете для srpm, пожалуйста, поделитесь результатом!)
Массовый "перезапуск" заданий (только тех, которые полностью переработаны фильтром) делался мной примерно так:
for t in $(ssh girar task ls --all --brief | fgrep imz | sed -re 's!^#([0-9]+) .*!\1!'); do \ if (( t / 1024 >= 179 )); then continue; fi; \ ssh girar task show "$t" | ./girar-build-args-from-girar-task-show \ | if ! egrep -qs '(:|id=)'; then \ ssh girar build $(ssh girar task show "$t" | ./girar-build-args-from-girar-task-show) \ && ssh girar task rm "$t"; \ else echo "# Unhandled attrs in task $t!"; \ fi; \ done
- Замечания
Копировать удавшееся задание просто так, наверное, не имеет большого смысла (потому что его результаты уже попали в репозиторий). (Проигрывание ещё раз удавшегося задания -- другая задача. Это происходит при регулярной тестовой пересборке Sisyphus.)
Проиграть своё задание в виде нового, наверное, не такая сложная задача, потому что можно просто повторить свои shell-команды.
- Объяснение
- делаем список чередующихся путей к gear-repo и тегов фильтрацией вывода task show:
$ ssh girar task show 153515 id=153515 locked=no shared=no test_only=yes repo=sisyphus owner=cas state=FAILED try=26 iter=1 40:dir=/people/cas/packages/libwbxml.git 40:tag_name=0.11.4-alt1 40:tag_id=d8143b4e577da0cd3ec5510406e5544600318fca 40:tag_author=cas <cas@altlinux.org> 40:userid=cas 40:pkgname=libwbxml 100:userid=cas 200:userid=cas 300:userid=cas 400:userid=cas 440:dir=/people/cas/packages/lasso.git 440:tag_name=2.5.0-alt1 440:tag_id=e276eb2af0c557b67a4b44cc92343c3671f52e72 440:tag_author=cas <cas@altlinux.org> 440:userid=cas 440:pkgname=lasso ...