Re[11]: 1000 revisions per 500 hours - что дает этот показат
От: __kot2  
Дата: 30.01.12 05:02
Оценка: :)
Здравствуйте, Lloyd, Вы писали:
__>>ну и каждый раз когда svn сервер отваливается тоже только укрепляюсь в своем мнении. плюс — ты точно уверен что на что у тебя заменяется и можешь тут же посмотреть, а не через ректальный доступ к серверу с интерфейсов svn (часто еще и медленный, если он заграницей).
L>А ты точно уверен, что у тебя лежит на диске и можешь тут же посмотреть, а не через ректальный доступ к диску с интерфейсов файловой системы?
проект обычно раскидан по папочкам. до сих пор проблема поиска такого-то текста в такой-то подпапочке из студии не решена. поиск по проекту когда нужный текст находится на следующий строке в студии занимает секунд 5.

L>Страхи из разряда "обжегшись на молоке, на воду дуют". Страхи наде не культивировать, а бороться с ними. Со времен SourceSafe уже как минимум лет 10 прошло, с того времени ой как много изменилось.

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

L>В 3 ночи надо спать, а не беситься от окошек. А новые инструменты надо изучать и использовать к своей выгоде, а не руководствоваться принцыпом "мне так привычнее". Будь у меня розовый слоник в аватарке, я бы напомнил вам о парадоксе блаба.

L>С таким подходом вы лет через 10 "на помоечке" (с) окажетесь.
это касается моей личной внутренней организации работы. она должна быть максимально простой, быстрой и надежной. хранение в svn рабочих снапшотов как минимум медленней и точно менее надежна — вероятность что отвалится сервер или сеть выше, чем полетит винт.

насчет git — понимаю, что перспективно, и идеально подходит для того, чего был создан. мне не нужен.
Re[2]: 1000 revisions per 500 hours - что дает этот показате
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 10:35
Оценка:
__>по уму все коммиты должны быть атомарными. грубо говоря одна фича или фикс — один коммит.
__>говорит о том, что вы наделали 1000 фич или фиксов, потратили в среднем на одну штуку полчаса. скорее всего фиксы.

Это вы сами придумали или где-то такое написано? По уму используют либо распределенную систему которая коммитит в себя, либо feature branches в svn и коммитят в него, а когда все заработало и стабилизировалось — сливают этот бранч в транк.

Делают это для того, чтобы коммиты были небольшими — по нескольку строчек. Небольшие коммиты благотворно влияют на code review, позволяют вынести значительную часть документации из исходников в комментарии к коммитам, делают blame на порядок более читаемым.

Если посмотреть на популярные open source проекты, то можно увидеть за последние несколько лет тенденцию к уменьшению размера одного коммита. Этому способствуют как распределенные системы типа Git, так и нормальным бранчи в SVN начиная с версии 1.5

И да, feature branch никто не делает ручками — для этого есть специально обученные скрипты которые по нажатию одной кнопки создают такой бранч под задачу, а по нажатию другой — мерджат его в транк и удаляют.
Re[2]: 1000 revisions per 500 hours - что дает этот показате
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 10:36
Оценка:
M>О том, что инструмент изначально выбран неверно. С таким подходом, вам нужно использовать git или хотя бы git интерфейс для svn. В противном случае через 5000 часов у вас будут серьезные проблемы при работе с историей: будет очень трудно разобраться когда и зачем было произведено конкретное изменение.

Это почему, если не секрет? Та же TortoiseSVN очень хорошо показывает историю — с фильтрами, указанием что из каких бранчей мерджилось.
Re[2]: 1000 revisions per 500 hours - что дает этот показате
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 10:38
Оценка:
MTD>Я однажды смотрю в репозитории странная активность — от одного персонажа по несколько коммитов в час. Стал смотреть. Оказывается он по одному файлу комитил Так что говорит это о том, что ты скорее всего не умеешь пользоваться системой контроля версий

... Или наоборот — умеет. В последнее время наблюдается тенденция уменьшения размеров коммита. Для соблюдения политики "stable trunk" достаточно использовать распределенную сстему контроля версий которая умеет коммитить локально либо бранчи в SVN, которые починили еще в версии 1.5. Мелкие коммиты по нескольку десятков строк гораздо лучше поддаются code review, позволяют переместить часть комментариев из кода в коммиты, улучшают blame и вообще благоприятно влияют на процесс разработки.
Re[3]: 1000 revisions per 500 hours - что дает этот показате
От: __kot2  
Дата: 30.01.12 11:10
Оценка:
Здравствуйте, Eye of Hell, Вы писали:
EOH>Делают это для того, чтобы коммиты были небольшими — по нескольку строчек. Небольшие коммиты благотворно влияют на code review, позволяют вынести значительную часть документации из исходников в комментарии к коммитам, делают blame на порядок более читаемым.
фичи тоже по пару строк коммитите?

