| Summary: | task commited without `--commit` | ||
|---|---|---|---|
| Product: | Infrastructure | Reporter: | ildar <ildar> |
| Component: | girar | Assignee: | Gleb F-Malinovskiy <glebfm> |
| Status: | CLOSED FIXED | QA Contact: | Andrey Cherepanov <cas> |
| Severity: | normal | ||
| Priority: | P5 | CC: | glebfm, grenka, ldv, rauty |
| Version: | unspecified | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
|
Description
ildar
2025-10-21 00:06:34 MSK
(Ответ для ildar на комментарий #0) > https://git.altlinux.org/tasks/archive/done/_388/397670/ > > How it happened: > 1. ssh build.alt task run 397670 (try 3) TESTED > 2. ssh build.alt task run 397670 --commit (try 4) FAILED > 3. ssh build.alt task run 397670 (try 5) DONE > > The problem here is that at try 5 I didn't want the task to be committed. Это база. Таск запоминает последнее состояние - commit или test-only. Чтобы таск снова начал запускаться в режиме test-only нужно было явно указать --test-only: ssh build.alt task run 397670 --test-only Как мне рассказывали, раньше вообще самое первое состояние было commit. И многие так коммитили тестовые таски, в которых забывали указывать --test-only. История старая, скорее всего изменять не будут. Вроде как не баг. (Ответ для Ajrat Makhmutov на комментарий #1) > Как мне рассказывали, раньше вообще самое первое состояние было commit. > И многие так коммитили тестовые таски, в которых забывали указывать > --test-only. Вместо того, чтобы стать внимательными, присобачили костыль. Зачем вам вообще тестовые таски? (In reply to Ajrat Makhmutov from comment #1) > Это база. Таск запоминает последнее состояние - commit или test-only. итересно. Не знал. > История старая, скорее всего изменять не будут. Вроде как не баг. Для кого как. Принцип наименьшего сюрприза (POLA/POLS). Его нарушение является багом для многих. (In reply to Grigory Ustinov from comment #2) > Зачем вам вообще тестовые таски? Собрать-показать-обсудить-закоммитить. Поскольку заговорили про историю: * сначала не было никакого test-only, все задания были в репозиторий и только ошибка могла спасти от коммита; * потом появился режим task run --test-only, который нужно было указывать каждый раз, если хотелось протестировать задание; * потом интерфейс поменяли: задания стали по умолчанию test-only, флаг test-only стал оставаться привязан к заданию после его обработки, т.е. task run не меняет флаг, а чтобы его поменять нужно передать либо --test-only, либо --commit. ======== В этом месте я пошёл читать обсуждение этого решения в devel@ и понял, что там были достаточно здравые идеи на эту тему (порой выраженные в форме, которая мне совсем не нравится, но что поделать). ======== Поэтому с сегодняшнего дня есть сверхновое продолжение этой истории: * появились команды task commit и task test, которые являются алиасами (для команд task run --commit и task run --test-only). Я думаю, что в таком виде эти алиасы дают хороший уровень в смысле least astonishment, а run сохраняет обратную совместимость. Ещё я заодно добавил у run сообщение "neither --test-only nor --commit is specified, assuming ..." в случае если режим не выбран явно. А для команды build можно так же сделать?=) (In reply to Grigory Ustinov from comment #5) > А для команды build можно так же сделать?=) А зачем? Ведь у неё очень предсказуемый интерфейс: test-only если не сказали иначе. (In reply to Gleb F-Malinovskiy from comment #4) > * появились команды task commit и task test, которые являются алиасами (для команд task run --commit и task run --test-only). Великолепно! Большое спасибо! |