Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Как уменьшить количество изменений в ветке?

895  1 2 3 все
AlexNek патриот10.05.23 19:57
AlexNek
10.05.23 19:57 

Начали работу над задачей, создали ветку, начали менять код, запостили изменения. И вот находим совершенно новую, неожидаемую проблему, которая мешает выполнению данной задачи, но никак не связана с ней. Что теперь делать с изменениями для этой новой проблемы?


Например: задача добавить новую колонку в для отображения в таблице. Добавили. Но для теста нужно еще обновить данные в таблице /по умолчанию нет ничего/, а вот обновить данные не получается, хотя раньше можно было.

#1 
alex445 коренной житель10.05.23 20:50
NEW 10.05.23 20:50 
в ответ AlexNek 10.05.23 19:57

Ничё не понял, но если одно мешает другому, значит они связаны.

#2 
AlexNek патриот10.05.23 21:55
AlexNek
NEW 10.05.23 21:55 
в ответ alex445 10.05.23 20:50

вот пример. В желтой рамке, то что было до того, внизу что хотят. Забыл только стереть содержимое ячеек, поначалу все пустые.

но если одно мешает другому, значит они связаны.

задача - добавить колонку, кнопка ну никак не связана с этой задачей.

#3 
alex445 коренной житель10.05.23 23:23
NEW 10.05.23 23:23 
в ответ AlexNek 10.05.23 21:55

Не понял, что мешает добавить? В таблице нет колонки ещё и она не мапится на гуй, или что? Ну сделайте промежуточный класс, который принимает данные из таблицы с одной колонкой и ещё имеет временную вторую колонку с любыми данными.

#4 
AlexNek патриот11.05.23 19:13
AlexNek
11.05.23 19:13 
в ответ alex445 10.05.23 23:23
Не понял, что мешает добавить?

Ничего не мешает, вопрос совершенно в другом.


Добавили мы колонку и еще, что надо, но теперь нужны данные, а кнопа не работает, нужно править. Так вот что делать с этими изменениями?

И кстати, это просто пример, на самом деле все сложнее, но принцип тот же.

#5 
alex445 коренной житель12.05.23 00:53
NEW 12.05.23 00:53 
в ответ AlexNek 11.05.23 19:13, Последний раз изменено 12.05.23 00:57 (alex445)

Не понял. Нужно править, но через короткое время в табле появится нужная колонка, и всё исправленное нужно обратно возвращать? И вы типа не хотите создавать новую тестовую ветку, которую через пару дней всё равно мерджить придётся? А в чём проблема делать короткоживующие ветки? В разных обущающих уроках по контролю версий часто показывают варианты, где ветка из пары коммитов состоит всего, а потом либо убивается, либо мёрджится. Да там даже не всю ветку мёрджить надо - лишь те файлы, которые вы меняли для тестов со своей таблицей.

#6 
MrSanders коренной житель12.05.23 09:58
NEW 12.05.23 09:58 
в ответ AlexNek 10.05.23 19:57
Начали работу над задачей, создали ветку, начали менять код, запостили изменения. ...

Тебе интересно что стоит сделать в git-е, так?

#7 
Simple Nothing is f*cked12.05.23 15:42
Simple
NEW 12.05.23 15:42 
в ответ AlexNek 10.05.23 19:57

Новая ветка для проблемы; когда будет решена - слияние с веткой для задачи.

#8 
MrSanders коренной житель12.05.23 16:00
NEW 12.05.23 16:00 
в ответ Simple 12.05.23 15:42

и с мастером!

#9 
Simple Nothing is f*cked12.05.23 16:12
Simple
NEW 12.05.23 16:12 
в ответ MrSanders 12.05.23 16:00

Это уже детали.

Мастер, кстати, не политкорретно ;)

#10 
Simple Nothing is f*cked12.05.23 16:14
Simple
NEW 12.05.23 16:14 
в ответ alex445 12.05.23 00:53

Пережитки сабвершна или, прости господи, clearcase.

#11 
AlexNek патриот12.05.23 17:50
AlexNek
NEW 12.05.23 17:50 
в ответ alex445 12.05.23 00:53
Не понял

