Управление версиями. git.
О системе контроля версий
Overview
- Что такое «система контроля версий» и почему это важно? Система контроля версий — это система, записывающая изменения в файл или набор файлов в течение времени и позволяющая вернуться позже к определённой версии. Для контроля версий файлов в этой книге в качестве примера будет использоваться исходный код программного обеспечения, хотя на самом деле вы можете использовать контроль версий практически для любых типов файлов.
Если вы графический или web-дизайнер и хотите сохранить каждую версию изображения или макета (скорее всего, захотите), система контроля версий (далее СКВ) — как раз то, что нужно. Она позволяет вернуть файлы к состоянию, в котором они были до изменений, вернуть проект к исходному состоянию, увидеть изменения, увидеть, кто последний менял что-то и вызвал проблему, кто поставил задачу и когда и многое другое. Использование СКВ также значит в целом, что, если вы сломали что-то или потеряли файлы, вы спокойно можете всё исправить. В дополнение ко всему вы получите всё это без каких-либо дополнительных усилий.
-
Многие люди в качестве метода контроля версий применяют копирование файлов в отдельный каталог (возможно даже, каталог с отметкой по времени, если они достаточно сообразительны). Данный подход очень распространён из-за его простоты, однако он невероятно сильно подвержен появлению ошибок. Можно легко забыть в каком каталоге вы находитесь и случайно изменить не тот файл или скопировать не те файлы, которые вы хотели. Для того, чтобы решить эту проблему, программисты давным-давно разработали локальные СКВ с простой базой данных, которая хранит записи о всех изменениях в файлах, осуществляя тем самым контроль ревизий. Одной из популярных СКВ была система RCS, которая и сегодня распространяется со многими компьютерами. RCS хранит на диске наборы патчей (различий между файлами) в специальном формате, применяя которые она может воссоздавать состояние каждого файла в заданный момент времени.
-
Следующая серьёзная проблема, с которой сталкиваются люди, — это необходимость взаимодействовать с другими разработчиками. Для того, чтобы разобраться с ней, были разработаны централизованные системы контроля версий (ЦСКВ). Такие системы, как CVS, Subversion и Perforce, используют единственный сервер, содержащий все версии файлов, и некоторое количество клиентов, которые получают файлы из этого централизованного хранилища. Применение ЦСКВ являлось стандартом на протяжении многих лет.
Такой подход имеет множество преимуществ, особенно перед локальными СКВ. Например, все разработчики проекта в определённой степени знают, чем занимается каждый из них. Администраторы имеют полный контроль над тем, кто и что может делать, и гораздо проще администрировать ЦСКВ, чем оперировать локальными базами данных на каждом клиенте.
Несмотря на это, данный подход тоже имеет серьёзные минусы. Самый очевидный минус — это единая точка отказа, представленная централизованным сервером. Если этот сервер выйдет из строя на час, то в течение этого времени никто не сможет использовать контроль версий для сохранения изменений, над которыми работает, а также никто не сможет обмениваться этими изменениями с другими разработчиками. Если жёсткий диск, на котором хранится центральная БД, повреждён, а своевременные бэкапы отсутствуют, вы потеряете всё — всю историю проекта, не считая единичных снимков репозитория, которые сохранились на локальных машинах разработчиков. Локальные СКВ страдают от той же самой проблемы: когда вся история проекта хранится в одном месте, вы рискуете потерять всё.
- Распределённые системы контроля версий. Здесь в игру вступают распределённые системы контроля версий (РСКВ). В РСКВ (таких как Git, Mercurial, Bazaar или Darcs) клиенты не просто скачивают снимок всех файлов (состояние файлов на определённый момент времени) — они полностью копируют репозиторий. В этом случае, если один из серверов, через который разработчики обменивались данными, умрёт, любой клиентский репозиторий может быть скопирован на другой сервер для продолжения работы. Каждая копия репозитория является полным бэкапом всех данных.
Более того, многие РСКВ могут одновременно взаимодействовать с несколькими удалёнными репозиториями, благодаря этому вы можете работать с различными группами людей, применяя различные подходы единовременно в рамках одного проекта. Это позволяет применять сразу несколько подходов в разработке, например, иерархические модели, что совершенно невозможно в централизованных системах.
Get Started
- 👉 Create a new site
- 📚 Personalize your site
- 💬 Chat with the Wowchemy community or Hugo community
- 🐦 Twitter: @wowchemy @GeorgeCushen #MadeWithWowchemy
- 💡 Request a feature or report a bug for Wowchemy
- ⬆️ Updating Wowchemy? View the Update Tutorial and Release Notes
Crowd-funded open-source software
To help us develop this template and software sustainably under the MIT license, we ask all individuals and businesses that use it to help support its ongoing maintenance and development via sponsorship.
❤️ Click here to become a sponsor and help support Wowchemy’s future ❤️
As a token of appreciation for sponsoring, you can unlock these awesome rewards and extra features 🦄✨
Ecosystem
- Hugo Academic CLI: Automatically import publications from BibTeX
Inspiration
Check out the latest demo of what you’ll get in less than 10 minutes, or view the showcase of personal, project, and business sites.
Features
- Page builder - Create anything with widgets and elements
- Edit any type of content - Blog posts, publications, talks, slides, projects, and more!
- Create content in Markdown, Jupyter, or RStudio
- Plugin System - Fully customizable color and font themes
- Display Code and Math - Code highlighting and LaTeX math supported
- Integrations - Google Analytics, Disqus commenting, Maps, Contact Forms, and more!
- Beautiful Site - Simple and refreshing one page design
- Industry-Leading SEO - Help get your website found on search engines and social media
- Media Galleries - Display your images and videos with captions in a customizable gallery
- Mobile Friendly - Look amazing on every screen with a mobile friendly version of your site
- Multi-language - 34+ language packs including English, 中文, and Português
- Multi-user - Each author gets their own profile page
- Privacy Pack - Assists with GDPR
- Stand Out - Bring your site to life with animation, parallax backgrounds, and scroll effects
- One-Click Deployment - No servers. No databases. Only files.
Themes
Wowchemy and its templates come with automatic day (light) and night (dark) mode built-in. Alternatively, visitors can choose their preferred mode - click the moon icon in the top right of the Demo to see it in action! Day/night mode can also be disabled by the site admin in params.toml
.
Choose a stunning theme and font for your site. Themes are fully customizable.
License
Copyright 2016-present George Cushen.
Released under the MIT license.