LINUX.ORG.RU

Fossil SCM 2.25

 , , , ,


1

3

6 ноября, после полугода разработки, состоялся выпуск 2.25 простой и высоконадёжной распределённой кроссплатформенной системы конфигурационного управления Fossil SCM, написанной на языке C и использующей базу данных SQLite в качестве хранилища.
Для расширения возможностей возможна компиляция со встроенной поддержкой TCL.

Кроме системы контроля версий, fossil-репозитории могут опционально содержать форум, Вики, багтрекер и чат – в единственном sqlite-файле!
И распространяемые на странице загрузки архивы содержат единственный исполняемый файл, с минимальными системными зависимостями.
Поддерживается возможность как полного, так и инкрементального (в уже существующий файл .fossil), импорта git- и subversion- репозиториев:

$ cd lorsource
$ git fast-export --all | fossil import --git lorsource.fossil

Встроенный http-сервер (на скриншоте – импортированный git-репозиторий lorsource, с заменой логотипа в администраторском web-UI):

$ fossil ui lorsource.fossil

Listening for HTTP requests on TCP port 8080

В новой версии:

  • Команда fossil ui / теперь работает даже для репозиториев с не-ASCII именами файлов.
  • Добавлена команда fossil tree для вывода структуры файлов репозитория подобно команде tree(1).
  • В файловых системах, не чувствительных к регистру, имена файлов теперь хранятся в предпочтительном регистре файловой системы, а не в регистре, введённом пользователем.
  • Название команды fossil cherry-pick изменено на fossil cherrypick, которое более привычно для пользователей Git. Старая команда оставлена для совместимости.
  • На страницу /timeline добавлены новые параметры запроса: d2=, p2= и dp2=.
  • Команде fossil tag добавлены опции для перечисления значений тегов.
  • Команде fossil status добавлена опция -b|–brief.
  • Добавлена возможность загрузки неверсионируемых файлов на странице /uvlist.
  • Добавлен поиск по истории на страницу /chat.
  • В команду server добавлена поддержка сокетов Unix.
  • В Windows используются корневые сертификаты, управляемые операционной системой (требуется OpenSSL 3.2.0 или выше).
  • При форматировании вывода временной шкалы в консоли учитываются символы Юникода с нулевой и двойной шириной.
  • Код SQLite в исходных кодах обновлён до версии 3.47.0. Официальная сборка слинкована с OpenSSL 3.4.0.
  • Проведено множество мелких исправлений и дополнений.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: dataman (всего исправлений: 5)

Вспомнил, что мне не понравилось в этой прекрасной штуке: какая-то довольно кривая работа с перемещением файлов. Например, в том же гите ты просто переместил из каталога в каталог, коммитнул и все. А тут вроде бы надо какие-то еще телодвижения производить… Ну либо я не так понял.

Zhbert ★★★★★
()
Ответ на: комментарий от DarkAmateur

Вот сижу, жду. Так как git использует все ядра для перепаковки и повесил мне систему. 🤬

Написано со смартфона.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от iron

Ну вот видите... И память не течет! :)

gns ★★★★★
()

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

gns ★★★★★
()
Ответ на: комментарий от Zhbert

Например, в том же гите ты просто переместил из каталога в каталог, коммитнул и все.

Как по мне, гораздо лучше явно зафиксировать операцию перемещения, а сидеть и гадать, порвётся история или нет. Просто перемещение нужно редко, а вот перемещение+рефакторинг может привести и приводит к чудесам.

DarkAmateur ★★★★
()
Последнее исправление: DarkAmateur (всего исправлений: 1)
Ответ на: комментарий от dataman

Вот сижу, жду. Так как git использует все ядра для перепаковки и повесил мне систему.

Я на ядре linux тестил. Репа с 3.5ГиБ ужалась до 2.7ГиБ, но приключение стоило суток времени.

DarkAmateur ★★★★
()
Ответ на: комментарий от gns

как оно в проде на большой кодовой базе, но выглядит симпатично.

В топике написано, как перегнать репу из git в fossil. Берёте репу ядра Linux и смотрите/тестируете.

DarkAmateur ★★★★
()
Последнее исправление: DarkAmateur (всего исправлений: 1)
Ответ на: комментарий от gns

Для персональных проектов, походу, самый то.

Использую более 10 лет, брат жив. Ему 42.5 и он виндузятник.

dataman ★★★★★
() автор топика
Ответ на: комментарий от DarkAmateur

со стороны популярных IDE

https://www.fossil-scm.org/home/doc/trunk/www/relatedwork.md

Editor Plugins
Emacs-Fossil: GNU Emacs VC backend for the Fossil version control system
VS Code: Integrated Fossil source control in Visual Studio Code
Qt Creator Plugin: Fossil SCM plugin for the Qt Creator IDE
Jetbrains IDE Plugin: Fossil SCM plugin for CLion, IntelliJ, GoLand, and more
NetBeans Plugin: NetBeans plugin module to use Fossil SCM

Ничем из этого не пользуюсь, поэтому не знаю, в каком они там состоянии.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Jetbrains IDE Plugin: Fossil SCM plugin for CLion, IntelliJ, GoLand, and more

Не обновляется с 2015го.

NetBeans Plugin: NetBeans plugin module to use Fossil SCM

Не обновляется с 2017го.

Emacs
VS Code

Не IDE.

DarkAmateur ★★★★
()
Ответ на: комментарий от DarkAmateur

Не обновляется
Не обновляется
Не IDE

Ну и ладно. :)