Сорри, не знаю что еще нужно пояснить

#12 
AlexNek патриот12.05.23 18:02
AlexNek
NEW 12.05.23 18:02 
в ответ MrSanders 12.05.23 09:58
Тебе интересно что стоит сделать в git-е,

как одно из направлений. Но вообще то, проблема гораздо шире.

Есть PBI, есть Task, есть бранч к таску, есть время выполнения таски, есть PR. Есть код, есть изменения непосредственно относящиеся к задаче, а есть нет.

Все это нужно синхронизировать и для этого нужно иметь чётко описанный алгоритм, что делать в каком случае.


Вот например, комментарий с ошибкой написан, код неправильно отформатирован, имя функции неправильное и т.п.

Ну или что бы идти дальше, нужно сделать небольшие изменения, не относящиеся непосредственно к задаче.


#13 
AlexNek патриот12.05.23 18:08
AlexNek
NEW 12.05.23 18:08 
в ответ Simple 12.05.23 15:42

Новая ветка для проблемы - откуда создаем ветку и когда? Может достаточно изменить одну троку, а может и по некоторому количеству строк в разных файлах.

Если из мастера, то там могут быть уже новые изменения от другого чела. Да и дальнейшая работа может не иметь смысла без предыдущей правки. Если из текущей, то как делать PR только для этих изменений, в файле то могут быть изменения и для текущей задачи.

#14 
alex445 коренной житель12.05.23 19:05
NEW 12.05.23 19:05 
в ответ Simple 12.05.23 16:12, Последний раз изменено 12.05.23 19:05 (alex445)
Мастер, кстати, не политкорретно ;)

Слияние с веткой белой мужской шовинистической свиньи подойдёт? ))

#15 
alex445 коренной житель12.05.23 19:10
NEW 12.05.23 19:10 
в ответ AlexNek 12.05.23 18:08, Последний раз изменено 12.05.23 19:11 (alex445)

Обычно куски проекта изолируют, чтобы более-менее не зависеть от веток других разработчиков, а внутри команды планируют, кто когда и какую ветку будет делать и когда будут их мёрджить или убивать, чтобы веток не сильно много было и они не сильно затягивались по времени. В ветке же вы обычно только свою часть правите, а не по всему проекту тестовые изменения раскидываете? Так что при слиянии число конфликтов будет минимальным. Ну а перед слиянием своей ветки подтягиваете последнюю версию из мастера, чтобы протестить с уже последними изменениями. Это вроде даже автоматом делается - сначала чекаут или получение последний версии, а потом чекин.

#16 
Бесконечный цикл завсегдатай12.05.23 19:59
NEW 12.05.23 19:59 
в ответ AlexNek 10.05.23 19:57

Я тоже не понял в чем проблема.


1) Все что надо для решения задачи делаешь в одной ветке, потом в мастера пихаешь (ну или в stage у кого как принято)

2) Делаешь ветку для подзадачи из данной ветки и в конце пихаешь в ветку задачи (а потом как всегда в мастера). Это если не очень уверен в нужности или это просто эксперимент

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


#17 
Simple Nothing is f*cked12.05.23 20:36
Simple
NEW 12.05.23 20:36 
в ответ alex445 12.05.23 19:05

Главная ветка теперь называется main ;)

#18 
Simple Nothing is f*cked12.05.23 21:03
Simple
NEW 12.05.23 21:03 
в ответ AlexNek 12.05.23 18:08

Смотря какая проблема. Если в проде, создаётся новая задача - хотфикс, создается новая ветка от главной ветки (мастер или мэйн), дальше все по плану - PR в мастер. После этого мастер сливается с веткой для задачи, и работа идёт дальше.

Если проблема только для реализации задачи, фиксите ее прямо в ветке для задачи.

#19 
AlexNek патриот12.05.23 23:27
AlexNek
NEW 12.05.23 23:27 
в ответ Бесконечный цикл 12.05.23 19:59
Все что надо для решения задачи делаешь в одной ветке, потом в мастера пихаешь

Как можно пихать в мастер то что не работает?


Делаешь ветку для подзадачи из данной ветки

