Содержание
Топ-5 систем управления версиями с открытым исходным кодом
Система контроля версий относится к процессу, касающемуся систематизации версий, объединяемых при редактировании и совместной работе. Хотя контроль версий как термин рассматривается в контексте разработки программного обеспечения, на самом деле, он необходим для профессионалов разных отраслей.
Для крупных проектов по разработке программного обеспечения системы контроля версий отслеживают множество изменений в исходном коде.
- Почему так важны системы контроля версий?
- 5 систем контроля версий с открытым исходным кодом
- CVS
- SVN
- GIT
- Mercurial
- Bazaar
Все системы контроля версий обладают следующими возможностями:
- позволяют команде программистов одновременно работать над одним и тем же проектом;
- минимизируют конфликты между разработчиками, которые работают над одним проектом;
- автоматически создают архив каждой версии, включающий в себя все изменения проекта.
Существуют разные системы управления версиями, но какие отличительные черты делают их уникальными? Перечислим три их главные группы:
- в соответствии с расположением репозитория: централизованные и распределенные;
- в соответствии с методами проверки слияния и передачи кода: блокирующие, использующие слияние до фиксации и выполняющие фиксацию до слияния;
- системы управления версиями могут выполнять небольшие операции или операции с файлами.
CVS является самой популярной и широко применяемой системой контроля версий на сегодняшний день. После выпуска в 1986 году она быстро стала общепринятым стандартом. CVS приобрела популярность благодаря простой системе поддержки файлов и ревизий в актуальном состоянии.
Существует ряд IDE для CVS, включая Xcode (Mac), Eclipse, NetBeans и Emacs.
Достоинства
- Это проверенная временем система, которая используется более трех десятилетий;
- Существует много IDE, которые используют CVS.
Недостатки
- Перемещение или переименование файлов не включается в обновление версии;
- Предоставление символических ссылок на файлы связано с некоторыми рисками безопасности;
- Отсутствие поддержки атомарных операций может привести к повреждению исходного кода;
- Медленные операции установления меток и ветвления;
- Слабая поддержка двоичных файлов.
Еще одна распространенная система управления версиями. Большинство проектов с открытым исходным кодом и крупные платформы, такие как Ruby, Python Apache, используют SVN. Из-за огромной популярности существует множество версий и доступных IDE.
Достоинства системы контроля версий SVN
- Новая и значительно улучшенная система, основанная на CVS;
- Допускает атомарные операции;
- Операции в ветке проекта малозатратны;
- Доступны различные плагины IDE.
Недостатки
- Выдает ошибки при переименовании файлов и каталогов;
- Недостаточно команд для управления репозиторием;
- SVN работает медленнее по сравнению с другими системами управления версиями.
Благодаря распределенной форме управления без необходимости использования оригинального программного обеспечения многие проекты с открытым исходным кодом предпочитают Git.
Достоинства
- Почти все отрицательные черты CVS/SVN устранены;
- Высокая скорость работы распределенной системы контроля версий;
- Легкость проведения различных операций с ветками проекта;
- Пользователи могут получить доступ к полному дереву истории в режиме офлайн;
- Предлагает высоко распределенную одноранговую модель.
Недостатки
- Высокий порог вхождения для пользователей SVN;
- Ограниченная поддержка Windows по сравнению с Linux.
Считается эффективной для крупных проектов, в которых участвует много разработчиков и проектировщиков. Mercurial – это высокопроизводительная система, предлагающая оптимальную скорость. Она также известна своей простотой и подробной документацией.
Достоинства Mercurial системы контроля версий
- Низкий порог вхождения по сравнению с Git;
- Подробная документация;
- Распределенная модель;
- Высокопроизводительная система с отличной скоростью.
Недостатки
- Нельзя объединить две родительские ветки;
- Основана на расширениях, а не сценариях;
- Недостаточно гибкая, чтобы выполнять операции по умолчанию.
Уникальна тем, что может использоваться с распределенной и централизованной базой кода. Это делает ее универсальной системой контроля версий. Кроме этого Bazaar позволяет использовать детальный уровень управления. Ее можно легко развернуть в самых разных сценариях, что делает ее адаптивной и гибкой для всевозможных проектов.
Достоинства
- Идеально подходит для разнообразных проектов;
- Предоставляет гораздо более продвинутый набор команд и поддержку IDE;
- Включает в себя настраиваемый набор функций, который подходит для разнообразных проектов.
Недостатки
- Является новой и недостаточно проработанной системой управления версиями;
- Отсутствует поддержка IDE.
Что касается популярности, порога вхождения, производительности и адаптивности, рассмотренные в этой статье системы контроля версий существенно превосходят другие.
МЛМария Логутенкоавтор-переводчик
Что такое управление версиями? | Сервисы
Системы контроля версиями записывают и сохраняют несколько изменений в файлах. Благодаря этому можно вернуться к определенной точке истории изменения файла или проекта. Некоторые системы, такие как Subversion, отслеживают историю отдельных файлов. Другие, такие как Git и Mercurial, отслеживают историю целых репозиториев.
Управление версиями подобно системе безопасности. Если вы внесли изменения, которые позже вызвали проблемы, можно будет вернуть файл или весь проект к определенной точке вместо того, чтобы начинать все с нуля.
- Распределенное управление версиями
- Централизованное управление версиями
- Заключение
Одним из наиболее часто используемых вариантов является локальное управление версиями. Поэтому большинство пользователей просто не обращают на него внимания, поскольку это одна из множества функций приложения.
В любом приложении реализован как минимум базовый уровень локального управления версиями, состоящий из функций «отменить» и «повторить». Некоторые программы, такие как Microsoft Office и документы Google, содержат более сложные функции, такие как сравнение версий и комментирование.
Системы управления версиями в приложениях ограничены типами файлов, которые они поддерживают, и объемом истории изменений, которые они могут хранить. В свою очередь автономные системы управления версиями могут сосредоточиться на более сложных функциях, хранить бесконечные истории версий и не ограничиваться конкретными форматами. Хотя некоторые системы больше подходят для конкретных файлов. По этой причине они более популярны в программировании. Хотя они могут использоваться для управления версиями любого файла, от базовых текстовых документов до огромных графических файлов.
Системы контроля версий делятся на две категории: распределенные и централизованные. Каждая из них имеет свои преимущества и недостатки, которые делают их идеальными для различных рабочих процессов. К каждому типу относится множество различных систем. Наиболее популярными являются системы контроля версий Git, Subversion и Mercurial. Рассмотрим основные различия между распределенным и централизованным управлением версиями.
Распределенное управление версиями также известное как распределенное управление ревизиями. Оно построено по принципу равноправия узлов. Причем каждый равноправный узел имеет свой собственный клон репозитория. При подобном подходе копируется история базы кода, поэтому любое фатальное повреждение исходного, серверного репозитория может быть полностью восстановлено из любого из имеющихся клонов. Тем не менее, в стандартном рабочем процессе изменения в репозитории не приводят к полному обновлению репозитория. Вместо этого отображаются только внесенные изменения в равноправных узлах, что позволяет быстро выполнять операции без необходимости связываться с сервером.
Распределенное управление версиями является популярным благодаря таким системам, как Git и Mercurial. Они широко применяются для организации совместной работы в проектах с открытым исходным кодом. Из-за особенностей настройки клонирование всей базы кода проекта для каждой равноправной системы позволяет получить больше свободы, когда дело касается рабочих процессов и совместной работы.
В отличие от распределенной системы контроля версий и локального управления версиями, данные в централизованных системах управления версиями (CVC), таких как Perforce и Subversion, хранятся в серверных хранилищах. Это означает, что каждый узел проверяет файлы и фиксирует изменения в центральной базе.
Проблема заключается в доступности данных. Поскольку файлы хранятся в центральном хранилище, если сервер дает сбой, никакая работа не сможет осуществляться до тех пор, пока сервер не будет перезапущен. Более того, если сервер будет поврежден, то при отсутствии актуальной резервной копии все данные могут быть полностью потеряны.
Главным преимуществом таких систем является то, что данные хранятся в одном месте. Это упрощает обслуживание и ограничивает доступ к ним со стороны пользователей.
Управление версиями — это удобный способ мониторинга изменений в файлах и проектах. Хотя системы контроля версий в первую очередь позиционируются как инструменты для управления проектами по разработке программного обеспечения, они могут оказаться полезными при управлении файлами любого типа.
Вадим Дворниковавтор-переводчик
Какие есть варианты для «локального» репозитория с контролем версий?
Я поклонник SVN, и мне удобно создавать собственный репозиторий svn, но мне интересно, есть ли варианты получше, чем создание отдельного репозитория.
По сути, я просто ищу способ отслеживать или откатывать изменения до того, как мой код будет проверен и зарегистрирован в основном репозитории (SourceSafe).
Примечание. Я не могу контролировать, какую систему управления версиями мы используем (предпочитаю svn или svk), поэтому остановился на SourceSafe в качестве основного репозитория.
- контроль версий
Большинство распределенных систем контроля версий объединяют концепции рабочей копии и репозитория . Другими словами: рабочая копия — это репозиторий.
Если вы хотите поставить исходное дерево под контроль версий, в большинстве DVCS это так же просто, как
-
cd $PROJECT
-
git init # Создать репозиторий
-
git добавить . # Рекурсивно добавить все файлы в каталоге в репозиторий
-
git commit # Сделать начальную фиксацию
Я считаю, что команды точно такие же для Mercurial (с hg
вместо git
) и очень похожи для Bazaar, Darcs, Monotone, Codeville, Arch и большинства других DVCS.
Если вы ищете решение с минимальным временем установки, я бы порекомендовал обратить внимание на распределенную систему контроля версий.
Это позволит вам проверить свой код в локальном репозитории без настройки серверов и т. п.
Примеры распределенных систем контроля версий включают:
- Bazaar
- Меркуриал
- Гит
Git — это хорошая система управления исходным кодом, которая распространяется по своей природе, поэтому вы можете иметь версию на своем устройстве разработки, которая может объединяться с серверной копией.
1
Прочтите эту статью:
Создание локального репозитория Subversion с помощью TortoiseSVN
С помощью TortoiseSVN очень просто и безболезненно создать локальный репозиторий в вашей локальной файловой системе.
Perforce бесплатен для двух пользователей
http://www.perforce.com/perforce/evaldemo.html
Я разрабатываю продукт, который может идеально вам подойти.
Он называется «Агент кода транзакции».
Он предназначен для автоматического сохранения локальной истории исходного кода.
Вы указываете ему папки, в которых вы храните свой код, и он автоматически делает резервную копию каждый раз, когда вы меняете файл. Вы можете сравнивать версии, откатывать изменения и даже создавать именованные «моментальные снимки» (исправлена ошибка 1234, реализована функция y и т. д.), чтобы упростить восстановление до определенных моментов времени.
Поскольку это происходит автоматически, вам не нужно беспокоиться о ручной фиксации локальных изменений.
Все просто работает.
Подробную информацию об этом я поместил в этом посте:
Простейшая система управления исходным кодом — что вы используете?
Он должен выйти где-то в феврале. Я ищу бета-тестеров. Бета-версия должна открыться где-то в январе. Если вы заинтересованы, дайте мне знать.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
visual studio — Как настроить систему контроля версий в локальной сети без сервера?
Редактировать: Итак, я узнал, что мне нужен распределенный контроль версий, однако существуют ли какие-либо основанные на пользовательском интерфейсе, и позволяют ли они вам объединяться с другими пользователями в сети?
Этот вопрос состоит из двух частей, так что вот. Я хочу начать разработку веб-приложения дома (с несколькими разработчиками). Однако у меня нет выделенного сервера, и я не хочу платить за него.
Итак, во-первых, я не знаю, какую систему управления версиями использовать для этого случая, так как на работе у нас в основном есть настройка TFS, поэтому я не знаком с тем, что там есть. Какие есть лучшие бесплатные инструменты CVS/SVN?
Во-вторых, можно ли как-то настроить CVS/SVN, где нет выделенного сервера и оба клиента хранят до одной недели исходный код с момента последней регистрации?
Кроме того, было бы полезно, если бы он мог интегрироваться с Visual Studio, опять же, это не так важно.
Проблема:
Пять пользователей, один из них Сервер.
Сервер подключен: Все в порядке
Сервер отключен: Никто не может поделиться.
Что я ищу:
Нет сервера:
- Пользователи все еще имеют версии на основе идентификатора версии последней регистрации.
- Пользователи должны проверять все версии в сети, чтобы убедиться, что они не устарели на основе их идентификатора последней версии.
- Если не зарегистрировать, иначе слить/получить последнюю.
- Если они обновляются, и установите идентификатор текущей версии +1.
- visual-studio
- svn
- контроль версий
- локальная сеть
1
Если вы ищете систему управления версиями, у которой НЕТ центрального репозитория, вам нужна распределенная система управления версиями , такая как Git или Mercurial.
5
Лучшим бесплатным инструментом CVS/SVN является SVN.
Кроме того, сервер SVN легко настроить на любой машине. Прочтите прекрасное руководство.
1
Я предполагаю, что в какой-то момент ваши разработчики подключатся к каждому (возможно, в вашей локальной сети), чтобы объединить весь ваш код. В этом случае я настоятельно рекомендую использовать DVCS (распределенную систему управления версиями). Популярный ребенок в этом квартале — Git, но есть и другие, такие как Mercurial. Если вы в основном разрабатываете Windows, Mercurial, кажется, имеет лучшую поддержку. Основное преимущество DVCS заключается в том, что они предназначены для команд, которые не подключены друг к другу.
Надеюсь, это поможет.
ПЗУ
1
Вероятно, вас должен заинтересовать сервер VisualSVN. У него есть бесплатная версия, которой будет достаточно для всех ваших нужд. Кстати, toroise SVN поддерживает даже репозитории в любой папке или на флешке, так что вам не нужен отдельный сервер. Что касается интеграции с VS, вам может помочь Visual SVN, но это не бесплатно. Наслаждайтесь =)
5
Для низкой кривой обучения проще всего использовать SVN, так как она близка к модели TFS. Но это также означает выделенный сервер. Я бы предложил сервер VisualSVN, так как его очень просто настроить. Затем вам нужно будет открыть порт, на котором он работает, другим разработчикам за пределами вашей домашней сети. А для интеграции с Visual Studio посмотрите AnkhSVN. Или придерживайтесь обычных клиентов, таких как TortoiseSVN.
Это означало бы, что любые удаленные разработчики будут работать медленнее при взаимодействии с репозиторием. Вот тут-то и появляются такие опции, как Git, но определенно есть некоторая кривая обучения, когда вы привыкли к централизованному репозиторию. Существуют инструменты для соединения Git с SVN, чтобы получить лучшее из обоих миров. Я не пробовал использовать их в среде Windows, поэтому не буду говорить о том, насколько они просты в использовании. Я только начинаю использовать Git для проектов, в основном для ситуаций, когда я не могу настроить репозиторий в другом месте.
5
TeamCity для непрерывной интеграции от JetBrains удобен, прост в настройке, и вам не нужен «сервер», вам нужен только включенный компьютер. Он также хорошо интегрируется с Subversion. Это несложно настроить с сервером VisualSVN. И плагин VisualSVN для Visual Studio.
1
Рассматривали ли вы возможность использования онлайн-решения? Таким образом, вам не нужно беспокоиться о настройке сервера, управлении резервными копиями и т. д. Есть сервисы, которые предлагают это бесплатно — один из них, который я пробовал сам, — это Beanstalk, который использует Subversion и имеет бесплатный план для трех пользователей. со 100 МБ места. Полезно для небольших проектов.
Как указывалось в некоторых ответах, распределенный контроль версий, такой как Git или Mercurial, — это то, что вам нужно. Возможно, если вы объясните, как работает ваша распределенная команда, можно будет предложить другое возможное решение.
Например, вы упомянули о настройке работы из дома и наличии команды на работе, которая раньше использовала TFS. Может быть, если ваша рабочая группа состоит из большей части вашей команды на работе, а вы один работаете из дома, то вы можете сделать что-то вроде:
- Иметь SVN на работе, где работают все ваши товарищи по команде, решая проблему сложности и обучения.