Недавно у меня были некоторые дискуссии о переходе с Subversion на DVCS, такой как базар, и я хотел бы узнать мнение других людей.
Мне удалось преобразовать свое нежелание сделать это в простую параллель.
Контроль версий может использоваться хорошо или плохо.
«Легкая сторона» управления версиями - это когда вы используете его для отслеживания ваших изменений, можете вернуться к старым версиям, когда вы ломаете вещи, и когда вы публикуете свои изменения, чтобы ваши коллеги могли видеть вашу работу. незавершенное.
«Темная сторона» управления версиями - это когда вы не используете его должным образом, поэтому вы не «проверяете» свою работу, регулярно совершая, вы сохраняете кучу изменений в вашей локальной проверке, и вы не делаете делитесь своими изменениями с другими, когда вы их вносите.
Subversion делает как светлую, так и темную стороны относительно жесткими. Все основы работают, но немногие люди действительно используют ветвление в Subversion (кроме тегов и выпусков), потому что объединение не так просто. Поддержка этого в самой Subversion ужасна, и есть такие скрипты, как svnmerge, которые делают его лучше, но он все еще не очень хорош. Итак, в наши дни, с хорошей поддержкой ветвления и слияния, которая все больше и больше напоминает необходимость совместной разработки, Subversion не подходит.
С другой стороны, «темная сторона» тоже довольно трудна для подражания. Вы должны быть укушены только один раз, если ваши локальные изменения не будут время от времени вноситься в онлайн-хранилище, и нарушать ваш код простым редактированием, которое вы даже не помните. Таким образом, вы делаете регулярные коммиты, и люди могут видеть работу, которую вы делаете.
Итак, в конце концов, Subversion становится хорошим VCS среднего уровня, который, хотя и немного громоздок для внедрения лучших практик, все же затрудняет очень неправильную реализацию.
В отличие от DVCS, стоимость перехода на светлую или темную сторону намного ниже. Разветвление и слияние намного проще с этими современными системами VCS. Но распределенный аспект облегчает работу в ряде локальных веток на вашем собственном компьютере, предоставляя вам детальные коммиты, необходимые для проверки вашей работы, возможно, даже без публикации ваших изменений, чтобы другие могли видеть, просматривать и сотрудничать. Трение хранить ваши изменения в локальных ветвях и не публиковать их, как правило, ниже, чем публиковать их в какой-либо ветке на общедоступном сервере.
Итак, в двух словах, вот вопрос: если я дам нашим разработчикам DVCS, как я могу убедиться, что они используют его, чтобы перейти на «светлую сторону», по-прежнему регулярно публиковать свои изменения в центральном местоположении, и заставить их понять, что их недельный локальный хак, которым они не хотели делиться, может быть тем, что другой разработчик может использовать для завершения функции, пока первый находится в отпуске?
Если и на светлую, и на темную сторону DVCS так легко добраться, как я могу держать их подальше от темной стороны?