иногда бывает так что проблема накатывается комом или просто видишь рефакторинг. Значит всё туды и открывать новую таску? только на что? Если хочется много не связанных исправлений, которые-то сразу и не видно.

постоянно открывать новые и на них PR в новую задачу, так PR задачи будет с мастером сравнивать и там будут изменения не имеющие отношения к задаче.


Если подзадача полезна другим уже сейчас

Кто должен определять степень полезности?

Да и смысла в подзадаче может и не быть, пока не будут активированы новые изменения.

Пока приходится делать двойную работу, делать локально как надо, а после смотреть что относится к задача, а что нет и разбивать на новые ветки.


Хотя вот попалась хитрая штука. В блазоре "хтмл код" можно записывать в одном файле с "cs", а можно и в разных.

Согласно текущему соглашению всё должно быть в разных. Но это можно сделать только когда вообще никто не будет работать над этим проектом.


#20 
MrSanders коренной житель13.05.23 07:25
NEW 13.05.23 07:25 
в ответ Simple 12.05.23 20:36
Главная ветка теперь называется main ;)

Чуть не поседел. Побежал проверять. Нифига. В версии 2.40.1 от 2023-04-25 всё ещё master. Так что это только богомерзкие гитхабы с гитлабами такой политкорректной хренью занимаются.

И ваще, у меня в предках достаточно крепостных, чтобы я перестал использовать терминологию master-slave :)

P.S. А в Африке живут негры. Нас так в школе учили (c)

#21 
Simple Nothing is f*cked13.05.23 07:35
Simple
NEW 13.05.23 07:35 
в ответ MrSanders 13.05.23 07:25

У меня новый проект, там используют наш центральный CI/CD (Magenta CI/CD). Gitlab аз есмь. Bitbucket на VW пока не изменили.

#22 
Simple Nothing is f*cked13.05.23 07:37
Simple
NEW 13.05.23 07:37 
в ответ AlexNek 12.05.23 23:27

Вы себе жизнь только усложняете без нужды. Зачем плодить новые сущности? Структуры - это хорошо правильно, но не стоит это доводить до абсурда.

#23 
AlexNek патриот13.05.23 11:22
AlexNek
NEW 13.05.23 11:22 
в ответ Simple 13.05.23 07:37
Зачем плодить новые сущности?

Какие именно? Как Вы видите проще?

#24 
Simple Nothing is f*cked13.05.23 17:32
Simple
NEW 13.05.23 17:32 
в ответ AlexNek 13.05.23 11:22

Не заводить на каждый чих новую задачу.

#25 
AlexNek патриот13.05.23 19:26
AlexNek
NEW 13.05.23 19:26 
в ответ Simple 13.05.23 17:32
Не заводить на каждый чих новую задачу

С удовольствием так бы и делал. Но хотят обратное. Как найти золотую середину?

Пока получается проще, ничего не менять, что видишь "неопрятным".

#26 
alex445 коренной житель13.05.23 20:40
NEW 13.05.23 20:40 
в ответ AlexNek 13.05.23 19:26

Я уже вторую неделю езжу с какой-то букашкой, размазанной по стеклу, где дворники не достают. Просто когда сажусь в машину, лень выходить протирать стекло, а когда приезжаю, забываю.

#27 
MrSanders коренной житель14.05.23 10:31
NEW 14.05.23 10:31 
в ответ AlexNek 13.05.23 19:26
С удовольствием так бы и делал. Но хотят обратное. Как найти золотую середину?

Кто хочет? Вот кто хочет, тот пусть и объясняет.

Адекватные договариваются внутри команды. В основном для того, чтобы не править одно и то же два раза. Если ты работаешь один, то тебе глубоко пофиг где ты что правишь.

Обычно договаривались так: косметические изменения (нашёл опечатку, переменная криво названа, комментарий добавить) молча делаются в ветке, с которой ты сейчас работаешь. С найденными ошибками сложнее. Насколько критична ошибка? Как долго я буду работать над текущей веткой? Сколько по времени займёт исправление ошибки?

