Fossil

Fossil — распределённая система управления версиями, которую разрабатывает Ричард Хипп. Ричард Хипп также является основным разработчиком СУБД SQLite, которую Fossil использует в качестве хранилища всей информации.

Fossil
Тип распределённая система управления версиями[d]
Разработчик Ричард Хипп[d]
Написана на Си[1] и SQL[2]
Операционная система кроссплатформенность
Первый выпуск 2006
Последняя версия 2.12.1 (20 августа 2020)
Читаемые форматы файлов SQLite database file format[d] и Fossil repository database[d]
Создаваемые форматы файлов SQLite database file format[d] и Fossil repository database[d]
Лицензия 2-пунктная лицензия BSD[3][4]
Сайт fossil-scm.org (англ.)

Дизайн

Вся функциональность реализована в одном исполняемом файле (fossil или fossil.exe). Размер файла колеблется для различных сборок от двух мегабайт (Mac 10.x x86) до четырех (Windows). Процедуры установки не требуется, достаточно просто скопировать файл в папку на компьютере, доступную через переменную PATH. Также Fossil не требует никаких внешних зависимостей: Вам НЕ нужны CVS, gzip, diff, rsync, Python, Perl, Tcl, Java, apache, PostgreSQL, MySQL, SQLite, patch, или какие-либо подобные приложения для эффективного использования Fossil.

Интересной особенностью Fossil является то, что, хотя он представляет собой распределённую систему хранения версий подобно GIT или Mercurial, но вместе с тем позволяет работать пользователю с централизованным хранилищем как CVS или SVN. Эта возможность реализована за счёт режима автосинхронизации (autosync mode): после удачно завершённой фиксации изменений в локальном хранилище (commit) правки автоматически отправляются (push) обратно на сервер, с которого было клонировано хранилище или последний раз синхронизировалось. Точно так же при обновлении (update) локальных файлов Fossil сперва забирает (pull) последние изменения с сервера в локальное хранилище, а затем уже обновляет файлы пользователя. Автосинхронизация включена по умолчанию: по мнению авторов, совместная разработка в этом режиме проходит более гладко за счёт ухода от бессмысленных разветвлений/слияний и удержания разработчиков в одной и той же версии кода вместо собственных несовместимых веток.

Fossil автоматически проверяет все репозитории на целостность и непротиворечивость. Надёжность репозитория основана на использовании в качестве хранилища информации СУБД SQLite3, которая способна обеспечить атомарность исполняемых операций.

Помимо функциональности системы контроля версий, в данный проект также заложена функциональность багтрекера, редактора и хранилища wiki-страниц для более удобной работы с проектом. Также в этом проекте реализован простой HTTP-сервер. Собственно, вся работа с репозиторием осуществляется через протокол HTTP.

Fossil имеет web-интерфейс, который может быть гибко настроен пользователем. Все настройки интерфейса также хранятся в файле репозитория. Встроенный HTTP-сервер поддерживает протокол работы с внешними приложениями CGI, и благодаря этому функциональность поставляемого интерфейса может быть значительно расширена.

Веб-сервер Fossil даёт возможность отображать документацию проекта — система будет показывать в браузере файлы из соответствующего каталога проекта с учётом версии правки. Fossil распознаёт основные типы файлов (.css, .gif, .htm, .html, .jpg, .jpeg, .png, .txt). Кроме того, отдельно обрабатываются специальные типы текстовых файлов: .wiki (вариант Вики-разметки) и .md (Markdown). Редактирование файлов документации в самой системе не предусмотрено, это можно рассматривать и как достоинство, и как недостаток, в зависимости от проекта.

Таким образом, одного приложения Fossil достаточно для формирования полноценной системы для работы с проектом: хранилище, багтрекер, настраиваемый веб-сайт для просмотра репозитория с загрузкой текущих образов проекта, документацией, wiki-страницами с возможностью премодерации и т. д. В частности, и сайт fossil-scm.org и репозиторий проекта Fossil выполнены на нём самом.

Использование

Создание нового проекта выполняется командой init, инициализирующей пустой репозиторий:

 fossil init <имя файла репозитория>

Для работы с уже существующим проектом надо создать локальную копию репозитория командой clone:

 fossil clone <URL на существующий репозиторий> <имя файла репозитория>

Например, следующая строка создаёт клон репозитория проекта SQLite:

 fossil clone http://www.sqlite.org/src/ sqlite.fossil

Fossil поддерживает импорт и экспорт репозиториев GIT. Чтобы импортировать данные из существующего проекта на GIT можно выполнить такие команды:

 cd <каталог GIT>
 git fast-export --all | fossil import --git <имя файла репозитория>

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

  fossil open <имя файла репозитория> 

Конфигурирование локального репозитория выполняется через веб-браузер:

 fossil ui <имя файла репозитория>

Имя файла репозитория можно не указывать при выполнении команды изнутри дерева проекта. По умолчанию Fossil не требует логина, если соединение идет через интерфейс loopback (127.0.0.1).

Чтобы добавить новые файлы или удалить старые используются команды

 fossil add <имя файла>...
 fossil rm <имя файла>...

Для автоматической синхронизации файловой системы с репозиторием существует команда addremove. Она удаляет из репозитория отсутствующие локальные файлы и добавляет в репозиторий те, которых там ещё нет, но присутствуют в дереве проекта.

Для сохранения правок в репозитории (в том числе после команд add,rm,addremove) требуется выполнить команду commit.

 fossil commit

После ввода этой команды будет автоматически запущен стандартный текстовый редактор операционной системы для создания комментария фиксации правки. По умолчанию после команды commit выполняется команда push для отсылки изменений на удаленный репозиторий. Это поведение может быть изменено командой:

 fossil setting autosync off

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

 fossil push <URL на репозиторий>
 fossil pull <URL на репозиторий>
 fossil sync <URL на репозиторий>

Push отправляет данные на удаленный сервер, pull забирает последние изменения, sync выполняет push и pull.

После того как изменения от других разработчиков были вытянуты с сервера командой pull, следует вызвать команду update и применить правки к дереву файлов проекта командой update.

 fossil update VERSION 

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

Обмен изменениями с другими системами контроля версий

  • Импорт из SVN.
  • Импорт и экспорт из и в Git .

Свободный хостинг репозиториев Fossil

Свободный хостинг репозиториев Fossil осуществляется сайтом Chisel  (англ.), поддерживаемым Roy Keene. Также хостинг репозиториев Fossil предоставляется SourceForge

Книги

Примечания

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.