fossil
Непопулярная, но очень занятная система управления версиями.
Пробовала применять в домашней жизни, единственное, что печалило - неинтересно без «напарника» так работать.
- https://habrahabr.ru/search/?q=%5Bfossil%5D&target_type=posts
- если нет пакетом в родной системе, то можно ставить отсюда: https://fossil-scm.org/home/uv/download.html
Сконвертить гитовый реп в фоссильный (назовём его book).
git fast-export --all | fossil import --git eleventysite.fossil
Anonymous Cloning:
fossil clone https://chiselapp.com/user/ladykosha/repository/book book.fossil fossil open book.fossil
Authenticated Cloning (я - ladykosha, здесь имеет значение, то, что перед @, второе - про то, что мой репозиторий):
fossil clone https://ladykosha@chiselapp.com/user/ladykosha/repository/book book.fossil fossil open book.fossil
Встроенный в fossil пользовательский интерфейс - практически всё, что нужно для маленького проекта.
После fossil new
и fossil open
, the only real interaction with a repository for a personal project is the occasional fossil changed
and fossil extra
to make sure I didn't change anything I didn't intend to change, and naturally fossil ci
to check in those changes.
For browsing the repository fossil ui
does everything I need. It is hard to beat the Timeline view, from which you can get to the files changed by that check in. There is also the Files view, from which you can see each file and inspect that file's timeline.
- http://www.fossil-scm.org/schimpf-book/dir?ci=tip
- https://fossil-scm.org/fossil-book/uv/FossilBook.html
- http://fossilrepos.sourceforge.net/
- https://fuel-scm.org/fossil/wiki?name=Downloads - графический клиент для fossil.
- https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki
- https://fossil-scm.org/home/doc/trunk/www/aboutcgi.wiki cgi-шное для типа-cgi-скрипта, показывающего фоссильный репозиторий или несколько.
- https://fossil-scm.org/home/doc/trunk/www/serverext.wiki – дополнительные штуки
- myrepos знает fossil, регистрирует, но потом надо рассказывать, что хочешь, чтоб делало по командам.
- https://fossil-scm.org/home/doc/tip/www/hooks.md, https://www.fossil-scm.org/home/help?cmd=hook – йеее, оно умеет хуки, можно пробовать и прикручивать vale в before-commit, и автосборку сайта – в after-receive.
- https://fossil-scm.org/home/doc/trunk/www/embeddeddoc.wiki – прям клевая тема про встроенные доки, в том числе позволяет удобно смотреть html-ки.
- https://schollz.github.io/fossil/ – про fossil для go, но пока не вникла.
- fredshack.com/docs/fossil.html – использует в виндах.
Команды
- fossil new - создать репозиторий
- fossil open - открыть его (скопировать файлы из репозитория в актуальный каталог)
- fossil status - что скажет фоссил о состоянии? Например, какие файлы были изменены, но не закоммичены. Какие были удалены. Какие добавлены. Более узкий вариант fossil changes - что было изменено в отслеживаемом.
- fossil extra - какие файлы не отслеживаются в папке репозитория?
- fossil add - добавить файлы в отслеживаемые. fossil add . - все. fossil add filename - отслеживать filename. fossil addremove - добавит все файлы, которые есть, удалит все, которых нет.
- fossil commit -m "Сообщение" - сохранить актуальное состояние отслеживаемых файлов, причём в timeline оно будет видно с комментарием «Сообщение». Обязательно делать fossil commit и fossil sync (или push) при завершении конкретного захода. Сохранить сделанное, отправить на сервер.
- fossil ui -port 8081 - запустит веб-интерфейс на указанном порту. Если порт не указывать, будет на 8080, или на том свободном, который найдёт.
- fossil clone url filename - копирует репозиторий с указанного адреса в файл, который дальше можно использовать, как свой репозиторий, можно синхронизировать с удалённым.
- fossil update - перед началом работы. Синхронизирует изменения, выдаёт самую актуальную версию всего. fossil update trunk filename - обновить из ветки с названием trunk конкретно файл filename
- fossil merge a91582b699 (хеш коммита) - слить ветки.
- fossil revert filename - вернуть файл к состоянию, в котором он хранится в репозитории.
О настройках
Чем заменить .gitignore
https://www.fossil-scm.org/home/doc/trunk/www/settings.wiki "Versionable" settings
Most of the settings control the behaviour of fossil on your local machine, largely acting to reflect your preference on how you want to use Fossil, how you communicate with the server, or options for hosting a repository on the web. However, for historical reasons, some settings affect how you work with versioned files. These are clean-glob, binary-glob, crlf-glob (and its alias crnl-glob), empty-dirs, encoding-glob, ignore-glob, keep-glob, manifest, and mimetypes. The most important is ignore-glob which specifies which files should be ignored when looking for unmanaged files with the extras command.
Because these options can change over time, and the inconvenience of replicating changes, these settings are "versionable". As well as being able to be set using the settings command or the web interface, you can create versioned files in the .fossil-settings subdirectory of the check-out root, named with the setting name. The contents of the file is the value of the setting, and these files are checked in, committed, merged, and so on, as with any other file.
Where a setting is a list of values, such as ignore-glob, you can use a newline as a separator as well as a comma.
For example, to set the list of ignored files, create a .fossil-settings/ignore-glob file where each line contains a glob for ignored files.
If you set the value of a setting using the settings command as well as a versioned file, the versioned setting will take precedence. A warning will be displayed.
Вывод из этого всего: берем .gitignore
, переносим в .fossil-settings/ignore-glob
, живем щастливо :)
Но учесть:
- "An optional prefix "!" which negates the pattern…": not in Fossil.
- Git's globs are relative to the location of the .gitignore file: Fossil's globs are relative to the root of the workspace.
- Git's globs and Fossil's globs treat directory separators differently. Git includes a notation for zero or more directories that is not needed in Fossil