Если ошибка серьёзная, то для неё заводится и отдельный тикет и отдельная ветка. Чтобы как можно лучше задокументировать когда она была поправлена. Если не критична, то как долго я буду работать над текущей веткой? Если долго, то создаём новую ветку. Чтобы другие не ждали исправлений или не правили параллельно. Если не долго, то как много времени надо поправить на исправление? Если не больше 1-2 часов (тут сами договаривайтесь), то делам в текущей. Если больше - выносим в отдельную ветку. Как-то так.

#28 
AlexNek патриот14.05.23 11:13
AlexNek
NEW 14.05.23 11:13 
в ответ MrSanders 14.05.23 10:31
косметические изменения

ну тут тоже не все так просто. Вот хотя бы есть длинная строка, код форматер сделает ее правильной без проблем, но народ будет видеть изменения в нескольких строках и искать а может там еще что то и изменено?

Но фактически да - отсутствует набор правил для правки кода. Вот только как их написать покороче.

#29 
Бесконечный цикл завсегдатай14.05.23 15:17
NEW 14.05.23 15:17 
в ответ AlexNek 14.05.23 11:13

PR и таски создаются для решения реальной проблемы, соответственно, если сомневаешься, то просто занимайся своей проблемой и все. Главный критерий: твой код должен работать и твоя проблема должна быть решена. Либо ты решил проблему, либо нет, все остальное не имеет значения.


Нужно ли делать что-то еще? Это все неформально. Форматирование делается автоматически (если люди не могут сами договориться). Все что не влияет на функциональность можно вполне улучшать (комментарии, доки).


Ну есть еще кое-какие критерии:

- Если не чувствуешь уверенность, например, это чужой проект, то и не надо лишнего ничего делать.

- Если чувствуешь собственность и тебе с этим жить дальше, то вполне можно и даже нужно где-то что-то подправлять, что не относится к задача. Типа просто мимо проходил и решил подправить. Но тут надо знать меру.

- Если это никто не заметит и не оценит и мне это не надо, то я бы вряд ли что-то делал

- Есть куча проектов со своей культурой и правилами, а потому желательно адаптироваться и не пытаться изменить эти правила.

- Частенько ты можешь попросить коллегу сделать нужные тебе изменения в его PR, или наоборот тебя могут попросить внести пару строк. Это если изменения лучше относятся к другому PR, который уже вот-вот запушат в мастера. Ну типа "вставь пару строк логов, я хочу видеть, что там он пишет".


#30 
AlexNek патриот14.05.23 22:08
AlexNek
NEW 14.05.23 22:08 
в ответ Бесконечный цикл 14.05.23 15:17, Последний раз изменено 14.05.23 22:10 (AlexNek)
все остальное не имеет значения.

Ну вот к этому всё и сводится, похоже. хммм


Все что не влияет на функциональность можно вполне улучшать

В этом то и проблема. Функциональность не страдает, но делать низзя.

Было

func1(longNamelongNamelongNamelongNamelongName1, longNamelongNamelongNamelongNamelongName2, longNamelongNamelongNamelongNamelongName3);

Стало

func1(
    longNamelongNamelongNamelongNamelongName1, 
    longNamelongNamelongNamelongNamelongName2, 
    longNamelongNamelongNamelongNamelongName3
);


Если это никто не заметит и не оценит

Еще не встречал чтобы было как то по другому. Ну разве в каких то редких случаях.

#31 
alex445 коренной житель14.05.23 22:51
NEW 14.05.23 22:51 
в ответ AlexNek 14.05.23 22:08
Было
Стало

Я всегда так делаю со своим кодом, если параметров слишком много и (или) их имена слишком длинные. Чужой обычно не трогаю, если я не отвечаю за его переработку.

#32 
MrSanders коренной житель15.05.23 07:45
NEW 15.05.23 07:45 
в ответ AlexNek 14.05.23 22:08
В этом то и проблема. Функциональность не страдает, но делать низзя.

Кто это сказал? Он это требование как-то обосновал? Или так, трепанул не подумав? В проекте есть какие-то требования к коду? Максимальную длину строки для читаемости ограничивали?

#33 
AlexNek патриот15.05.23 19:55
AlexNek
NEW 15.05.23 19:55 
в ответ MrSanders 15.05.23 07:45
Он это требование как-то обосновал?

