А вот как у вас модно
работать с системами контроля версий? Конкретно, с subversion, потому что в меркуриале и прочих DVCS можно хоть обкоммитится до одури - пока в другой репозиторий не закинешь, этого никто не увидит.
Я как-то склоняюсь к "сделал независимый мелкий кусок - тут же закомитил", даже если там пару букв всего поменялось. Т.е. билд стараться не ломать принципиально, но накапливать изменения на "один огромный коммит на всю фичу" не хочу.
PS: В комментариях много советуют бранчи. Я почему-то никогда ими не пользовался, сначала в svn они были адом и мне лень было это осиливать, а сейчас как-то никогда не возникает надобности. Т.е. организация проекта и релизов как-то так получилась, что борьба с бранчами не стоит того.
Я как-то склоняюсь к "сделал независимый мелкий кусок - тут же закомитил", даже если там пару букв всего поменялось. Т.е. билд стараться не ломать принципиально, но накапливать изменения на "один огромный коммит на всю фичу" не хочу.
PS: В комментариях много советуют бранчи. Я почему-то никогда ими не пользовался, сначала в svn они были адом и мне лень было это осиливать, а сейчас как-то никогда не возникает надобности. Т.е. организация проекта и релизов как-то так получилась, что борьба с бранчами не стоит того.
no subject
Т.е. если соблюдать правило, что публичные коммиты должны быть крупнозернистыми, осмысленными и относительно mainline, то проблем не возникает.
По моему, проблема когда на один бранч делаеются десятки коммитов от нескольких разработчиков типа
Опять же, с бранчами пропадает необходимость в code freeze, которые приходится объявлять на недосистемах типа CVS.
Т.е. фриз - он теперь только в мозгу того, кто за релиз отвечает: перстал мержить изменения на свой бранч, отдал тестировщикам и всё. Остальные могут продолжать работать дальше, их никак это все не касается.
no subject
Да нет, все нормально, несколько элементарных правил - и никакого бардака.
no subject
no subject
Если бы вы сказали, какой рода бардак вам видится в такой ситуации, я бы вам привел конкретные меры, позволяющие его избежать.
no subject
Потеря кода при и отсутствие возможности отмотки назад при разработке, при редких коммитах (коммитить только работающий код)
Гиморой с рефакторингом (переименования)
Наличие смешных code freeze, как воркараундов вокруг убогости инструментария
no subject
Что такое неатомарные коммиты? Я так понял, это серия нескольких связанных коммитов... но как они ведут к бардаку?
[ Потеря кода при и отсутствие возможности отмотки назад при разработке, при редких коммитах (коммитить только работающий код) ]
Решение проблемы: коммитить сколь угодно часто, но не коммитить тот файл, который включает сырой код в общую сборку. В результате на вашем компе собирается сырой код, на остальных - старый, стабильный.
[ Гиморой с рефакторингом (переименования) ]
Просто удаляем файл и закоммичиваем новый. Это вызовет трудность отследить, какой файл был его прообразом, но такая трудность не относится к "бардаку".
[ Наличие смешных code freeze, как воркараундов вокруг убогости инструментария ]
Что такое code freeze?
no subject
2. Сырой код или не сырой --- определяется тестированием. Определяют, это соответственно, уже после включения всех изменений в релизную ветку и прогона тестов. Не сломались тесты --- значит не сырой. Ну и куча мусорных коммитов в общей ветке --- это именно бардак, а управлять коммитами в CVS способа нету.
3. Потеря истории --- это и есть бардак в чистом виде.
4. Про code freeze --- без комментариев.
А решение одно: если принять решение о выбрасывании CVS на уровне организации воли нету, что говорит о том, что у руля стоят совершенно замшелые пни, то выкинуть его локально, и для себя пользоваться чем-то вроде git-cvs, и в общий реп коммитить уже более-менее осмысленными кусками.
no subject
В результате конфликт трудно не заметить, так как вывод не загроможден лишним текстом.
2. Ну так в чем бардак то?
3. Это просто лозунг. По-вашему - бардак, по-моему - мелочь.
4. As you wish :)
Пни не замшелые, просто CVS не настолько критичный инструмент, чтобы возиться с его заменой.
no subject
2. Бардак в том, что разработчик или вынужден не коммитить до последнего, тормозя свою разработку и рискуя потерять изменения, либо коммитить мусор (бессмысленные мелкозернистые коммиты) в основную ветку
3. Ну все мелочь по сравнению с тепловой смертью вселенной, кто же спорит.
4. Ну информация как бы не секретная, термин распространенный. Если сталкиваться не приходилось, то какой смысл обсуждать.
Замена CVS хотя бы на SVN --- вопрос одного-двух дней. А отсутствия нормального контроля версий скорее всего говорит о практически отсутствующем управлении релизами. Что прискорбно.
no subject
2. Я же объяснил, как это преодолевается - коммитите, просто в сборку не включаете.
3. :)
4. Это моя слабость - плохо запоминаю звучные термины. Так что может и сталкивался с чем-то похожим, но не знаю, что это называется именно так.
[ Замена CVS хотя бы на SVN --- вопрос одного-двух дней. ]
Плюс время привыкания к глюкам нового инструмента - N дней. И через сколько те 1-2 дня + N дней окупятся? И ради чего огород городить? Инструмент то не ключевой - не компилятор какой-нибудь.
no subject
Насчет глюков хотелось бы подробнее. Как бы этими инструментами пользуются миллионы человек ежедневно, врядли вот новые пользователи прямо сходу придут и обнаружат на повержности какие-то прямо глюки, до них никем не виданные. Если только глюки в своих головах.
SVN практически не отличается от CVS, только сделан чуть более по-человечески. Так что особенно привыкать не к чему.
Окупаться начнет не использование нового контроля версий, а более упорядоченная разработка. Например, за счет того, что меньше станет тратиться времени на борьбу с особенностями инструментария.
no subject
Здесь я имею в виду специфические трудности, которые возникают при работе с данным инструментом и к которым надо приноровиться, понять, как с ними дешево бороться. Ну как невозможность легко отследить переименование в CVS - наверняка в "черепашке" есть свои подобные заморочки.
[ Окупаться начнет не использование нового контроля версий, а более упорядоченная разработка. ]
Я это понимаю. Вопрос в том, за сколько оно окупится. В наших проектах выгода неочевидна. Была бы очевидна - перескочили бы со свистом. По сравнению с ежедневным переключением с C++ на Java потом на Delphi потом обратно - это не проблема.
no subject
Ну ведь на этот вопрос нельзя ответить в общем? Можно только вести учет времени, потраченные на отдельные активности разными людьми, и смотреть сколько времени ушло на борьбу с CVS.
После CVS трудностей не будет. Наоборот, будет ощущение, что долгие годы над вами издевались, и вдруг, ВНЕЗАПНО, перестали.
У меня был опыт работы в довольно крупном проекте (1+ Gb исходников + 11 человек), где на поддержание CVS в норме время тратилось постоянно.
Писались внешние скрипты для обработки тех или иных ситуаций, постоянно были проблемы из-за недокоммиченных файлов (писались скрипты противодейтствия этому), регулярно случался code freeze, что бы стабилизировать релиз (это когда не делается новых изменений, только фиксы и вся команда с удовольствием курит бамбук).
Все это время и, соответственно, деньги. Использование нормальных инструментов большую часть этих вопросов устраняет и дает много допольнительных возможностей (несколько релизов одновременно и легкая миграция изменений между ними).
no subject
Ну возможно :)
code freeze - теперь я понял, о чем вы - да, такое у нас бывает регулярно. :)
Мера борьбы - как только удается получить стабильную версию de facto (а такое периодически случается), она отмечается специальным тегом и вот это предъявляется как последняя версия потенциальным заказчикам. Так что бамбук в результате никто не курит. А вот когда старались получить стабильную версию к заранее заданной дате - тогда да, бывали и бамбуки.
Из-за недокомиченности файлов бывают минутные проблемы:
- Мужики, у меня ### не собирается, кто последний там насрал?
- Вроде я. Сейчас проверю...
через 1 минуту:
- Все, закоммитил, собирай.
- Все, собралось.
no subject
Да ну? А фиксы на нее коммитить по результатам тестов?
Из-за недокоммиченности проблемы минутные, если сразу удалось заметить. А если не сразу, то проблема может быть зарыта сколь угодно глубоко.
no subject
В какой-то момент оказывается, что все тесты успешны, все фиксы прокоммичены, все классно - этот момент ловится и метится тегом как очередная эталонная версия.
Не сразу заметить - так не бывает. Весь проект собирается целиком 1-2 раза в день и еще N раз на машинах разработчиков. Если что-то не закоммичено, этот факт остается незамеченным максимум несколько часов.
(no subject)
(no subject)
no subject
no subject
no subject
Еженедельных... OMFG...
no subject
Скажем, у меня есть личный проект - размер большой, но делаю его только я. Так мне по горло хватает совершенно вырожденного версионного контроля: каждый вечер zip проекта на hard и на флешку, каждый месяц - сохранение ZIP-а под отдельным именем в папке.
То есть, можно без версионника ВООБЩЕ, а вот без компилятора - никак.
no subject
Ну там про мелкие удобства неограниченного rollback, что бывает полезно в случае разного рода исследований я не говорю.
Я мессаджа не понимаю. Вот есть DVCS. Исключительно удобны: почти не требуют инсталляции, конфигурации. Дают много возможностей и удобств. Какой смысл ими не пользоваться?
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Да, но изменения могут быть согласованными вот по этим трём файлам. И если у вас есть момент когда ДВА файла с новым контентом УЖЕ в репозитории а третий — нет (потому что конфликт и вы пол-часа его исправляете) — это очень, очень плохо.
no subject
Если серьезно, то длительная задержка - большая редкость, а короткая ни на ком не сказывается.
no subject
Т.е. вы даже про repocopy не знаете? :)
no subject
Да куда нам, мы ж люди темные :)