metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-07-16 09:53 am

На дворе шел 2012 год

Мейл-лист разработчиков некоей СУБД:
BTW, IMHO subversion is worse than CVS. I don't understand why you want to migrate at all.

[identity profile] blacklion.livejournal.com 2012-07-16 01:11 pm (UTC)(link)
Т.е., да, к CVS претензий и вопросов много. К svn поменьше, но тоже не без греха (всё же распределённые системы удобнее централизованных). Но они — системы контроля версий, пусть CVS и стрёмный, а hg/bzr/git — нет. Что-то другое. Удобное. Но с одой особенностью, которые делают их не системой поддержания истории проекта. Увы.

[identity profile] thinker8086.livejournal.com 2012-07-16 01:35 pm (UTC)(link)
>> Но с одой особенностью

Это которой?

[identity profile] blacklion.livejournal.com 2012-07-16 01:40 pm (UTC)(link)
rebase, который не прописывается в историю. Сама идея rebase/squash/whatever хороша и иногда полезна, но это деструктивная команда, никак не отмечаемая в репозитории — ВДРУГ удалили часть коммитов бесследно.
Это никак не соотносится с хранением истории проекта. Историю НЕЛЬЗЯ переписывать.

Ну и это ещё приводит к чудесным эффектам, когда такое делают у репозитория с которым кто-то уже синхронизировался. Что приводит к тому, что все “workflow” с использованием этих команд (тысячи их в интернете) неработоспособны когда одну и ту же фичу делают несколько человек или хотя бы один человек на нескольких рабочих местах (ноуте и рабочей станции или домашнем и рабочем компьютере). Но это уже побочные эффекты изначально кривого дизайна, заложенного в этих командах.

[identity profile] freiksenet.livejournal.com 2012-07-16 02:22 pm (UTC)(link)
reflog же.

И вообще ребейз индивидуальная команда - сделал фичу один, ребейзнул и тд. Если над бранчем работает несколько человек то юзается бекмердж основного бранча а не ребейз.

[identity profile] blacklion.livejournal.com 2012-07-16 02:25 pm (UTC)(link)
reflog же.
Хм. Читаю man — не вижу при чём он тут.

И вообще ребейз индивидуальная команда
Это не важно. Важна сама штатная техническая возможность переписывать историю, никак не ограниченная вообще. Там хоть ACL'и нормальные появились? Или нет?

[identity profile] blacklion.livejournal.com 2012-07-16 02:31 pm (UTC)(link)
Вот если бы git сам при pull/push пользовался рефлогом (и там не было бы команды "expire") это было бы хоть на что-то похоже. А сейчас — push, ребейз, push — и репозиторий кровь кишки распидорасило а от git ни слова.

Я сам сторонник разрешения стрелять себе в ногу — но не когда речь идёт об истории, которая принципиально не должна редактироваться.

[identity profile] freiksenet.livejournal.com 2012-07-16 02:39 pm (UTC)(link)
Ну гит не даст пушнуть если что-то распидорасит. Только через форс, а если ругатся на форс, то можно ругатся и на то что "rm -rf /" удалит вам все файлы в руте )

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

ЗЫ: Кстати в компании мы не пользуемся рибейзом вообще, только мердж. Когда есть центральный репозиторий (гитхаб) в который feature branches регулярно пушатся, рибейз не нужен.

[identity profile] blacklion.livejournal.com 2012-07-16 02:43 pm (UTC)(link)
Ну гит не даст пушнуть если что-то распидорасит.
Даст. Дабл-коммиты только так возникают если ребейзиться, пушить, снова ребейзхится и снова пушить. Что, подумав, не удивительно.

[identity profile] freiksenet.livejournal.com 2012-07-16 02:51 pm (UTC)(link)
Я может туплю, но как? После второго рибейза в репозитории куда пушим будет коммит посде предыдущего рибейза, куда он денется? Если он там будет то дерево в локальном репозитории 1 ahead 1 behind и fast-forward не пройдет.

[identity profile] blacklion.livejournal.com 2012-07-16 02:54 pm (UTC)(link)
После второго рибейза в репозитории куда пушим будет коммит посде предыдущего рибейза, куда он денется?
Да. А так как после второго рибейза того коммита уже нет, а есть новый (пусть и стем же сожержанием ПО СМЫСЛУ, но с другой чексуммой — т.е. идентификатором), то он снова проапушится и промёржится.

У меня без всяких форсов получилось на раз-два.

[identity profile] freiksenet.livejournal.com 2012-07-16 02:59 pm (UTC)(link)
Блядь, и правда. Правильно мы всегда мёрдж юзаем тогда %)

[identity profile] blacklion.livejournal.com 2012-07-16 03:00 pm (UTC)(link)
Воот! Я на это напоролся в первый же день — я использую свой сервер как точку встречи своих двух компов (итого на одного меня три репозитория — серверный и два на рабочих станциях, общение с апстримом через сервер) и, не подумав, сразу выбрал workflow с ребейзом. Потом уже подумал, хлопнул себя по лбу, и понял, что в такой схемек ребейз делать нельзя.

[identity profile] theiced.livejournal.com 2012-07-17 12:21 am (UTC)(link)
так делать низяяяяя.

Do not rebase commits that you have pushed to a public repository. (c)

а вообще торвальдс говноед ;]

[identity profile] http://users.livejournal.com/_slw/ 2012-07-16 04:17 pm (UTC)(link)
распределенный svn называется svk

[identity profile] zamotivator.livejournal.com 2012-07-17 09:43 am (UTC)(link)
в svn не работают нормально feature branches.
svn merge --reintegrate рассматривает обновления из trunk => feature_branch как локальные изменения бранча, и при merge --reitnergrate возникает хуева туча конфликтов.
Ну о чём тут можно говорить?

И да, в svn нету бранчей, есть только папки. Папки - это не бранчи, билять.

[identity profile] blacklion.livejournal.com 2012-07-17 09:59 am (UTC)(link)
svn merge reintegrate рассматривает обновления из trunk => feature_branch как локальные изменения бранча, и при merge reitnergrate возникает хуева туча конфликтов.
Не пользуйтесь реинтегрейтом. Хотя, кажется, это чинили. FreeBSD уже немало лет живёт с фича-бранчами на свне без проблем. Конфликтов ложных нет.

И да, в svn нету бранчей, есть только папки. Папки - это не бранчи, билять.
Сможешь объяснить — в чём разница? И то и то — дерево с историей и родителем (в историческом смысле родителем).

[identity profile] zamotivator.livejournal.com 2012-07-17 10:03 am (UTC)(link)
Они начиная с 1.4 это чинят. На дворе 1.7. Не работает до сих пор.
Как блять на протяжении трёх версий (шести, блять ЛЕТ!) можно не сделать, наконец, мета-информацию без багов?
Для меня это было основной причиной свалить на DVCS.

И да, feature branch - это 1) удобно 2) необходимое условие для нормально CI

Сможешь объяснить — в чём разница? И то и то — дерево с историей и родителем (в историческом смысле родителем).
Разницы быть не должно. А вот неработающий reintegrate как бэ говорит нам, что разница на уровне метаинформации VCS таки есть, и что с такой концепцией как "бранч == папки" будет лютейший головняк.

Особенно если файлы переименовывались в бранчах. Тогда svn вообще нахуй башню сносит.
Edited 2012-07-17 10:04 (UTC)