LINUX.ORG.RU

Pijul 0.3

 , , ,


5

3

Состоялся первый публичный релиз системы управления версиями Pijul 0.3, написанной на языке программирования Rust. Pijul объединяет в себе производительность git и простоту использования darcs. Основанная на модели теории патчей, система Pijul направлена на то, чтобы сделать операции слияния и забора определенных коммитов (cherry-pick) более интуитивным.

Pijul можно установить при помощи Cargo (пакетного менеджера для Rust): команда cargo install pijul соберёт самую последнюю версию. Минимальная для сборки версия Rust — 1.15.1.

Примеры использования:

$ mkdir my_project
$ cd my_project
$ pijul init # создание нового пустого репозитория
$ echo " [ ] save the world" > todo.md # редактируем файл
$ pijul add todo.md # добавить todo.md: pijul начнёт отслеживать
                    # изменения в этом файле
$ pijul record # равнозначно 'git commit -p'
added file /home/florent/code/pijul/pijul/pijul/tuto/todo.md
Shall I record this change? [ynkad] y
+  [ ] save the world
Shall I record this change? [ynkad] y
What is your name <and email address>? Jean Doe <jean@example.org>
What is the name of this patch? Lest I forget
Recorded patch AeNEKi1-S60Pe_Hy__lbsyyKIrnkFvDBC-AOG4uUf0KxRG6v2pqwv…

Пример создания клона и внесения изменений; на этот раз команда record используется с ключом -a для сохранения всех изменений в отслеживаемых файлах. pijul record -m <сообщение> добавляет сопутствующее сообщение без необходимости открывания редактора, --author позволяет указать авторство, только для этого случая.

$ cd ..
$ pijul clone my_project clone_of_my_project
$ cd clone_of_my_project
$ echo " [ ] save the world, starting with the koalas" > todo.md
$ pijul record -am "Think of the koalas" --author koala_lover@example.au
Recorded patch ATqiYHQE528y0irRT4Oh0HEGbsR9e8J-7VMqUljUvsmduIcBU1YGdN_Abg…

Возвращаемся в исходный репозиторий и мерждим изменения:

$ cd ../my_project
$ pijul pull ../clone_of_my_project
Hash: ATqiYHQE528y0irRT4Oh0HEGbsR9e8J-7VMqUljUvsmduIcBU1YGdN_AbgpWZ7eaj-1q3dOA2OU5YYA1t1DY_T8
Authors: ["koala_lover@example.au"]
Timestamp 2017-03-16 16:50:49.059851279 UTC
  * Think of the koalas
Shall I pull this patch? [ynkad] y
 
$ cat todo.md 
 [ ] save the world, starting with the koalas

Pijul — пока очень молодой проект: разработчики сами только начали его использовать для разработки самого проекта Pijul.

Проект назван в честь ани — вида южноамериканских птиц, которые часто живут группами по четыре-пять особей. Они защищают свою территорию вместе, откладывают яйца в одно общее гнездо. Все члены группы насиживают их и заботятся о молодняке, даже молодые помогают заботиться о птенцах.

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

★★★★★

Проверено: Shaman007 ()
Ответ на: комментарий от DELIRIUM

И что ещё за darcs, который упоминается?

darcs - DVCS, которая написана на Haskell. 'nuf said. [лично я видел только один проект, который использовал ее, да и то, потом разработчик просто перевел его на git...]

X-Pilot ★★★★★ ()
Ответ на: Кстати о птичках от d_a

Re: Кстати о птичках

И где там пичули ваши? Вообще нет такого слова. Я даже english нажал, и всё равно нету.

Кто-то что-то перепутал.

Вот тут есть https://en.wikipedia.org/wiki/Smooth-billed_ani

This species is called «el pijul» in Venezuelan folklore. It is mentioned in the popular Veracruz song «El Pijul».

anonymous ()
Ответ на: комментарий от littlechris

Кому? Если работе, то коллег всё устраивает - им насрать, лишь бы в gerrit без проблем всё прилетало. Если мне, то хрен редьки не слаще: опять простыня малоосмысленных комманд и документация объёмом с талмуд. Плюс где-то мельком видел как народ плакался на многоголовость репозитария и прочие концептуальные головняки.

