Bug 56523 - task commited without `--commit`
Summary: task commited without `--commit`
Status: CLOSED FIXED
Alias: None
Product: Infrastructure
Classification: Infrastructure
Component: girar (show other bugs)
Version: unspecified
Hardware: x86_64 Linux
: P5 normal
Assignee: Gleb F-Malinovskiy
QA Contact: Andrey Cherepanov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-21 00:06 MSK by ildar
Modified: 2025-10-21 21:30 MSK (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description ildar 2025-10-21 00:06:34 MSK
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.
Comment 1 Ajrat Makhmutov 2025-10-21 01:18:17 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.
История старая, скорее всего изменять не будут. Вроде как не баг.
Comment 2 Grigory Ustinov 2025-10-21 07:11:21 MSK
(Ответ для Ajrat Makhmutov на комментарий #1)
> Как мне рассказывали, раньше вообще самое первое состояние было commit.
> И многие так коммитили тестовые таски, в которых забывали указывать
> --test-only.

Вместо того, чтобы стать внимательными, присобачили костыль. Зачем вам вообще тестовые таски?
Comment 3 ildar 2025-10-21 08:04:12 MSK
(In reply to Ajrat Makhmutov from comment #1)
> Это база. Таск запоминает последнее состояние - commit или test-only.
итересно. Не знал.

> История старая, скорее всего изменять не будут. Вроде как не баг.
Для кого как.
Принцип наименьшего сюрприза (POLA/POLS). Его нарушение является багом для многих.

(In reply to Grigory Ustinov from comment #2)
> Зачем вам вообще тестовые таски?

Собрать-показать-обсудить-закоммитить.
Comment 4 Gleb F-Malinovskiy 2025-10-21 12:28:43 MSK
Поскольку заговорили про историю:
* сначала не было никакого 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 ..." в случае если режим не выбран явно.
Comment 5 Grigory Ustinov 2025-10-21 12:49:13 MSK
А для команды build можно так же сделать?=)
Comment 6 Gleb F-Malinovskiy 2025-10-21 12:57:34 MSK
(In reply to Grigory Ustinov from comment #5)
> А для команды build можно так же сделать?=)
А зачем? Ведь у неё очень предсказуемый интерфейс: test-only если не сказали иначе.
Comment 7 ildar 2025-10-21 21:30:06 MSK
(In reply to Gleb F-Malinovskiy from comment #4)
> * появились команды task commit и task test, которые являются алиасами (для команд task run --commit и task run --test-only).

Великолепно! Большое спасибо!