Personal tools
You are here: Home Knowledge Techie Central Контроль над версиями и менеджмент проекта
Document Actions

Контроль над версиями и менеджмент проекта

by admin_jr last modified 2003-12-01 09:55

Обзор

Редко когда программное обеспечение разрабатывается единолично одним человеком, иногда его разрабатывают вдвоем, но в большинстве случаев в разработку программного обеспечения вовлечены от пяти и более человек. Иногда эти люди работают в одной комнате, а иногда они разбросаны по всему миру. Всякий раз, когда в работе над проектом занято одновременно множество людей, вы неизбежно сталкиваетесь с ситуацией, когда в их работе появляются ненужные дубликации. Возможно, два человека выполнят работу по обнаружению ошибок на одном и том же файле, возможно они все добавят APIs в библиотеку. В таких ситуациях всегда есть риск, что один человек заново выполнит работу, уже сделанную другим. С ростом группы ваших разработчиков и с увеличением их географической отдаленности эти проблемы могут перерасти в еще большие проблемы. Хорошая система контроля версий (такая как CVS или Perforce) может помочь решить эти проблемы.

Сценарий А: В 11:00 Хосе из Сан Диего начинает фиксирование ошибок в методе-bar, найденном на foo.py. В то время как он работает над этой проблемой Армен из Еревана открыл свою копию foo.py и начал добавлять метод baz к foo.py. В 11:15 Армен, будучи быстро и эффективно работающим кодировщиком, заканчивает работу над своим приложением и сохраняет файл и затем копирует внесенные им изменения на сервер.Двумя минутами позже (11:17) Хосе заканчивает фиксирование ошибок и копирует свою версию файла на сервер поверх файла Армена. К большому огорчению Армена его метод baz перекрыт и утерян навсегда.

Сценарий А (с CVS): В 11:00 Хосе из Сан Диего начинает фиксирование ошибок в методе bar, найденном на foo.py. В то время, как он работает над этой проблемой, Армен из Еревана открыл свою копию foo.py и начал добавлять baz метод к foo.py. В 11:15 Армен, будучи быстро и эффективно работающим кодировщиком, заканчивает работу над своим приложением и сохраняет файл и затем пересылает внесенные им изменения на сервер. Двумя минутами позже (11:17) Хосе заканчивает фиксирование ошибок и пытается перенести внесенные им изменения на сервер. Сервер, видя, что файл Хосе является устаревшим по сравнению с настоящей версией системы отказывается принять файл Хосе. Хосе запускает update с сервера, соединяя воедино изменения, внесенные Арменом и свои изменения кода. Хосе тратит минуту на то, чтобы убедиться, что нигде изменения не затрагивают один и тот же блок кода (если это так, он просто соединит вместе оба изменения) и снова вносит их на сервер. Армен может быть уверен, что его изменения не пропадут навсегда.

Сценарий В: Скотт пишет свой очередной роман. После того, как он неделю мучился над одним пассажем , он сохранил роман. Неделю спустя он возвращается к роману и решает, что этот пассаж отвратителен и в порыве вдохновения переписывает всю эту часть. Спустя еще неделю ему приходит в голову, что его «порыв вдохновения» фактически является полной глупостью. Он хочет вернуться к старому варианту, но к сожалению, он утерян навсегда.

Сценарий В (с CVS): Скотт пишет свой последний роман. После того, как он неделю мучился над одним пассажем, он переслал роман в свое хранилище. Неделю спустя он возвращается к роману и решает, что этот пассаж отвратителен и в порыве вдохновения переписывает всю эту часть. Спустя еще неделю ему приходит в голову, что его «порыв вдохновения» фактически является полной глупостью. Он прссматривает свои CVS приложения, находит приложение, которое он записал поверх изначальной версии, и восстанавливает старую копию. После некоторой cut/paste работы он возвращает старую копию отрывка на свое место и снова пересылает роман в хранилище.

Кроме предотвращения нежелательной записи поверх файлов и сохранения полной истории изменений в файле система обеспечивает:

  • Полная история относительно проделанной работы позволяет разработчикам следить за затраченным временем и прогрессом в работе.
  • Возможность одновременно поддерживать производство и тестирование вашего продукта, стабильные и нестабильные версии одного и того же кода путем branching-а.
  • Обеспечивает back-up, (который может быть размещен на совершенно другом компьютере) для защиты от сбоев жесткого диска, или печально известной «rm-rf/code» ошибки.

Хотя многие разработчики, работающие в одиночку, считают затруднительным начать приспосабливаться к использованию Version Control Software, как только вы действительно начнете использовать его, оно не только станет естественной частью вашего процесса разработки, но вы можете начать нервничать каждый раз, когда будете работать без него.

  • CVS : наиболее часто используемая VC система с открытым исходным кодом
  • Bitkeeper: частная VC система, использованная Линусом Торвальдсом при разработке Linux
  • Perforce: популярная VC система у которой есть бесплатная базовая версия для некоммерческих проектов
 


View My Stats