EOH>И да, feature branch никто не делает ручками — для этого есть специально обученные скрипты которые по нажатию одной кнопки создают такой бранч под задачу, а по нажатию другой — мерджат его в транк и удаляют.

о, еще и скрипты. сколько гемора наворочено ради такой простой задачи.
Re[4]: 1000 revisions per 500 hours - что дает этот показате
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 11:41
Оценка:
EOH>>Делают это для того, чтобы коммиты были небольшими — по нескольку строчек. Небольшие коммиты благотворно влияют на code review, позволяют вынести значительную часть документации из исходников в комментарии к коммитам, делают blame на порядок более читаемым.
__>фичи тоже по пару строк коммитите?

Фича = несколько коммитов по паре строк?

EOH>>И да, feature branch никто не делает ручками — для этого есть специально обученные скрипты которые по нажатию одной кнопки создают такой бранч под задачу, а по нажатию другой — мерджат его в транк и удаляют.

__>о, еще и скрипты. сколько гемора наворочено ради такой простой задачи.

Напомните, какую задачу вы называете "простой"? Разработку ПО?
Re[5]: 1000 revisions per 500 hours - что дает этот показате
От: __kot2  
Дата: 30.01.12 11:58
Оценка:
Здравствуйте, Eye of Hell, Вы писали:
EOH>>>Делают это для того, чтобы коммиты были небольшими — по нескольку строчек. Небольшие коммиты благотворно влияют на code review, позволяют вынести значительную часть документации из исходников в комментарии к коммитам, делают blame на порядок более читаемым.
__>>фичи тоже по пару строк коммитите?
EOH>Фича = несколько коммитов по паре строк?
фича это новая функциональность. новые классы, ф-ии, часто файлы

EOH>>>И да, feature branch никто не делает ручками — для этого есть специально обученные скрипты которые по нажатию одной кнопки создают такой бранч под задачу, а по нажатию другой — мерджат его в транк и удаляют.

__>>о, еще и скрипты. сколько гемора наворочено ради такой простой задачи.
EOH>Напомните, какую задачу вы называете "простой"? Разработку ПО?
задача "хранения рабочих черновиков".
Re[2]: 1000 revisions per 500 hours - что дает этот показате
От: a.k.m.  
Дата: 30.01.12 12:31
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Здравствуйте, a.k.m., Вы писали:


AKM>>о чем то этот показатель говорит?


M>О том, что инструмент изначально выбран неверно. С таким подходом, вам нужно использовать git или хотя бы git интерфейс для svn. В противном случае через 5000 часов у вас будут серьезные проблемы при работе с историей: будет очень трудно разобраться когда и зачем было произведено конкретное изменение.


а в чем конкретно будет видна разница через 5000 часов между svn и git?
(с git имел дело лишь мельком)
Re[6]: 1000 revisions per 500 hours - что дает этот показате
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 14:03
Оценка:
Здравствуйте, __kot2, Вы писали:

__>>>фичи тоже по пару строк коммитите?

EOH>>Фича = несколько коммитов по паре строк?
__>фича это новая функциональность. новые классы, ф-ии, часто файлы

Тоесть новые классы, функции, файлы не разбиваются на небольшие коммиты и коммитятся монолитом по нескольку сотен строк? . Посмотрите на опен сорс проекты на гитхабе — там регулярно добавляются новые функции, классы и даже, о ужас — файлы! При этом средний размер коммита очень невелик. Тенденция (с).

EOH>>>>И да, feature branch никто не делает ручками — для этого есть специально обученные скрипты которые по нажатию одной кнопки создают такой бранч под задачу, а по нажатию другой — мерджат его в транк и удаляют.

__>>>о, еще и скрипты. сколько гемора наворочено ради такой простой задачи.
EOH>>Напомните, какую задачу вы называете "простой"? Разработку ПО?
__>задача "хранения рабочих черновиков".

Эта задача топикстартера или ваша? Какое она вообще имеет отношение к коммитам и контролю версий?
Re[8]: 1000 revisions per 500 hours - что дает этот показате
От: alzt  
Дата: 30.01.12 14:46
Оценка:
Здравствуйте, __kot2, Вы писали:

AKM>>читайте внимательно, что я пишу

AKM>>отдельный бранч только на период разработки отдельной фичи, когда человек коммитит 2 раза в час
AKM>>по завершении фичи (то есть от 3 раз в день до 1 раза в неделю) обязательный мердж с основным общим бранчем
__>и зачем все эти телодвижения?
__>я просто в Far'e делаю копию в отдельную папочку, если приступаю за серьезную модицикацию и боюсь что все заглючит — чтобы откатиться назад