Когда видишь изменения невозможно быстро оценить, что это просто разнос строк. Возможно там были сделаны и еще какие то изменения.

Это же в примере только так просто.


В проекте есть какие-то требования к коду?

Конечно, stylecop даже проверяет совсем дурные правила (типа в строке не должно быть "конечных" пробелов)


Максимальную длину строки для читаемости ограничивали?

Да, но в данном конкретном случае длина меньше допустимой

#34 
alex445 коренной житель16.05.23 00:43
NEW 16.05.23 00:43 
в ответ AlexNek 15.05.23 19:55, Последний раз изменено 16.05.23 00:47 (alex445)

В системах контроля версий нужно сохранять лишь семантические конструкции, а не весь синтаксис вплоть до отдельного пробела. Тогда при загрузке на любую машину с любыми правилами форматирования у каждого будет так, как ему нравится, при этом код будет по сути оставаться тем же самым. Автоматически же решится большинство проблем с обновлением синтаксиса до последних версий языка - просто выбрал версию, и если семантика однозначно отображается на новый синтаксис, то получаешь его.

#35 
MrSanders коренной житель16.05.23 09:44
NEW 16.05.23 09:44 
в ответ AlexNek 15.05.23 19:55
Когда видишь изменения невозможно быстро оценить, что это просто разнос строк. Возможно там были сделаны и еще какие то изменения.

Познакомь его с параметром "не показывать изменения whitespaces"

Да, но в данном конкретном случае длина меньше допустимой

Жаль. Понятие "так лучше читается" у всех разное, тяжелее спорить.

#36 
MrSanders коренной житель16.05.23 09:47
NEW 16.05.23 09:47 
в ответ alex445 16.05.23 00:43
В системах контроля версий нужно сохранять лишь семантические конструкции,

Тут уже не рука-лицо. Солнышко, сходи, поучись. Глядишь различия между синтаксисом и семантикой выучишь. Потом ещё немного подумаешь, может и дойдёт какую чушь сморозил.

#37 
alex445 коренной житель16.05.23 14:41
NEW 16.05.23 14:41 
в ответ MrSanders 16.05.23 09:44
Познакомь его с параметром "не показывать изменения whitespaces"

Мы уже говорили об этом - этого недостаточно. Правил форматирования слишком много - на все параметров не напасёшься.


Ещё раньше я предлагал, чтобы код сохранялся-загружался автоматически в автоформате, заданном у каждого пользователя и в самой репе. Т.е. загрузил я файл для сравнения с моей версией - всё отформатировалось как у меня на машине. Загрузил кто-то другой - как у него.

#38 
AlexNek патриот16.05.23 20:16
AlexNek
NEW 16.05.23 20:16 
в ответ MrSanders 16.05.23 09:44
Познакомь его с параметром "не показывать изменения whitespaces"

А где он в azure PR?

#39 
MrSanders коренной житель17.05.23 17:21
NEW 17.05.23 17:21 
в ответ AlexNek 16.05.23 20:16, Последний раз изменено 17.05.23 17:22 (MrSanders)

А где azure PR? :)
В github-е кнопочка есть (ну или была, давно не смотрел): https://github.blog/2018-05-01-ignore-white-space-in-code-...

Так-то это простенький параметр git diff-а: -w

#40 
AlexNek патриот17.05.23 20:07
AlexNek
NEW 17.05.23 20:07 
в ответ MrSanders 17.05.23 17:21
Так-то это простенький параметр git

Это никого не интересует, так как PR смотрят в azure, а не локально. Фактически, это что то наподобие вывода windiff в веб морде.

Хотя мне больше нравится смотреть изменения локально в beyoud compare. Но комменты всё равно только в azure можно писать.

#41 
MrSanders коренной житель18.05.23 12:18
NEW 18.05.23 12:18 
в ответ AlexNek 17.05.23 20:07

Ну а меня (слава богу) не интересует azure от слова совсем. Ибо по сравнению не только с амазоном, но и с gcp это лютое отсталое гм... мелкомягкое уродство :) Начиная от вики и кончая их CI.

Могу только посоветовать перейти на более приличный клиент, если твой не даёт возможности пользоваться базовыми функциями, гит он повсюду гит.

