Почему я должен использовать контроль версий? - PullRequest
118 голосов
/ 11 сентября 2009

Я читал блог, где писатель сказал это

"Код не существует, если он не зарегистрирован в системе контроля версий. Используйте контроль версий для всего, что вы делаете. Любой контроль версий, SVN, Git, даже CVS, освоите его и используйте."

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

Насколько я понимаю, такие вещи, как SVN, предназначены для хранения вашего кода в сети, чтобы группа пользователей или другие разработчики имели доступ к одному и тому же коду. Как только вы обновите некоторый код, вы можете отправить новую версию, и SVN сохранит копии старого кода, а также новые, которые вы обновили.

Это основная идея или я все понял неправильно?

Если я прав, то это может быть бесполезно, если я:

  • Не заставляйте других людей работать над кодом.
  • Не планируйте позволять другим иметь код.

Ответы [ 19 ]

252 голосов
/ 11 сентября 2009

Вы когда-нибудь:

  • Внесены изменения в код, понял, что это ошибка и хотел вернуться назад?
  • Потерянный код или была слишком старая резервная копия?
  • Нужно было поддерживать несколько версий продукта?
  • Хотите увидеть разницу между двумя (или более) версиями вашего кода?
  • Хотите доказать, что конкретное изменение сломало или исправило фрагмент кода?
  • Хотите просмотреть историю какого-то кода?
  • Хотите отправить изменение в чужой код?
  • Хотите поделиться вашим кодом или позволить другим людям работать над вашим кодом?
  • Хотел посмотреть, сколько работы делается, и где, когда и кем?
  • Хотите поэкспериментировать с новой функцией, не мешая рабочему коду?

В этих и, несомненно, в других случаях система контроля версий должна облегчить вашу жизнь.

Неверно цитировать друга: цивилизованный инструмент для цивилизованного возраста.

55 голосов
/ 11 сентября 2009

Даже если вы работаете в одиночку, вы можете воспользоваться контролем источников. Среди прочего по этим причинам:

  • Вы ничего не теряете. Я никогда больше не закомментировал код. Я просто удаляю это. Он не загромождает мой экран и не теряется. Я могу восстановить его, проверив старый коммит.

  • Вы можете экспериментировать по желанию. Если это не решит проблему, верните ее.

  • Вы можете просмотреть предыдущие версии кода, чтобы узнать, когда и где были обнаружены ошибки. git bisect велик в этом отношении.

  • Более «продвинутые» функции, такие как ветвление и слияние, позволяют создавать несколько параллельных линий разработки. Вы можете работать в двух одновременных функциях без помех и переключаться вперед и назад без особых хлопот.

  • Вы можете увидеть "что изменилось". Это может звучать просто, но я часто проверяю это. Я очень часто начинаю свой рабочий процесс с одного человека: что я делал вчера?

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

Если вам нужна локальная VCS, вы можете настроить свой собственный сервер Subversion (что я делал в прошлом), но сегодня я рекомендовал бы использовать git. Гораздо проще Просто cd в вашу директорию кода и запустите:

git init

Добро пожаловать в клуб.

18 голосов
/ 11 сентября 2009

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

Возможно, вы используете контроль версий прямо сейчас, даже если вы этого не знаете. У вас есть какие-нибудь папки с надписью «XXX Php Code (December)» или «XXX.php.bak.2»? Эти уже являются формами контроля версий. Хорошая система контроля версий позаботится об этом автоматически. Вы сможете откатиться к любому моменту времени (когда у вас есть данные) и увидеть точную копию этих данных.

Кроме того, если вы используете систему, подобную subversion, и используете удаленный репозиторий (например, на своем сервере), у вас будет место для хранения всего вашего кода. Нужна копия вашего кода где-нибудь еще? Нет проблем, просто проверьте это. Сбой жесткого диска дома? Не проблема (по крайней мере, с вашим исходным кодом).

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

14 голосов
/ 11 сентября 2009

Даже работая в одиночку, это когда-нибудь случалось? Вы запускаете свое приложение, и что-то не работает, и вы говорите: «Это сработало вчера, и, клянусь, я не трогал этот класс / метод». Если вы регулярно проверяете код, быстрая версия diff покажет, что именно изменилось за последний день.

12 голосов
/ 21 февраля 2012

Вот сценарий, который может проиллюстрировать полезность контроля источников, даже если вы работаете в одиночку.