Но в Qt Creator поддержка Fossil есть «из коробки».

dataman ★★★★★
() автор топика

Занятная штука, есть в моём списке «когда-нибудь для чего-нибудь попробовать», но очень привык при создании нового проектика набирать git init.

PolarFox ★★★★★
()
Ответ на: комментарий от DarkAmateur

Ну, кстати, перемещение нужно, но редко. В основном, когда добавляется проект, который использует общие хидеры. А вот git rename нужно несколько чаще.

Что с переименованием? Помнится, в CVS это не работало от слова совсем, а в SVN как-то тоже не сразу появилось.

gns ★★★★★
()
Ответ на: комментарий от DarkAmateur

Не надо так делать! Fossil — «это другое» (с) :)

Отсюда — https://fossil-scm.org/home/doc/trunk/www/fossil-v-git.wiki

2.5 Linux vs. SQLite

Fossil and Git promote different development styles because each one was specifically designed to support the creator's main software development project: Linus Torvalds designed Git to support development of the Linux kernel, and D. Richard Hipp designed Fossil to support the development of SQLite. 
gns ★★★★★
()

Кроме системы контроля версий, fossil-репозитории могут опционально содержать форум, Вики, багтрекер и чат – в единственном sqlite-файле!

Имхо, стоило бы добавить, что и сам fossil — это один исполняемый файл (которому нужно всего несколько системных библиотек: libc, libm, libz, libcrypto, libssl и libresolv).

Это упрощает организацию fossil-репозитория на хостингах, которые не предоставляют fossil «из коробки». Например, можно организовать fossil-репозиторий на SourceForge.

debugger ★★★★★
()

Мне не понравилась реализация команды fossil gdiff. Там есть возможность указать свою гуёвую программу для сравнения файлов, но получается всё равно плохо: внешняя программа вызывается для каждого файла отдельно и сравнивает файл из репы с соответствующим файлом из рабочего каталога. Если посмотрел изменения в одном файле и перешёл следующему, то к предыдущему уже не вернёшся. Пришлось писать скрипт, который делает чекаут в новый «чистый» каталог, чтобы сравнивать «чистый» и рабочий каталоги, а не отдельные файлы.

debugger ★★★★★
()
Ответ на: комментарий от Zhbert

Вспомнил, что мне не понравилось в этой прекрасной штуке: какая-то довольно кривая работа с перемещением файлов. Например, в том же гите ты просто переместил из каталога в каталог, коммитнул и все. А тут вроде бы надо какие-то еще телодвижения производить…

Да вроде телодвижения обычные: fossil rename (или fossil mv`) и всё, дальше обычный коммит.

debugger ★★★★★
()
Ответ на: комментарий от gns

А на что больше workflow похож, на git или на SVN

Я в Винде SVN использовал только для получения чужих исходников. AkelPad, например. Так что не знаю.

Близко к Git, но проще, на мой взгляд.
В какой-то из версий в команду open добавили полезную опцию --setmtime для восстановления mtime файлов из репозитория.
Можно после работы записать fossil-файл на флешку и распаковать его дома с исходными mtime. Git так до сих пор не умеет, хотя в сторонних git-extras и есть скрипт git-utimes, сейчас достаточно быстрый после переписываний.

Ну и для базового использования хватит книги https://fossil-scm.org/fossil-book.

dataman ★★★★★
() автор топика
Ответ на: комментарий от dataman

Кто-то еще считает занимаемое место как бенчмарк?? Мне кажется, что за прошедшие годы эксплуатации реальные проблемы git (мы же с ним сравниваем как с дефолтным вариантом, так?):

  1. Как DVCS будет вести себя, если в нее поместить большие блобы/много блобов? У меня был случай, когда заказчик случайно залил в репозиторий видеофайлы по 1ГБ (т.к. в репозитории были ресурсы сайта и в основном эти были мелкие файлы) и после этого даже git status начал занимать по минуте.
  2. Как DVCS будет вести себя на огромных моно репозиториях в десятки миллионов LoC? У Git из-за его архитектуры с созданием объектов на коммиты есть проблемы: https://web.archive.org/web/20190103121909/https://www.hackerearth.com/practi... Facebook из-за этого дорабатывал Mercurial (git не справился), а Яндекс тоже присматривался к Mercurial, но решил написать свою систему.
X-Pilot ★★★★★
()
Ответ на: комментарий от X-Pilot

Кто-то еще считает занимаемое место как бенчмарк??

Не знаю никого, кто бенчмарки измеряет в *байтах.

проблемы git (мы же с ним сравниваем как с дефолтным вариантом, так?)

Ну лично мне не нужны зиллионы команд и опций git, они меня нервируют.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Ответ на: комментарий от iron

А почему бы их не писать на сишке, если авторы ей владеют и умеют грамотно применять?

Конечно, это может быть препятствием для желающих влиться в проект. Грубая аналогия из жизни: я бы, может, pandoc полирнул, идеи в своё время были. Но к сожалению, я полный дуб в Хаскеле, да и в ФП в целом.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

«Я б Хаскель бы выучил только за то, что на нем написали Pandoc» :)

gns ★★★★★
()
Ответ на: комментарий от theNamelessOne

Ну монстрик, да. Опыт показывает, что встроенной поддержки git хватает.

gns ★★★★★
()
Последнее исправление: gns (всего исправлений: 1)

А как она сервится в интернете? выглядит как будто каждый запрос через CGI проходит

fMad ★★★
()
Последнее исправление: fMad (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.