А пока что кушайте, не обляпайтесь. Быстрый поиск говорит что мелкомягкие не поумнели: https://developercommunity.visualstudio.com/t/pull-request...

P.S. Ну и в bc тоже можно изменения с пробелами и переносами игнорировать, емнип.

#42 
AlexNek патриот18.05.23 13:02
AlexNek
NEW 18.05.23 13:02 
в ответ MrSanders 18.05.23 12:18
не интересует azure от слова совсем

К сожалению сравнивать было не с чем, да и незачем. Нужно работать в том, что дали.


Ибо по сравнению не только с амазоном, но и с gcp

попробую поискать, но интересно и конкретное мнение, что действительно лучше, от чего в восторге?

Лучше confluence для теам документации пока не встречал, но и вики у мс вполне нормальная, можно загрузить всё локально и пользовать любимый md редактор.


перейти на более приличный клиент, если твой не даёт возможности

проблема то не у меня, а у других. Хотя один фиг всё писать нужно в azure

#43 
alex445 коренной житель18.05.23 14:48
NEW 18.05.23 14:48 
в ответ MrSanders 18.05.23 12:18, Последний раз изменено 18.05.23 15:03 (alex445)
Ну а меня (слава богу) не интересует azure от слова совсем. Ибо по сравнению не только с амазоном, но и с gcp это лютое отсталое гм... мелкомягкое уродство :) Начиная от вики и кончая их CI.

Только МС предлагает полный спектр продуктов под ключ - облака, операционки, базы данных, средства разработки, языки и фреймворки разработки, платформы - от железных до софтовых. И всё это интегрируется куда лучше, чем у всяких Амазонов, Эпплов, Гуглов, где поставщики всего этого разные, плюс тоже свои заморочки есть.

#44 
AlexNek патриот18.05.23 16:07
AlexNek
NEW 18.05.23 16:07 
в ответ MrSanders 18.05.23 12:18

Ну вот, глянул как в aws делают, не заметил особенных принципиальных отличий от azure, хотя там еще и yaml формат есть.


#45 
MrSanders коренной житель18.05.23 18:07
NEW 18.05.23 18:07 
в ответ AlexNek 18.05.23 13:02
попробую поискать, но интересно и конкретное мнение, что действительно лучше, от чего в восторге?

Надо пробовать, руками щупать. С azure я был только в одном проекте, в 2020, чуть больше полугода. Так что на глубинный взгляд не претендую. Что запомнилось: как только что-то чуть сложнее чем 2+2 становится, начинаются пляски с бубном. Или вообще никак.

То что в Jira/Jenkins/Gitlab(Bitbucket) и gcp/aws делается за минуту частно сделать нельзя. Очень долго мучались с пайплайном. Типа автоматом собирай и деплой новую версию после того, как пулл реквест закоммичен. Что конкретно не получалось... Не помню. Что-то с авторизацией. Помню постоянные сидения с нашим azur-овсим спецом, когда я ему показывал, мол, вот так я деплою новую версию на gcp из Jenkins-а, сделай так же в этих пайплайнах.

Правила кто куда может коммитить, что мёржить и те пе в азуровском гите... После гитлаба это тихий ужас. Задолбались все :)

#46 
AlexNek патриот18.05.23 19:00
AlexNek
NEW 18.05.23 19:00 
в ответ MrSanders 18.05.23 18:07
Не помню. Что-то с авторизацией

жалко, с авторизацией никаких проблем не припомню, но у нас все на мс.

Jira когда то был в каком то проекте, но кроме названия тоже ничего не помню.

Во всех проектах azure и дома тоже. Так что сравнивать практически просто не с чем хммм


типа автоматом собирай и деплой новую версию после того, как пулл реквест закоммичен

именно так примерно и работает.

Вот пришлось, даже следующую хотелку делать:

  • после комитта любой ветки, автоматом стартуют build и тесты.
  • Мастер дополнительно деплоится автоматом на "девелопер сервер".
  • Из любой ветки можно сделать "релиз".
  • Любой "релиз" можно задеплоить на девелопер/тест/продуктивный сервер, На два последних с дополнительным подтверждением.
#47 
1 2 3 все