Управление версиями.

Nov 21, 2019 02:47

Дерево слияний в git представляет собой граф, который эквивалентен графу зависимостей возможностей ПО ( Read more... )

планирование, контроль версий

Leave a comment

Comments 12

lj_frank_bot November 20 2019, 23:48:12 UTC
Здравствуйте!
Система категоризации Живого Журнала посчитала, что вашу запись можно отнести к категориям: История, Технологии.
Если вы считаете, что система ошиблась - напишите об этом в ответе на этот комментарий. Ваша обратная связь поможет сделать систему точнее.
Фрэнк,
команда ЖЖ.

Reply


rdia November 21 2019, 04:21:06 UTC
Чисто для статистики - в вашем окружении отрефлексировано то, что тесты имеют и очевидные отрицательные стороны? Ну простейшие, например, что это код, который нужно поддерживать.

Reply

thesz November 21 2019, 10:32:03 UTC
rdia November 21 2019, 13:42:46 UTC
Про то, что вы всё знаете, я знаю уже лет 5. Вопрос - окружающие вас погроммисты и начальники - они-то знают?

Кроме того речь не только о пропущенных ошибках. Речь о том, что вот вы получаете на рецензирование 10 строк кода и 45 строк тестов к нему. Это как в старой шутке про бочку мёда - 55 строк кода.

Их проверять в 5 раз дольше, чем 10. И если можно обойтись 10ю, поставив просто сигнатуру, то получается сильно проще.

Reply

thesz November 21 2019, 14:38:07 UTC
Наверное, знают. Я, как минимум, говорил.

По идее, тесты должны проверять функции, желательно, наблюдаемые пользователем, то есть, требования. Однако, пользователи могут варьироваться - что для одного программист, для другого пользователь, для выполнения задачи программистом он выдвигает требования к наличию готового функционала ("без сортировки за O(1/n!) алгоритм разложения на множители будет работать слишком медленно!"). Именно поэтому и тесты, на (минимально) разумное соответствие требованиям.

Reply


rdia November 21 2019, 04:28:20 UTC
Ну управление требованиями как-то завязано на развитие кода. То есть, да, после и в процессе добавления "некоего функционала" требования будут слегка пересмотрены.

Но git не отслеживает размышления в архитектурной фазе, когда мы тоже меняем требования. Git, всё-таки, естественным образом протоколирует лишь стадию кодирования, да и то не всю.

Точки слияния, скорее, относятся к functional points. Собственно, есть инъекция из functional points в merge commits, но это ни в коем случае не биекция. То есть, из истории git с помощью фильтрации можно получить "сетевой график" (project network).

Кстати, интересно было бы иметь "иерархическую историю" git - когда вместо squash&merge мы оставляем коммиты разделёнными (фарш ведь невозможно провернуть назад), но показываем лишь ключевые точки слияния.

Reply

thesz November 21 2019, 10:48:05 UTC
Functional points и прочее это следствие требований.

ТРЕ-БО-ВА-НИЙ

Требования отвечают на вопрос "почему надо" и именно они позволяют отсекать то, что (пока) делать не стоит (сложно или не нужно).

Можно запланировать граф веток и их слияний, опираясь на требования. И тогда состояние git будет показывать текущий прогресс.

Reply

rdia November 21 2019, 14:22:56 UTC
Ну да, они связаны - слияния и требования, но не напрямую, не жестко. А function points связаны жёстче, кмк.

Требования же меняются из-за, скажем, прототипов, которые в основной репозиторий не попадают.

Reply


Re: нам нужны тесты к нему, чтобы формально его провери mpd November 21 2019, 08:15:20 UTC
TDD?

Reply

RE: Re: нам нужны тесты к нему, чтобы формально его провер thesz November 21 2019, 10:45:23 UTC
Нет.

Главное здесь - слияние веток и ациклический граф слияний, как граф выполнения требований.

Тесты довольно вторичны.

Reply

RE: Re: нам нужны тесты к нему, чтобы формально его провер son_0f_morning November 21 2019, 22:14:16 UTC
Посмотрел бы я на циклический граф слияний в git (других cvs) хД

Reply

Re: Re: нам нужны тесты к нему, чтобы формально его провер thesz November 22 2019, 09:49:23 UTC
В случае git нам затруднительно его построить по причине использования криптосумм. В других VCS (не cvs!) это можно, но мало смысла по другой причине.

Reply


Leave a comment

Up