То ли дело darcs - прочитал доку размером в пару экранов и всё, можно работать.

zabbal ()
Ответ на: комментарий от anonymous

Какая разница, на чем она написана?

религиозная. или какое там слово специальное для этого есть? культовая! хорошее слово культ. емкое.

anonymous ()
Ответ на: комментарий от quantum-troll

Так вот, создателям pijul'я удалось решить проблему с производительностью, из-за который системы контроля версий с моделью патчей было невозможно использовать

Хм, видимо, вот это вот и надо было в новости писать, а примеры как использовать и в документации посмотреть можно.

orm-i-auga ★★★★ ()
Ответ на: комментарий от littlechris

но средств предотвратить это git не имеет

Граждане, вы уже вторую страницу соревнуетесь в странных и, мягко говоря, ничем не обоснованных обвинениях в адрес разных VCS, в основном, в адрес git.

Может быть, вы таки пихуль этот пообсуждаете, вместо того, чтобы в апельсинах копаться?

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

"...но разве ж это жизнь!"

Такая вот специфическая жизнь паразита сознания.

ЗЫ «когда ты завидуешь, ты чернеешь»

А я думал, это моя душа проступает на лице. Так чему я завидую-то?

Может быть, вы таки пихуль этот пообсуждаете, вместо того, чтобы в апельсинах копаться?

Проблема в том, что о нем никто ничего еще не знает, а про DARCS все уже забыли.

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

а откуда это следует?

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

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

если реально надо обозначить независимость - так на это бранчи и придуманы.

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

Такая вот специфическая жизнь паразита сознания.

Хех, а ты формулировки подобрее и мягче выбирай, и отпадет желание их доформулировать.

А я думал, это моя душа проступает на лице. Так чему я завидую-то?

Да хрен бы знал, чему ты завидуешь, успешности, наверное. Или, может, не завидуешь, а просто желчь выплескиваешь, как в этом треде. В целом, мне-то поровну, но, чгря, поднадоело уже замусоривание пространства однообразными стонами.

Проблема в том, что о нем никто ничего еще не знает, а про DARCS все уже забыли.

Но поговорить-то охота?

В общем, прошу прощения, что подключился. Но когда на три страницы пара-тройка содержательных комментариев — это перебор даже для ЛОРа.

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

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

qnikst ★★★★★ ()

Скиньте, пожалуйста, ссылок на нормальное описание теории патчей.

Открываю, например, викибук: https://en.wikibooks.org/wiki/Understanding_Darcs/Patch_theory

Там очевидная и малополезная ерунда. Ну разве что один результат простой есть: как выразить мердж через коммутацию патчей. И чо, это вся теория? Сильно вряд ли.

nezamudich ()
Ответ на: комментарий от X-Pilot

можно зайти на dacrs-hub.net и посмотреть еще, но популярных там не будет. в общем-то причины понятны, т.к. в момент создания darcs были как проблемы с реализацией, так и с эффективными решениями в «stdlib». Ну и для проектов которые хотят быть популярными git/hg все же более логичный выбор, т.к. больше людей с ними знакомы.

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

https://www.cambridge.org/core/journals/journal-of-functional-programming/art...

Это всё не очень интересно, вот типичная цитата оттуда:

First, we define a very simple language of patches, to illustrate the basic technique: we take the repository to be a single integer, and the patches to be adding or subtracting some number n from it.

Эта статья о том, как встроить абстрактную теорию патчей в гомотопическую теорию типов. Мне же интересно было бы увидеть внятное описание какой-то конкретной реализации этой теории. Вот есть например такой документ от автора Darcs: http://www.cs.tufts.edu/comp/150GIT/archive/david-roundy/theory-patches-2009.pdf Проблема в том, что если проводить аналогию с квантовой механикой, то патч как оператор всегда изначально определён на одном векторе состояния (то есть берётся куча исходников, редактируется, разница между этими кучами (исходной и отредактированной) и есть патч -- бессмысленно обсуждать абстрактный патч без изначальной кучи исходников — он не имеет смысла). Дальше можно попытаться продолжить патч на более обширную область определения, конструкция этого продолжения не единственна и от неё зависит, в частности, можно ли определить произведение двух патчей P1 и P2 (может оказаться, что при одном продолжении это будет возможно, при другом — нет). Вот обсуждение этих вопросов (почему, например, какое-то продолжение более естественно для практической работы) и хотелось бы увидеть, но, видимо, это всё скрыто в исходниках darcs (и теперь pijul — у них на caйте один рекламный буллшит).

