А вот как у вас модно
работать с системами контроля версий? Конкретно, с subversion, потому что в меркуриале и прочих DVCS можно хоть обкоммитится до одури - пока в другой репозиторий не закинешь, этого никто не увидит.
Я как-то склоняюсь к "сделал независимый мелкий кусок - тут же закомитил", даже если там пару букв всего поменялось. Т.е. билд стараться не ломать принципиально, но накапливать изменения на "один огромный коммит на всю фичу" не хочу.
PS: В комментариях много советуют бранчи. Я почему-то никогда ими не пользовался, сначала в svn они были адом и мне лень было это осиливать, а сейчас как-то никогда не возникает надобности. Т.е. организация проекта и релизов как-то так получилась, что борьба с бранчами не стоит того.
Я как-то склоняюсь к "сделал независимый мелкий кусок - тут же закомитил", даже если там пару букв всего поменялось. Т.е. билд стараться не ломать принципиально, но накапливать изменения на "один огромный коммит на всю фичу" не хочу.
PS: В комментариях много советуют бранчи. Я почему-то никогда ими не пользовался, сначала в svn они были адом и мне лень было это осиливать, а сейчас как-то никогда не возникает надобности. Т.е. организация проекта и релизов как-то так получилась, что борьба с бранчами не стоит того.
no subject
no subject
no subject
Естественно, прийдётся немного больше попотеть, настраивая окружение...
no subject
а если чисто svn - то коммитить в транк всякое говно, в ветку stable это говно потом сливать через тулзу svnmerge, которая костыль для уебанского мержа в свн - но работает
для больших кусков форкнуть бранч, поиздеваться там - и потом взад в транк
no subject
А так согласен - бранчи и ещё раз бранчи, и DVCS в этом смысле гораздо более логичная вещь (или такие есть централизованные VCS с удобными мерджами?).
no subject
no subject
Легче уж бранчи с номерами ревизий в имени делать.
(no subject)
no subject
а вот показать, какие ревизии уже есть в транке, а каких еще нет - оно увы, не сможет, или я не нашел
например такое действие
- пилим в транке текущую версию
- на каждый баг пишем номера коммитов по нему
- тестеры проверяют баг, говорят - окей
- надо залить в бранч stable эти коммиты
как это просто сделать в svn - я не знаю, но вот
работает отлично
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
no subject
(no subject)
(no subject)
(no subject)
no subject
no subject
no subject
Сочувствую.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Далее. Сделал таск - опубликовал свой бранч. Ответственный за интеграцию берет бранч с выполненным таском и мержит изменения на релизный бранч.
В роли ответственного могут выступать все, но суть ме меняется --- берешь бранчи с изменениями, мержишь на основной бранч, убеждаешься, что все работает и публикуешь. Или нет, если что-то сломано.
Таким образом, у себя локально - разработчик коммитит как ему удобно часто (с целями бэкапа и отката изменений), в основной девелоперский бранч релиза --- коммитится большими осмысленными аннотированными кусками работы, желательно со ссылкой на соответствующий таск/тикет.
Для целей бэкапа так же в конце рабочего дня приветствуется сделать push со своей локальной ветки в центральный реп, что бы если что (винт посыпался, компютер сгорел, канализацию прорвало и все затопило) изменения не пропали.
UPD. Ответственного за интеграцию можно назначать по-разному: например, сидишь на этой роли как на раздаче на распасах в префе, пока билд не пройдет.
no subject
Кстати, разделить релизный и центральный реп для бэкапов - до этого я не додумался с hg, это хорошая идея. Не додумался, потому как в svn у нас центральный и релизный это общий реп на сервере.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Суть в том, что авторы CVS и SVN много сделали для того, что бы бранчи воспринимались, как какая-то вещь, с которой надо бороться. На самом деле, это вешь, которая служит для удобства, и бороться там не с чем.
no subject
Т.е. c svn и без бранчей как-то легче для мозга - я точно знаю что история линейна, без ответвлений и слияний. А вот с бранчами может получится живая изгородь с шипами :)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
А так, если комментарий здравый можешь добавить к коммиту - значит это уже не какая-то мелкая хренотень :)
no subject
Вариант (не идеальный, но терпимый) - локальный mercurial + централизованный svn. Коммитить на каждый чих у себя, а как заработает - в svn.
no subject
no subject
no subject
недавно я с двумя бойцами делали отдельную фичу - создали бранч, и там две недели варились. я замудохался потом объеденять сорцы. но без бранча мы б не смогли. правда я хотел как раз для этого случая заюзать локально hg или git.
no subject
Всё что идёт в транк должно компайлится - иначе закомитевшему по голове. Из транка в тест идут те релизы, которые прошли юнит тесты - мержит в тестовую ветку уже тестер. Из тестов в релиз идёт то что прошло тесты. Оперировать довольно просто - девелопер посылает набор номеров релизов, которые должны пойти в тест - тестер замержил - не скомпайлилось - откат. Тестер посылает ответственному за главный билд аналогичный список того, что прошло тесты. Работает как часы даже у раздолбайской команды.