- О системах контроля версий
- Введение
- Системы контроля версий
- Copy-paste
- Локальная система контроля версий
- Централизованная система контроля версий
- Распределенная система контроля версий
- История Git
- Заключение
- Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
- Re: Системы управления версиями для Linux
О системах контроля версий
Всем привет! Уже на следующей неделе в OTUS стартует «Супер-практикум по использованию и настройке GIT». Этому я и решил посвятить сегодняшнюю публикацию.
Введение
Системы контроля версий
Система контроля версий является прежде всего инструментам, а инструмент призван решать некоторый класс задач. Итак, система контроля версий – это система, записывающая изменения
в файл или набор файлов в течение времени и позволяющая вернуться позже к определенной версии. Мы хотим гибко управлять некоторым набором файлом, откатываться до определенных версий в случае необходимости. Можно отменить те или иные изменения файла, откатить его удаление, посмотреть кто что-то поменял. Как правило системы контроля версий применяются для хранения исходного кода, но это необязательно. Они могут применяться для хранения файлов совершенно любого типа.
Как хранить различные версии файлов? Люди пришли к такому инструменту как системы контроля версий не сразу, да и они сами бывают очень разные. Предложенную задачу можно решить с применением старого доброго copy-paste, локальных, централизованных или распределенных систем контроля версий.
Copy-paste
Известный метод при применении к данной задаче может выглядеть следующим образом: будем называть файлы по шаблону filename_
Данный способ является очень простым, но он подвержен различным ошибкам: можно случайно изменить не тот файл, можно скопировать не из той директории (ведь именно так переносятся файлы в этой модели).
Локальная система контроля версий
Следующим шагом в развитии систем контроля версий было создание локальных систем контроля версий. Они представляли из себя простейшую базу данных, которая хранит записи обо всех изменениях в файлах.
Одним из примеров таких систем является система контроля версий RCS, которая была разработана в 1985 году (последний патч был написан в 2015 году) и хранит изменений в файлах (патчи), осуществляя контроль версий. Набор этих изменений позволяет восстановить любое состояние файла. RCS поставляется с Linux’ом.
Локальная система контроля версий хорошо решает поставленную перед ней задачу, однако ее проблемой является основное свойство — локальность. Она совершенно не преднезначена для коллективного использования.
Централизованная система контроля версий
Централизованная система контроля версий предназначена для решения основной проблемы локальной системы контроля версий.
Для организации такой системы контроля версий используется единственный сервер, который содержит все версии файлов. Клиенты, обращаясь к этому серверу, получают из этого централизованного хранилища. Применение централизованных систем контроля версий на протяжении многих лет являлась стандартом. К ним относятся CVS, Subversion, Perforce.
Такими системами легко управлять из-за наличия единственного сервера. Но при этом наличие централизованного сервера приводит к возникновению единой точки отказа в виде этого самого сервера. В случае отключения этого сервера разработчики не смогут выкачивать файлы. Самым худшим сценарием является физическое уничтожение сервера (или вылет жесткого диска), он приводит к потерю кодовой базы.
Несмотря на то, что мода на SVN прошла, иногда наблюдается обратный ход — переход от Git’а к SVN’у. Дело в том, что SVN позволяет осуществлять селективный чекаут, который подразумевает выкачку лишь некоторых файлов с сервера. Такой подход приобретает популярность при использовании монорепозиториях, о которых можно будет поговорить позже.
Распределенная система контроля версий
Для устранения единой точки отказа используются распределенные системы контроля версий. Они подразумевают, что клиент выкачает себе весь репозиторий целиком заместо выкачки конкретных интересующих клиента файлов. Если умрет любая копия репозитория, то это не приведет к потере кодовой базы, поскольку она может быть восстановлена с компьютера любого разработчика. Каждая копия является полным бэкапом данных.
Все копии являются равноправным и могут синхронизироваться между собой. Подобный подход очень напоминает (да и является) репликацией вида master-master.
К данному виду систем контроля версий относятся Mercurial, Bazaar, Darcs и Git. Последняя система контроля версий и будет рассмотрена нами далее более детально.
История Git
В 2005 году компания, разрабатывающая систему контроля версий BitKeeper, порвала отношения с сообществом разработчиков ядра Linux. После этого сообщество приняло решение о разработке своей собственной системы контроля версий. Основными ценностями новой системы стали: полная децентрализация, скорость, простая архитектура, хорошая поддержка нелинейной разработки.
Заключение
Мы рассмотрели способы организации систем контроля версий, обсудили варианты решения поставленных перед этими системами задач, поговорили о преимуществах и недостатках каждого из них, познакомились с историей системы контроля версий Git.
Источник
Системы управления версиями для Linux
Обзор архитектуры, моделей и примеров. Системы управления версиями (VCS) или Системы управления исходным кодом (SMS) — важный аспект разработки современного ПО. Эта статья дает обзор систем Управления Конфигурации ПО (SCM) и их преимущества, включая CVS, Subversion, Arch и Git. Наконец, она рассматривает некоторые из новых подходов, которые пригодны и как они отличаются от прежних методов.
Re: Системы управления версиями для Linux
Кому нахнужен Arch? Где Mercurial? Аффтару низач0т.
Re: Системы управления версиями для Linux
Жутковатый перевод. Без знания английского понять что-либо довольно сложно..
Re: Системы управления версиями для Linux
>Subversion (SVN) была разработана как прямая замена CVS, но без свойственных CVS заранее определенных выпусков
Я тоже в школе слово issue иначе как «выпуск» не переводил =)
Re: Системы управления версиями для Linux
Или машинный перевод или лоровец.. «Это очень просто, но это стоит работы децентрализованной SCM, основанной на методе «набора изменений» и используется как SCM для ядра Linux. Он использует модель группировки файлов больше, чем отслеживание отдельными файлами. Изменения сжаты и раздроблены с помощью SHA1, подтверждая их целостность. (см. листинг 4)»
Re: Системы управления версиями для Linux
Я тоже порадовался про issues. Может, думаю, они так changeset перевели, но вроде бы не очень в кассу, а тут все просто как топор.
Хочется попросить IBM давать ссылки на оригинальные статьи, потому что перевод на русский иногда бывает очень сложно понять без перевода.
Re: Системы управления версиями для Linux
> Хочется попросить IBM давать ссылки на оригинальные статьи, потому что перевод на русский иногда бывает очень сложно понять без перевода.
Без рекурсии рекурсию не понять, да.
Re: Системы управления версиями для Linux
Интересно было бы еще узнать о преимуществах darcs и mercurial
Re: Системы управления версиями для Linux
перевод чудовищен. перевести issues как выпуск, а hashed как раздроблен. это просто праздник какой-то
Re: Системы управления версиями для Linux
Напоминает текст на упаковках «натуральных арахисов». Вообще ужас.
>> Его неиспользование сродни вождению машины слишком быстро: это смешно, и вы можете попасть в пункт назначения быстрее, но катастрофа неизбежна.
>> она рассматривает некоторые из новых подходов, которые пригодны
Re: Системы управления версиями для Linux
Присоединяюсь к предыдущим ораторам. Стыдно должно быть такой перевод выкладывать. Уж лучше бы ссылку на оригинальную статью дали чтобы не позориться.
Или это у них переводчик схалявил и вместо того, чтобы переводить вручную, прогнал текст через программную переводилку?
Re: Системы управления версиями для Linux
hg забыли, по удобству он уделывает все вышеперечисленные, ну а arch это вообще не для людей делали.
Re: Системы управления версиями для Linux
Re: Системы управления версиями для Linux
> hg забыли, по удобству он уделывает все вышеперечисленные
> ну а arch это вообще не для людей делали.
Re: Системы управления версиями для Linux
>> hg забыли, по удобству он уделывает все вышеперечисленные
Re: Системы управления версиями для Linux
> hg забыли, по удобству он уделывает все вышеперечисленные
Можно поконкретнее? Я ковырял немного hg в своё время (версии
0.9.1), в итоге сделал выбор в пользу git. Не нашёл в хг ничего, чем он принципиально лучше гита.
Re: Системы управления версиями для Linux
> Я ковырял немного hg в своё время (версии
0.9.1), в итоге сделал выбор в пользу git.
А я ковырял несколько версий git, в итоге сделал выбор в пользу hg 🙂
> Не нашёл в хг ничего, чем он принципиально лучше гита.
Принципиально он не лучше, но зато им можно пользоваться, не будучи Линусом. Ну и мелкие радости типа «человеческих» номеров ревизий в духе SVN.
А насчет принципиальных улучшений — чем Git лучше Monotone? 😉
Re: Системы управления версиями для Linux
гавно статья 🙂
и информации мягко говоря очень мало .
Re: Системы управления версиями для Linux
> А насчет принципиальных улучшений — чем Git лучше Monotone? 😉
Лучше тем что быстрее.
Хуже тем что он не мультиплатформенный и прожерливый
Re: Системы управления версиями для Linux
В таком виде, да, git рулез-форёва.
Но реально, они забыли рассмотреть следующие vcs (version contril system)
(это только те которые я сам смотрел):
* CVS
* Darcs
* Vesta
* Codeville
* Subversion
* SVK
* Aegis
* Stellation
* META-CVS
* GNU Arch & Bazaar
* Arch 2.0/»revc»
* ArX
* Bazaar-NG
* Monotone
* OpenCM
* PRCS
* DCVS
* Superversion
* Jedi VCS
* Archipel
* SourceJammer
* FastCST
* CBE
* SiVeCo
* Git/Cogito/etch
* Mercurial
* BriefCase
* Gat
* Bky
* LibreSource
* Pastwatch
* A Simple Version Control System
* shapeTools
* rcs
Re: Системы управления версиями для Linux
>> А насчет принципиальных улучшений — чем Git лучше Monotone? 😉
> Лучше тем что быстрее.
А «быстрее» засчитывается как «принципиальное»? 🙂 И с какой версией Monotone сравнивалось?
тоже, ИМХО, не «принципиально». Кстати, Mercurial поддерживает Windows.
А можно подробнее?
Re: Системы управления версиями для Linux
да вы darcs не видели 😉
Re: Системы управления версиями для Linux
Афигеть. Вообще-то OpenCM, PRCS, revc, Stellation и FastCST уже давно RIP (и это только те, о кончине которых я знаю :D)
Re: Системы управления версиями для Linux
RIP они будут тогда и только тогда, когда ими пользоваться перестанут.
Вон, многие кричат что tla сдохла и воняет, и тоже присваивают статус RIP, ан нет, ей активно многие пользуются 😉
Re: Системы управления версиями для Linux
> да вы darcs не видели 😉
Видел. Монотону проигрывает по моим задачам.
Re: Системы управления версиями для Linux
> RIP они будут тогда и только тогда, когда ими пользоваться перестанут.
Неужели OpenCM еще кто-то пользуется? Можно ссылку на проект? То же самое — со Stellation. revc родился мертвым, FastCST — вообще прототип, написанный классным парнем Zed’ом, но не претендовавший на бытие полной VCS.
> tla сдохла и воняет, и тоже присваивают статус RIP, ан нет, ей активно многие пользуются 😉
«Перестаньте наконец насиловать труп» (c) 😀
Re: Системы управления версиями для Linux
>> Лучше тем что быстрее.
> А «быстрее» засчитывается как «принципиальное»? 🙂 И с какой версией Monotone сравнивалось?
С любой. Да его разогнали по сравнению с 0.2x Но все равно меделеннее git и mercurial. Насколько я помню git начал писаться потому что скорость монотона сильно не устраивала Линуса.
> А можно подробнее?
Трафик жрет как свинья помои.
Re: Системы управления версиями для Linux
А если ссылок нету, т.к. это не публичный проект?
Многие системы контроля версий используются по привычки. Так у меня для моих проектов используется их больше десятка. С какой начали проект, на такой и живем. Хотя сейчас появилась тенденция унифицировать их 😉
Re: Системы управления версиями для Linux
И darcs, и monotone, и hg сходят сума когда объемы исходного кода становятся огромными.
С парой сотен мегабайт и выше выбор только один — git
Re: Системы управления версиями для Linux
Странные у вас требования.
Я бы сделал так: зашел на сервер, там бы сделал git clone, потом перепаковал и сжал бы tar’ом, потом по ssh на свою машину бы скачал, если трафик дорог, ну и дальше просто poll’ился, естественно, немного поправив url 😉
Re: Системы управления версиями для Linux
> Так у меня для моих проектов используется их больше десятка.
Убицца веником 😀
> Хотя сейчас появилась тенденция унифицировать их 😉
На какой, если не секрет?
Re: Системы управления версиями для Linux
> > А насчет принципиальных улучшений — чем Git лучше Monotone? 😉
> Хуже тем что он не мультиплатформенный и прожерливый
По поводу мультиплатформенности — правильнее сказать, git мультиплатформенный, но имеет проблемы на платформах, которые на данном сайте являются оффтопиком 🙂 Проблемы свзязаны в первую очередь с тем, что git строился по принципу UNIX-way (в чём ИМХО один из его больших плюсов), что неизбежно приводит к частым fork()+exec(), которые весьма быстры в юниксах, но не поддерживаются в оффтопике (а имеющиеся аналоги весьма медленные). Поэтому под оффтопиком гит тормозит. Но работает в принципе.
По поводу прожорливости — man git-repack и man git-gc. После упаковки всего репозитория в один pack-файл он занимает примерно столько же, сколько и в остальных СКВ (т. к. хранится он в этом случае сжатый, в т. ч. с использованием дельт).
Re: Системы управления версиями для Linux
> И darcs, и monotone, и hg сходят сума когда объемы исходного кода становятся огромными.
Источник