Fossil

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Fossil (программное обеспечение)
Fossil SCM logo.svg
Тип

распределённая система управления версиями

Разработчик

Ричард Хипп

Написана на

C

Операционная система

Кроссплатформенное программное обеспечение

Последняя версия

1.32[1] (14 марта 2015)

Лицензия

BSD[2]

Сайт

fossil-scm.org

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

Дизайн[править | править вики-текст]

Вся функциональность реализована в одном исполняемом файле (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) правки автоматически отправляются обратно на сервер с которого было клонировано хранилище или последний раз синхронизировалось. Точно так же при обновлении (update) локальных файлов Fossil сперва забирает последние изменения с сервера (pull) в локальное хранилище, а затем уже обновляет файлы пользователя. Автосинхронизация включена по умолчанию: по мнению авторов совместная разработка в этом режиме проходит более гладко за счёт ухода от бессмысленных разветвлений/слияний и удержания разработчиков в одной и той же версии кода вместо собственных несовместимых веток.

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

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

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

Веб-сервер Fossil`a дает возможность отображать документацию проекта - система будет показывать в браузере файлы из соответствующей директории проекта с учетом версии правки. 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 может быть именем ветки, тэга, аббревиатурой идентификатора (артефакта) конкретной правки или временной меткой. Если версия не указывается, применяются последние изменения.

Обмен изменениями с другими системами контроля версий[править | править вики-текст]

  • Импорт из CVS.
  • Импорт и экспорт из и в Git [1].

Свободный хостинг репозиториев Fossil[править | править вики-текст]

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

Книги[править | править вики-текст]

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]

См. также[править | править вики-текст]

Veracity (software)