Ваш клиент просит вас внедрить амбициозную модификацию сайта. Это займет пару недель и потребует внесения изменений на многих страницах. Вы приступаете к работе.

Вы на 50% выполнили эту задачу, когда клиент звонит и говорит вам отказаться от того, что вы делаете, чтобы сделать срочное, но более незначительное изменение на сайте. Вы не выполнили более крупную задачу, поэтому она не готова к запуску, и клиент не может дождаться меньшего изменения. Но он также хочет, чтобы незначительные изменения были включены в вашу работу для более значительных изменений.

Возможно, вы работаете над большой задачей в отдельной папке, содержащей копию сайта. Теперь вам нужно выяснить, как сделать незначительное изменение таким образом, чтобы его можно было быстро развернуть. Вы яростно работаете и делаете это. Клиент перезванивает с дальнейшими запросами на уточнение. Вы тоже это делаете и разворачиваете. Все хорошо.

Теперь вы должны объединить это с незавершенной работой для серьезного изменения. Что вы поменяли на срочную работу? Вы работали слишком быстро, чтобы вести записи. И теперь вы не можете просто различать эти два каталога, так как оба имеют изменения относительно базовой линии, с которой вы начали.

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

  • Вы можете использовать ветви для работы над долгосрочными задачами, а затем слить ветку обратно в основную строку, когда это будет сделано.
  • Вы можете сравнить целые наборы файлов с другими ветками или с предыдущими ревизиями, чтобы увидеть, что отличается.
  • Вы можете отслеживать работу с течением времени (что, кстати, отлично подходит для составления отчетов и выставления счетов).
  • Вы можете восстановить любую ревизию любого файла по дате или вехе, которую вы определили.

Для сольной работы рекомендуется Subversion или Git. Любой может свободно отдавать предпочтение одному или другому, но одно из них явно лучше, чем использование какого-либо контроля версий. Хорошими книгами являются « Прагматическое управление версиями с использованием Subversion, 2-е издание » Майка Мейсона или « Прагматическое управление версиями с использованием Git » Трэвиса Свичегуда.


Оригинальный автор: Билл Карвин

10 голосов
/ 11 сентября 2009

Несмотря на то, что система управления исходным кодом для одного разработчика предлагает большие преимущества. Это позволяет вам в любое время сохранить историю вашего кода и вернуться к предыдущим версиям вашего программного обеспечения. Это дает вам бесстрашную гибкость для экспериментов, потому что вы всегда можете восстановить другую версию исходного кода, которая работала.

Это похоже на гигантскую кнопку «отменить» вплоть до первой строки кода.

7 голосов
/ 11 сентября 2009

Контроль версий практически невозможен без того, чтобы начать использовать его. Это необходимо, если над одной и той же кодовой базой работают несколько разработчиков ... но это также весьма полезно для одного разработчика.

Отслеживает изменения в вашем коде и позволяет вам вернуться к предыдущим версиям. Это дает вам возможность экспериментировать со знанием того, что если что-то сломается, вы можете отменить свои изменения.

5 голосов
/ 11 сентября 2009

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

3 голосов
/ 11 сентября 2009

Контроль версий отлично подходит для проверки предыдущих версий, даже если вы работаете в одиночку. Например, если вы случайно удалили код или файл, вы можете получить его обратно; или вы можете сравнить предыдущие версии, чтобы понять, почему появилась новая ошибка. Также хорошо, если вы работаете в нескольких местах.

Мой личный фаворит - git.

3 голосов
/ 11 сентября 2009

Существует несколько причин использовать контроль версий, даже если вы единственный человек, который когда-либо будет касаться кода.

  • Резервное копирование - что делать, если ваш жесткий диск выходит из строя? У вас есть где-нибудь копия?
  • История изменений - Вы храните копии кода в разных папках? Контроль версий дает вам возможность отслеживать изменения во времени и легко различать различные ревизии, объединять, откатывать изменения и т. Д. С помощью инструментов.
  • Ветви - возможность протестировать некоторые изменения, по-прежнему отслеживать, что вы делаете, а затем решить, хотите ли вы сохранить его и объединить с основным проектом или просто выбросить.

Если вы держите свой код под контролем версий, тогда вам будет действительно легко увидеть, какие файлы вы изменили (или забыли добавить к базовому сценарию).

...