anonymous ()
Ответ на: комментарий от dotcoder

По ссылке ареал обитания пернатых включает в себя и территорию Аргентины, где говорят на испанском. По-испански «j» может читаться как «х», про «ч» напутал. А на португальском это будет «ж» и «пижуль» соответственно. Вот я и поинтересовался.

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

Проект назван в честь бороздчтатоклювого ани

В то время как на их сайте ни одной фотки птицы - только листья папоротника

Это не папоротник, а другая трава. Запрещенная в большинстве стран.

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

работу надо работать, а не коммитить по одной строке для имитации деятельности

Строка строке рознь. Если эта строка исправляет серьёзную ошибку в проекте, то оформить её отдельным коммитом не только можно, но и нужно.

если что-то потерялось, то это обычно сразу становится понятно

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

anonymous ()
Ответ на: комментарий от vzzo

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

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

Гит вообще вызывающе неюниксвеен. В svn можно было сделать срез исходников командой svn export и уже при необходимости его распаковать. В гите же, наоборот, если нужен распакованный вариант, приходится делать git archive, а потом распаковывать результат. Да, и то и другое можно сделать конвейером, но во втором случае байты гоняются почём зря. А если мне нужен архив, но не того формата, который git поддерживает? Тройное преобразование?

Далее, если мне в svn нужен был аккуратненький список изменившихся файлов, я писал svn diff | grep Index: - и вуаля. Попробуйте сделать то же самое в гите. Список можно продолжать.

Поэтому если появится VCS, по возможностям сравнимая с git, а по удобству и терминологии - с svn, я с удовольствием на неё перейду. Может, сабж дорастёт до такого уровня?

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

Поэтому если появится VCS, по возможностям сравнимая с git, а по удобству и терминологии - с svn, я с удовольствием на неё перейду. Может, сабж дорастёт до такого уровня?

Что мешает сделать git alias (или *sh alias) и заменить портянку гит команд одной, которая тебе удобна?

Есть ещё gitless для тех, кто не осилил алиас.

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

Упражняйтесь в остроумии хоть до посинения (вам не помешает), но по ссылке потратили где-то неделю на восстановление убитых репозиториев. И это ещё гитхуб им помогал.

А тем временем mercurial не даёт неявно переписать пошаренную историю с 2012. Это божья роса, конечно.

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

Поэтому если появится VCS, по возможностям сравнимая с git, а по удобству и терминологии - с svn

Не появится. Даже SVK, построенный поверх SVN, заметно отличался. Так что переходи на hg - у него по крайней мере UI вменяемый.

Может, сабж дорастёт до такого уровня?

У сабжа никогда не будет терминологии SVN.

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

В git есть множество способов отстрелить себе ногу потому что это гибкий инструмент, и сравнивать это с очевидной не-гибкостью hg глупо и некорректно.

Нормальный пользователь git не строит свой воркфлоу вокруг флага --force, потому что такой воркфлоу не использует git по назначению. С тем же успехом можно использовать rsync или rm -f.

Бэкапы в DVCS очень чиповые, и при их наличии абсолютно любая деструктивная команда становится безопасной и откатываемой.

но по ссылке потратили где-то неделю на восстановление убитых репозиториев. И это ещё гитхуб им помогал.

Этот коллосальный факап возможно было восстановить без применения бэкапов, потому что ремоуты хранят «мусор» в течении 30 дней, и старые рефы никуда магически не исчезают. А Github им помогал потому что только Github имеет доступ к reflog на ремоуте, и неделю это заняло исключительно изза бюрократии.

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

В git есть множество способов отстрелить себе ногу потому что это гибкий инструмент, и сравнивать это с очевидной не-гибкостью hg глупо и некорректно.

Расскажи, что именно тебе в hg негибко.

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

Расскажи, что именно тебе в hg негибко.

В hg многие вещи делаются только через экстеншны, когда как в git все ограничено воображением и последовательностью низкоуровневых команд.

stylemistake ()