Например, можно сделать несколько промежуточных коммитов, которые реализуют часть фичи. И потом смёрджить всё.
Удобно, когда 1 коммит содержит последовательность действий, логически связанных друг с другом. Когда всё в куче, то разобраться тяжелее.
Re[7]: 1000 revisions per 500 hours - что дает этот показате
От: __kot2  
Дата: 30.01.12 16:00
Оценка:
Здравствуйте, Eye of Hell, Вы писали:
__>>>>фичи тоже по пару строк коммитите?
EOH>>>Фича = несколько коммитов по паре строк?
__>>фича это новая функциональность. новые классы, ф-ии, часто файлы
EOH>Тоесть новые классы, функции, файлы не разбиваются на небольшие коммиты и коммитятся монолитом по нескольку сотен строк? .
да. я же говорю: одна фича — один коммит.

EOH>>>Напомните, какую задачу вы называете "простой"? Разработку ПО?

__>>задача "хранения рабочих черновиков".
EOH>Эта задача топикстартера или ваша? Какое она вообще имеет отношение к коммитам и контролю версий?
вы не соображаете о чем говорите. мы именно это и обсуждаем — зачем топикстартеру понадобилось столько коммитов мелких.
специально для тупых повторяю историю разговора — я предположил, что это фиксы. топикстартер говорит что это не фиксы, а черновики.
Re[9]: 1000 revisions per 500 hours - что дает этот показате
От: __kot2  
Дата: 30.01.12 16:01
Оценка:
Здравствуйте, alzt, Вы писали:
A>Например, можно сделать несколько промежуточных коммитов, которые реализуют часть фичи. И потом смёрджить всё.
A>Удобно, когда 1 коммит содержит последовательность действий, логически связанных друг с другом. Когда всё в куче, то разобраться тяжелее.
вот недавно был 50 тысячный коммит по-моему. удобнее было бы иметь их в 10 раз больше?
Re[8]: 1000 revisions per 500 hours - что дает этот показате
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 16:25
Оценка:
__>Здравствуйте, Eye of Hell, Вы писали:
__>>>>>фичи тоже по пару строк коммитите?
EOH>>>>Фича = несколько коммитов по паре строк?
__>>>фича это новая функциональность. новые классы, ф-ии, часто файлы
EOH>>Тоесть новые классы, функции, файлы не разбиваются на небольшие коммиты и коммитятся монолитом по нескольку сотен строк? .
__>да. я же говорю: одна фича — один коммит.

А вот текущие тенденции наоборот рекоменуют делать мелкие коммиты, где одна фича — это много коммитов. Берем любой успешный проект на гитхаб (я бы, конечно, предложил взять успешный проект от гугл — но кто ж даст?) и смотрим на коммиты. Они — мелкие. И каждая фича, если она не в пару строк, состоит из кучки небольших коммитов.
Опять же мой небольшой пятнадцатилетний опыт коммерческой разработки подсказыает, что чем меньше размер коммита — тем легче потом делать code review, читать blame, да и вообще комментарии переносятся из кода и вики в историю коммита, где их намного удобнее читать.

EOH>>>>Напомните, какую задачу вы называете "простой"? Разработку ПО?

__>>>задача "хранения рабочих черновиков".
EOH>>Эта задача топикстартера или ваша? Какое она вообще имеет отношение к коммитам и контролю версий?
__>вы не соображаете о чем говорите. мы именно это и обсуждаем — зачем топикстартеру понадобилось столько коммитов мелких.
__>специально для тупых повторяю историю разговора — я предположил, что это фиксы. топикстартер говорит что это не фиксы, а черновики.

Да никто не спорит что у вас длиннее, зачем столько экспрессии?
Re[9]: 1000 revisions per 500 hours - что дает этот показате
От: __kot2  
Дата: 30.01.12 17:29
Оценка:
Здравствуйте, Eye of Hell, Вы писали:
EOH>А вот текущие тенденции наоборот рекоменуют делать мелкие коммиты, где одна фича — это много коммитов. Берем любой успешный проект на гитхаб (я бы, конечно, предложил взять успешный проект от гугл — но кто ж даст?) и смотрим на коммиты. Они — мелкие. И каждая фича, если она не в пару строк, состоит из кучки небольших коммитов.
EOH>Опять же мой небольшой пятнадцатилетний опыт коммерческой разработки подсказыает, что чем меньше размер коммита — тем легче потом делать code review, читать blame, да и вообще комментарии переносятся из кода и вики в историю коммита, где их намного удобнее читать.
я тоже люблю маленькие коммиты. и фиксы мои часто это одна строчка.
я говорю именно про разработку фич.
вот представим например, что человек пишет новый контейнер stl. вот vector. вы он завел новый файл, написал шапку сверху и class vector{}. что, уже коммититься?
потом он пишет конструктор. новый коммит?
зачем? кому нужна такая хрень?
Re[10]: 1000 revisions per 500 hours - что дает этот показат
От: __kot2  
Дата: 30.01.12 17:34
Оценка:
моя философия, что в транк нужно коммитить только 100% удостоверившись, что то, что коммитишь, лучше, чем то, что в транке. недописанная или непротестированная функциональность это гавно на палочке. ей не место в транке. ей место только у вас на компе. зачем кому-то нужен вектор, который умеет только инициализироваться?
Re[10]: 1000 revisions per 500 hours - что дает этот показат
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 17:35
Оценка:
Здравствуйте, __kot2, Вы писали:

__>я тоже люблю маленькие коммиты. и фиксы мои часто это одна строчка.

__>я говорю именно про разработку фич.
__>вот представим например, что человек пишет новый контейнер stl. вот vector. вы он завел новый файл, написал шапку сверху и class vector{}. что, уже коммититься?
__>потом он пишет конструктор. новый коммит?
__>зачем? кому нужна такая хрень?

Первый коммит — скелет (шапка, конструктор-деструктор).
Второй и последующие коммиты — добавление функционала маленькими кусочками.
Хрень нужна ряду нехорших людей:
1. Тому, кто будет делать code review. Потому как когда через три дня работы над этим супер вектором 500 строчек таки закоммитят, то читать это будет — ад. Я сам руковожу разработкой, регулярно делаю code review. Большие коммиты — ад как он есть.
2. Тому, кто будет впоследствии этот класс поддерживать и захочит выяснить, зачем где-то стоит if. Если там коммиты по сто строк вида "добавил функциональность кеширования." — то фиг разберешся. А вот если коммиты мелкие — то они исподволь заставляют разработчика протоколировать свои действия, что потом намного удобнее читать.
Re[11]: 1000 revisions per 500 hours - что дает этот показат
От: Eye of Hell Россия eyeofhell.habr.ru
Дата: 30.01.12 17:37
Оценка:
Здравствуйте, __kot2, Вы писали:

__>моя философия, что в транк нужно коммитить только 100% удостоверившись, что то, что коммитишь, лучше, чем то, что в транке. недописанная или непротестированная функциональность это гавно на палочке. ей не место в транке. ей место только у вас на компе. зачем кому-то нужен вектор, который умеет только инициализироваться?


Я, пожалуй, сам себя процетирую, выше по ветке:
eye>Это вы сами придумали или где-то такое написано? По уму используют либо распределенную систему которая коммитит в себя, либо feature branches в svn и коммитят в него, а когда все заработало и стабилизировалось — сливают этот бранч в транк.

Мелкие коммиты никак не влияют на собираемость транка. Их делают либо локально (git, mercurial) либо в специальный feature branch (svn).
Re: 1000 revisions per 500 hours - что дает этот показатель?
От: Wolverrum Ниоткуда  
Дата: 31.01.12 07:47
Оценка:
Здравствуйте, a.k.m., Вы писали:

AKM>о чем то этот показатель говорит?

Этот показатель может говорить о многом
Автор: мыщъх
Дата: 31.01.12
, но в конкретно Вашем случае — он не говорит ни о чем.
Re[10]: 1000 revisions per 500 hours - что дает этот показат
От: alzt  
Дата: 31.01.12 09:17
Оценка:
Здравствуйте, __kot2, Вы писали:

A>>Удобно, когда 1 коммит содержит последовательность действий, логически связанных друг с другом. Когда всё в куче, то разобраться тяжелее.

__>вот недавно был 50 тысячный коммит по-моему. удобнее было бы иметь их в 10 раз больше?

Зависит от коммитов. Если коммиты в виде "Сделал всплывающее окошко", "Реализовал сериализацию какой-то штуки", то хоть их в 100 раз больше, пользоваться не сложно.
А если в виде "куча кода для работы с принтером", то разобраться в этом посложнее.
Re[9]: 1000 revisions per 500 hours - что дает этот показате
От: SkyDance Земля  
Дата: 31.01.12 23:46
Оценка:
EOH>А вот текущие тенденции наоборот рекоменуют делать мелкие коммиты, где одна фича — это много коммитов.

И как это тестируется?
Любой коммит не должен рушить автотесты (мы же обсуждаем нормальную работу, с test-first approach?)
Соответственно, если этот коммит однострочный, он что-то добавляет в работу системы (или, например, добавляет только тесты — т.е. ничего в основной код не идет, только в тесты) — это вполне правильный и полноценный коммит.

А если это коммит чисто "хочу забэкапить, а то завтра у меня выходной и я забуду что делал" — это IMHO вредно, т.к. почем зря триггерит всю сборочную автоматизацию. Увеличивает official build number, гоняет все (в т.ч. интеграционные, нагрузочные и т.п.) тесты, выкладывает обновленные версии библиотек. Много еще чего может быть на это дело завязано.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.