Fossil
Fossil | |||
---|---|---|---|
![]() | |||
Тип | распределённая система управления версиями[вд], ПО для контроля версий, протокол передачи данных, система отслеживания ошибок, репозиторий[вд], forge[вд], веб-интерфейс репозитория[вд] и вики-движок | ||
Разработчики | Ричард Хипп[вд] и FLOSS contributor[вд][3] | ||
Написана на | Си[4] и SQL[5] | ||
Операционная система | кроссплатформенность | ||
Первый выпуск | 2006 | ||
Последняя версия | |||
Репозиторий | fossil-scm.org/home fossil-scm.org/home/time… | ||
| |||
| |||
Лицензия | 2-пунктная лицензия BSD[вд][6][7] | ||
Сайт | fossil-scm.org (англ.) | ||
![]() |
Fossil — распределённая система управления версиями, которую разрабатывает Ричард Хипп. Ричард Хипп также является основным разработчиком СУБД SQLite, которую Fossil использует в качестве хранилища всей информации.
Дизайн
Вся функциональность реализована в одном исполняемом файле (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 [1].
Свободный хостинг репозиториев Fossil
Свободный хостинг репозиториев Fossil осуществляется сайтом Chisel (англ.), поддерживаемым Roy Keene. Также хостинг репозиториев Fossil предоставляется SourceForge [2]
Книги
- Jim Schimpf «Fossil Version Control — A Users Guide (англ.) (2nd Edition)», 2013
Примечания
- ↑ https://fossil-scm.org/home/doc/trunk/www/changes.wiki#v2_24
- ↑ Fossil: Change Log
- ↑ https://www.fossil-scm.org/home/reports?udc=1&type=ci&view=byuser
- ↑ 2.0 Programming Language // Adding Features To Fossil
- ↑ Thoughts On The Design Of The Fossil DVCS
- ↑ https://fossil-scm.org/home/finfo?name=COPYRIGHT-BSD2.txt
- ↑ https://www.fossil-scm.org/fossil/doc/tip/COPYRIGHT-BSD2.txt
Ссылки
- fossil-scm.org — официальный сайт Fossil (англ.)
- Официальный сайт СУБД SQLite (англ.)
- Страница Ричарда Хиппа
- Chisel — свободный хостинг репозиториев Fossil
- Хостинг репозиториев Fossil на SourceForge
- Fuel-scm — кроссплатформенный GUI-фронтэнд для Fossil (27.03.2014 проект мигрировал на fuelscm.org)
- Jurassic — GUI-фронтэнд для Fossil
- Fossil — контроль версий, баг-трекер и вики «в одном флаконе»