Re[2]: Git пивом облит?
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 09.09.14 13:42
Оценка: 2 (2) +1 :)))
Здравствуйте, Anton Batenev, Вы писали:

AB>Если коротко, то все аргументы можно свести к слову "удобно" — один из немногих примеров, когда фраза "ПО написанное разработчиком для разработчиков" не несет в себе негативного оттенка.


"Удобно" и "разработчиком для разработчиков" -- это про Mercurial. А про Git вот:

if ping was designed by the git people: net-ping host --no=dns,bind --proto=TCP,rfc:492 eth0@ipv4::http://1.0.0.127.IN -ADDR.ARPA --stats -v

HgLab: Mercurial Server and Repository Management for Windows
Re: Git пивом облит?
От: Vain Россия google.ru
Дата: 07.09.14 11:44
Оценка: +1 -1
Здравствуйте, Passer, Вы писали:

P>Я лично увидел несколько отличий от SVN которые по моему мнению не в лучшую сторону.

P>Может дело во мне и много лет проведенных с svn не дают мне понять преимущества Гита? Или просто другим разработчикам гит лучше рекламируют?
СВН хорош в основном для маленьких локальных команд, когда люди находятся в одном месте и работают в одно время. Либо работают в разное время, но все их изменения не пересекаются во времени с другими командами, т.е. частота (рейт) коллизий по мержам минимальна.

Когда команд становится больше и их работа раскидана во времени, начинают всё больше и больше появляться коллизии при мержах, всё сложнее становиться создавать подветки, т.к. в свн'е обычно выдаёт права конкретный человек из группы, которого просто может не быть на месте в момент необходимости выдачи прав, а сделать изменение надо прямо здесь и сейчас. К тому же создание подветки в свн'е это отдельная административная процедура, которой свойственны все проблемы администрирования (сделаем потом/не надо так делать потому-что вот вася бы сделал по-другому/в нашем транке разрешено делать ветки только нам/и т.д.). В гите, как я понимаю, создание подветок выведено из поля административного функционала, где решение принимают третьи лица не относящиеся к команде но владеющие репозиторием, и возложена на саму команду.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: Git пивом облит?
От: uncommon Ниоткуда  
Дата: 14.09.14 18:27
Оценка: +2
Здравствуйте, Passer, Вы писали:

P>Поделитесь своим мнением.


В Git-е можно переписывать историю коммитов. Обычно, когда пишешь код, коммитишь всё подряд: законченное и не очень, какая-то идея пришла в голову — тяп-ляп-коммит. Твой бранч, пока не сделал пуш никто ничего не видит, и делаешь как тебе удобно. В SVN я бы уже таким образом 100500 раз билд поломал, и меня бы пришли бить больно. Но когда работа закончена, у меня в Git-е получается много маленьких коммитов, которые я теперь могу привести в порядок с помощью `git rebase`. Это и есть переписывание истории. Это настолько удобно, что я даже SVN репы сначала конвертирую в Git, работаю с ними в Git-е, а потом коммичу в SVN с помощью `git svn dcommit`.

В общем, Git надо попробовать самому. Его удобство познаётся на практике.
Re[14]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 17:44
Оценка: -2
Здравствуйте, ., Вы писали:

В git делай что душе угодно, в каком хочешь порядке.


Моей душе было угодно выполнить эти хитрые команды. Я уж и незнаю, что больше сказать.
Re[5]: Git пивом облит?
От: . Великобритания  
Дата: 15.09.14 13:51
Оценка: 18 (1)
Здравствуйте, Sergey J. A., Вы писали:

SJA>>>rebase в SVN-е, это да — геморой, но опять же возможно. Я занимался таким несколько раз...

C>>В том числе что бы оформить коммиты к ушедшему вперёд по коммитам svn.
SJA>Это думаю можно не учитывать. Каждый SVN пользователь постоянно пользуется таким rebase при каждом апдейте. Только его бранч состоит из одного незакомиченного "комита". Этот "комит" ребейзится на пришедшую ревизию.
Ага, и если что-то пошло не так, то можно вешаться. Наученные опытом SVN-щики обычно вручную бекапят ценные изменения перед апдейтом. Git же по дефолту не допускает необратимых операций, если что-то не так, можно вернуться к предыдущему состоянию (stash или reflog) и повторить позже.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Git пивом облит?
От: okman Беларусь https://searchinform.ru/
Дата: 07.09.14 11:12
Оценка: 1 (1)
Здравствуйте, Passer, Вы писали:

P>Я лично увидел несколько отличий от SVN которые по моему мнению не в лучшую сторону.


Например ?

P>Может дело во мне и много лет проведенных с svn не дают мне понять преимущества Гита? Или просто другим разработчикам гит лучше рекламируют?

P>Поделитесь своим мнением.

Лично для меня Git, как Mercurial или другая DSVC, удобен в первую очередь тем,
что можно иметь свою приватную копию репозитория и работать в ней, никому не
мешая и ни от кого не завися. Можно коммитить изменения в отсутствие доступа к
основному репозиторию, можно обмениваться изменениями с коллегой, да и вообще в
Git полее продуманная, а потому более удачная модель ветвления.

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

При этом самих команд в Git явно больше, чем в Subversion, и среди них есть много
очень полезных. Первое, что пришло в голову: разбивка одного большого коммита на
несколько более мелких.

Из недостатков я бы отметил несколько более высокий порог вхождения в Git.
Ну еще под Windows у него не настолько богатая инструментальная поддержка, как у
Subversion, но это со временем выправляется.
Re: Git пивом облит?
От: btn1  
Дата: 07.09.14 14:17
Оценка: :)
Здравствуйте, Passer, Вы писали:

P>Вспомнил что среди знакомых программистов только я остался пользоваться SVN все давно уже перешли на Git.


Надеюсь, ООП-то вы уже освоили? А то вдруг вы один на "процедурах" остались....

P> Почему все переходят?


Потому что это новый, более удобный подход к задаче управления версиями. Настолько удобный, что УБЕЖДАТЬ никого даже не понадобилось — все как один, кто через Hg, кто через Git, приходят в мир DVCS.

P>Я лично увидел несколько отличий от SVN которые по моему мнению не в лучшую сторону.


Ну... и...? Раз уж сказал, напиши какие!

P>Может дело во мне и много лет проведенных с svn не дают мне понять преимущества Гита?


Просто вопрос привычки. Фактически, до момента push'а, работа с DVCS — тот же самый svn! А когда над проектом собирается больше одного человека, преимущества DVCS встают в полный рост. То есть DVCS — это уже не просто "версия 1.1, версия 1.2", а _командный_ инструмент для совместной работы. Не считаю даже нужным обмусоливать преимущества — их надо СРОЧНО начинать учить, если не хотите остаться на обочине.
Re[2]: Git пивом облит?
От: Passer  
Дата: 08.09.14 09:00
Оценка: :)
Здравствуйте, btn1, Вы писали:

Спасибо всем за ответы. И за очень интересные мнения!!

P>>Вспомнил что среди знакомых программистов только я остался пользоваться SVN все давно уже перешли на Git.


B>Надеюсь, ООП-то вы уже освоили? А то вдруг вы один на "процедурах" остались....


вот как раз после гит-а за него возьмусь. говорят интересная вещь))



P>>Я лично увидел несколько отличий от SVN которые по моему мнению не в лучшую сторону.


B>Ну... и...? Раз уж сказал, напиши какие!


Недостатки мелкие. Ничего серьезного.

Слишком слишком слишком водянистые документации. Каждую главу буквально можно сжать в абзац. никого не смущает что по системе контроля версии есть целая книга)))) теперь я хочу связать git с maven. Сколько же придется копать что бы найти как это сделать и какие это даст преимущества))

Явный недостаток это плохая поддержка гуи.

И вот этот "git add" который еще сопровождается словами "ничего лишнего вы не зальете на сервер". У меня в папке проекта не хранится ничего лишнего(если она попала в папку проекта значит это имеет отношение к нему). Все .class файлы и остальное что не надо добавлять в репозитоий я ввожу в игнор. а с другой стороны в таком решении(как у git) всегда есть шанс что в списке "git status" в числе остальных можно не заметить и не добавить важный файл.

В черепашках svn удобно и наглядно можно посмотреть состояние проекта. Открыл в проводнике и видишь на папках галочки, значит закоммичино. Если нет, открыл папку и увидел что не закоммичено.

А еще плюсы распределенной системы мне не до конца ясны. Судя по документации при словах "это дистрибутивная система" и "если на сервере полетит винт у вас ничего не потеряется" разработчики с визгом должны побежать качать этот продукт(ибо других плюсов не сочли нужным написать).
А мне не совсем ясны его плюсы. И очевидный минус это размер, особенно если учесть что при изменениях хранится весь файл(сколько же это будет весить).

Плюсы скорости очевидны но настолько ли они важны? Это не то же самое что и поставить горячую кнопку на установку плагина в идее? или тоже самое?))

Плюс ощущение что каждый раз придется делать этот дифф, статус и все такое что бы случайно что то не упустить. Я не хочу работать специалистом по гит-у)) Мое дело писать код. А версионизация должна быть настолько простой и удобной что бы если нет конфликтов я о ней вообще не задумывался.
Отредактировано 08.09.2014 9:46 Passer . Предыдущая версия . Еще …
Отредактировано 08.09.2014 9:29 Passer . Предыдущая версия .
Отредактировано 08.09.2014 9:06 Passer . Предыдущая версия .
Отредактировано 08.09.2014 9:04 Passer . Предыдущая версия .
Re[2]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 15.09.14 07:37
Оценка: +1
Здравствуйте, uncommon, Вы писали:

U>В Git-е можно переписывать историю коммитов. Обычно, когда пишешь код, коммитишь всё подряд: законченное и не очень, какая-то идея пришла в голову — тяп-ляп-коммит. Твой бранч, пока не сделал пуш никто ничего не видит, и делаешь как тебе удобно. В SVN я бы уже таким образом 100500 раз билд поломал, и меня бы пришли бить больно. Но когда работа закончена, у меня в Git-е получается много маленьких коммитов, которые я теперь могу привести в порядок с помощью `git rebase`. Это и есть переписывание истории. Это настолько удобно, что я даже SVN репы сначала конвертирую в Git, работаю с ними в Git-е, а потом коммичу в SVN с помощью `git svn dcommit`.


Справедливости ради стоит отметить, что SVN позволяет иметь приватные (но не локальные) комиты. Когда мне нужно что-то сломать — я делаю это в отдельном (персональном) бранче и вливаю в транк только после стабилизации.

rebase в SVN-е, это да — геморой, но опять же возможно. Я занимался таким несколько раз...
Re[10]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 16.09.14 12:50
Оценка: :)
.>>>Вооот. Это основное отличие — в svn навязывается некий алгоритм использования. Если ему не следуешь — будут проблемы.
SJA>>SVN вообще как C++ — куча способов выстрелить себе в ногу. Да, нужно следовать более жёстким правилам.
.>У С++ есть хотя бы какие-то технические преимущества, об SVN такого не скажешь.

Они есть.

Возможность отобрать права на чтение на куски репозитория. Используем для контрактеров.
Sparse checkout — многие пользуются что бы держать проект на SSD. Иначе не помещается.
Лучшая обработка часто, но незначительно изменяющихся бинарников. Не пользуемся.


.>Конечно можно. "git reflog" живёт месяц, афаир.

Проверил. Да, очевидно gc не собирает свежие объекты.

.>Чтобы удалить всё — нужно очень хорошо постараться, написав несколько команд с кучей ключей, о которых, я уверен, ты и не слышал, и вряд ли ты сможешь запомнить, я гуглю/читаю ман каждый раз. Случайно такое не сделаешь, проще написать "rm -rf .".

.>Сравни с "svn up", который может покорёжить твои изменения, так что восстановить — проблема.

Ок. 'rm -rf' (он же сдохший веник) в SVN удалит только последний кусок работы. У меня это пол дня максимум.
У меня нет статистики, сколько кто копит в гите локальных коммитов. Но судя по всему побольше.


SJA>>Ну я неявно имел в виду, что если увидел при апдейте страшные конфликты — тогда можно и прихраниться.

.>Снова то же. А если не прихранился (забыл, поленился) — svn опять умывает руки.
Да именно так. Просто надо быть аккуратнее.

SJA>>Но да — проблема есть, хотя я и ни разу в неё не вступал. Надеюсь разработчики svn-а прикрутят checkpoint-ы ещё при моей жизни...

.>Мне кажется, что скорее разработчики svn перейдут на git.
Ну, пока не перешли.
Re[10]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 16.09.14 13:08
Оценка: :)
SJA>>Что хочешь? Хм...
.>Угу.

SJA>>git reset --hard origin/master

SJA>>git gc
SJA>>Так можно? (Не уверен насчёт синтаксиса, надеюсь идея понятна)
.>Конечно можно. "git reflog" живёт месяц, афаир.

А, ну нашёл.

git reset --hard origin/master
git reflog expire --expire-unreachable=now --all
git gc --prune=now

всё исключительно средствами гита.
Git пивом облит?
От: Passer  
Дата: 07.09.14 10:03
Оценка:
Здравствуйте.

Решил пересмотреть используемые тулы и дополнительные аспекты управления проектами.

Вспомнил что среди знакомых программистов только я остался пользоваться SVN все давно уже перешли на Git. Почитал кучу документаций(должен сказать очень водянистые доки) но так и не нашел ответа на вопрос зачем переходить на него. Почему все переходят?

Я лично увидел несколько отличий от SVN которые по моему мнению не в лучшую сторону.


Может дело во мне и много лет проведенных с svn не дают мне понять преимущества Гита? Или просто другим разработчикам гит лучше рекламируют?

Поделитесь своим мнением.
Re: Git пивом облит?
От: Anton Batenev Россия https://github.com/abbat
Дата: 07.09.14 10:49
Оценка:
Здравствуйте, Passer, Вы писали:

P> Почему все переходят?


Если коротко, то все аргументы можно свести к слову "удобно" — один из немногих примеров, когда фраза "ПО написанное разработчиком для разработчиков" не несет в себе негативного оттенка.
avalon/1.0.435
Re: Git пивом облит?
От: vsb Казахстан  
Дата: 07.09.14 11:09
Оценка:
Здравствуйте, Passer, Вы писали:

P>Здравствуйте.


P>Решил пересмотреть используемые тулы и дополнительные аспекты управления проектами.


P>Вспомнил что среди знакомых программистов только я остался пользоваться SVN все давно уже перешли на Git. Почитал кучу документаций(должен сказать очень водянистые доки) но так и не нашел ответа на вопрос зачем переходить на него. Почему все переходят?


P>Я лично увидел несколько отличий от SVN которые по моему мнению не в лучшую сторону.



P>Может дело во мне и много лет проведенных с svn не дают мне понять преимущества Гита? Или просто другим разработчикам гит лучше рекламируют?


P>Поделитесь своим мнением.


1 — быстрые "оффлайн" коммиты. В случае с svn это в любом случае долгий процесс но помимо прочего он ещё и требует обязательного подключения к серверу. Это не всегда удобно. То же с чекаутами и прочими командами. Пожалуй это самое большое удобство. Набрал команду и она моментально отработала.

2 — в целом всё работает очень реактивно. От svn-а воспоминания как от довольно тормозной программы. Для жизни хватает скорости, конечно, но в целом хочется лучшего.

3 — потенциально распределенная модель предлагает больше вариантов работы. Я, правда, не сталкивался с вариантами, отличными от центрального сервера + копия репозитория у каждого разработчика, но в целом, если будет необходимость, можно делать разные интересные вариации.
Отредактировано 07.09.2014 11:10 vsb . Предыдущая версия .
Re: Git пивом облит?
От: keenn  
Дата: 07.09.14 12:15
Оценка:
P>Поделитесь своим мнением.

В дополнение ко всему сказанному просто добавлю, что git банально намного гибче и "легче" что-ли, что позволяет его использовать во многих ситуациях, где использование svn было бы затруднено.

Например, у меня была такая цепочка, как-то, сколоченная на скорую руку, когда нужно было работать на нескольких машинах, а возможности использовать интернет не было — репозиторий на машине, репозиторий на флешке, репозиторий на другой машине (такая цепочка origin-ов). Причем я мог работать независимо на двух машинах, в одном и том же коде, потом по флешке синхронизировать их и мерджить без проблем. Все это настраивается в три щелчка. В случае с svn тут были бы проблемы.

И таких кейсов (которые, скорее всего, будут гораздо изящнее, чем мой), думаю, большое количество. В общем, попробуйте гит, того стоит.
Re: Git пивом облит?
От: bnk СССР http://unmanagedvisio.com/
Дата: 07.09.14 14:05
Оценка:
Здравствуйте, Passer, Вы писали:

P>Поделитесь своим мнением.


+ Быстрый.
+ Можно делать любые изменения в своей копии и коммитить их локально, не мешая другим. Также можно локально откатиться на нужную версию например, просмотреть историю изменений, сделать блейм, ну и т.д. — все это будет быстро, поскольку копия весь репозиотрий хранится локально (со всеми версиями). Позволяет организовывать коммиты в общий репозиторий более осмысленно.
+ Существование развитых онлайн сервисов на git (типа github/bitbucket/etc) где можно совместно работать над кодом в больших распределенных (по времени и пространству) командах (через pull request-ы например).
+ Поддержка из коробки (пусть не полная, но все же) во многих средствах разработки (в том числе в VS)

— Отсутвие прав внутри репозитория как таковых.
— Отсутсвие GUI уровня допустим черепахи (TortoiseSVN). rebase/squash — фантастик хоум юзер экспириенс..
— Тысяча и одна команда на все случаи жизни.
Re: Очередной миф?
От: rm822 Россия  
Дата: 07.09.14 22:45
Оценка:
P>Вспомнил что среди знакомых программистов только я остался пользоваться SVN все давно уже перешли на Git. Почитал кучу документаций(должен сказать очень водянистые доки) но так и не нашел ответа на вопрос зачем переходить на него. Почему все переходят?
С чего ты взял что все переходят-то?
глянем здесь

February 2012
Git: 124,000 repositories (26% of total)
SVN: 265,883 repositories (57% of total)

June 2012
Git: 134,459 repositories (27% of total)
SVN: 267,499 repositories (54% of total)

October 2013
Git: 238,648 repositories (38% of total)
SVN: 291,920 repositories (46% of total)

April 2014
Git: 247,103 repositories (37% of total)
SVN: 324,895 repositories (48% of total)

в процентном отношении SVN упал, а в штучном вырос
Re[2]: Очередной миф?
От: Cyberax Марс  
Дата: 08.09.14 01:52
Оценка:
Здравствуйте, rm822, Вы писали:

R>С чего ты взял что все переходят-то?

R>глянем здесь
R> Git: 247,103 repositories (37% of total)
R> SVN: 324,895 repositories (48% of total)
Ерунда какая-то. На одном только github'е уже 10 миллионов репозиториев.
Sapienti sat!
Re[3]: Очередной миф?
От: rm822 Россия  
Дата: 08.09.14 08:53
Оценка:
C>Ерунда какая-то.
Это статы с https://www.openhub.net/
Список проектов у них впечатляет
Re[4]: Очередной миф?
От: Passer  
Дата: 08.09.14 09:02
Оценка:
Здравствуйте, rm822, Вы писали:

C>>Ерунда какая-то.

R>Это статы с https://www.openhub.net/
R>Список проектов у них впечатляет

Божее... Над мозилой работают 13000 разработчиков а над убунту 5000)))
Re[5]: Очередной миф?
От: Vain Россия google.ru
Дата: 09.09.14 03:52
Оценка:
Здравствуйте, Passer, Вы писали:

C>>>Ерунда какая-то.

R>>Это статы с https://www.openhub.net/
R>>Список проектов у них впечатляет
P>Божее... Над мозилой работают 13000 разработчиков а над убунту 5000)))
и все работают за идею
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[3]: Git пивом облит?
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 09.09.14 14:37
Оценка:
Здравствуйте, Passer, Вы писали:

P>Плюс ощущение что каждый раз придется делать этот дифф, статус и все такое что бы случайно что то не упустить. Я не хочу работать специалистом по гит-у)) Мое дело писать код. А версионизация должна быть настолько простой и удобной что бы если нет конфликтов я о ней вообще не задумывался.


Тогда Mercurial и, например, TortoiseHG.
HgLab: Mercurial Server and Repository Management for Windows
Re[3]: Git пивом облит?
От: Anton Batenev Россия https://github.com/abbat
Дата: 09.09.14 20:04
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н> "Удобно" и "разработчиком для разработчиков" -- это про Mercurial. А про Git вот:


Я бы хотел сам решать, что мне удобно, а что нет Для тех, кому сложно из мира svn сразу перейти в мир git, hg будет неплохим проводником.
avalon/1.0.435
Re[3]: Git пивом облит?
От: . Великобритания  
Дата: 09.09.14 20:33
Оценка:
Здравствуйте, Passer, Вы писали:

P> Недостатки мелкие. Ничего серьезного.

P> Слишком слишком слишком водянистые документации. Каждую главу буквально можно сжать в абзац. никого не смущает что по системе контроля версии есть целая книга)))) теперь я хочу связать git с maven. Сколько же придется копать что бы найти как это сделать и какие это даст преимущества))
По svn тоже есть книга, и не одна... Вообще говоря, гит прост, очень прост. Главное понять структуру данных, а там всего пяток объектов (objects):
— blob: бинарный контент
— tree: список name -> blob-id (т.е. файл) | tree-id (подкаталог), т.е. по сути snapshot твоего каталога проекта (working copy).
— commit: структура состоящая из имени автора, даты, списка id родительских коммитов, сообщения. Если родитель один — это обычный коммит, если два (или несколько!) — merge commit. Т.е. множество коммитов образуют иммутабельный DAG.
— ref: символическое имя, указатель на другой ref или на commit-id, частными случаями являются branch, tag, stash и прочее.

Каждый объект имеет id, который вычисляется как sha от его содержимого. Всё, остальное — алгоритмы над этой структурой данных. Плюс команды, которые комбинируют другие команды, например "commit -a" это комбинация add + commit, "pull" это fetch + merge, и т.п.

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

P> Явный недостаток это плохая поддержка гуи.

tortoisegit пробовал уже? Переезжающему с tortoisesvn будет просто освоиться.
А вообще, гуи слишком слаб чтобы все функции выразить, либо он будет по сложности как MS Word.

P> И вот этот "git add" который еще сопровождается словами "ничего лишнего вы не зальете на сервер". У меня в папке проекта не хранится ничего лишнего(если она попала в папку проекта значит это имеет отношение к нему). Все .class файлы и остальное что не надо добавлять в репозитоий я ввожу в игнор. а с другой стороны в таком решении(как у git) всегда есть шанс что в списке "git status" в числе остальных можно не заметить и не добавить важный файл.

"git commit -a" будет эквивалентен свн-овскому коммиту.
"git add --all && git commit" позволяет закомитить все изменения сразу, включая переименованные, перемещённые, удалённые, добавленные файлы. В svn вроде такое не сделать.
Команда add это по сути подготовка нового tree (его называют stage или index) который ты готовишься _атомарно_ закоммитить. Скажем, это позволяет сделать коммит только части изменений, притом любой, вплоть до отдельной строчки. svn тоже так не умеет.

P> В черепашках svn удобно и наглядно можно посмотреть состояние проекта. Открыл в проводнике и видишь на папках галочки, значит закоммичино. Если нет, открыл папку и увидел что не закоммичено.

И кто пользуется этим Проводником? Видимо, ты лучшего ничего не видел. В intellij idea подсвечиваются изменения вплоть до каждой строчки или символа, плюс тут же плоский список изменённых файлов.
Попробуй ещё Atlassian SourceTree.

P> А еще плюсы распределенной системы мне не до конца ясны. Судя по документации при словах "это дистрибутивная система" и "если на сервере полетит винт у вас ничего не потеряется" разработчики с визгом должны побежать качать этот продукт(ибо других плюсов не сочли нужным написать).

Если попробовать подобрать аналогию, чтобы выразить эмоции вызванные различием, это примерно как работа через монохромный терминал на каком-то мейнфрейме, где ещё работает куча таких же неудачников как ты, и твой личный лаптоп класса macbook pro, и у всех разработчиков такие же, вы только иногда, когда есть настроение, в чятике обмениваетесь чмокамикоммитами.

P> А мне не совсем ясны его плюсы. И очевидный минус это размер, особенно если учесть что при изменениях хранится весь файл(сколько же это будет весить).

Вся история Linux Kernel c 2005 года, 320k коммитов, 40k файлов, занимает около 600Mb. Умная структура данных, хорошая компрессия.

P> Плюсы скорости очевидны но настолько ли они важны? Это не то же самое что и поставить горячую кнопку на установку плагина в идее? или тоже самое?))

Когда создание бранча или коммита занимает 20 миллисекунд вместо 20 секунд — совершенно меняется стиль работы.

P> Плюс ощущение что каждый раз придется делать этот дифф, статус и все такое что бы случайно что то не упустить. Я не хочу работать специалистом по гит-у)) Мое дело писать код. А версионизация должна быть настолько простой и удобной что бы если нет конфликтов я о ней вообще не задумывался.

Если ты один, то запомни "git add -A && git commit && git push" или даже alias сделай. А если не один, или поддерживаешь несколько направлений разработки, или любишь эксперименты всякие, то придётся думать — а как запретить этим криворуким ломать билд, а как сделать изменение, чтобы сразу в нескольких ветках, да как потом выяснить что где сделано, а как отложить это на потом, а как потом это причесать красиво, т.п. — вот тут начинаются хитрости.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 09.09.2014 20:38 · (вах, rsdn позволяет редактировать сообщения) . Предыдущая версия .
Re[4]: Git пивом облит?
От: BulatZiganshin  
Дата: 09.09.14 20:40
Оценка:
Здравствуйте, ., Вы писали:

.>По svn тоже есть книга, и не одна... Вообще говоря, гит прост, очень прост. Главное понять структуру данных, а там всего пяток объектов (objects):


я лично изучал эту структуру данных как возможную идею для реализации программы инкрементального бекапа. но для повседневного пользования программой знать её нафиг не нужно
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Git пивом облит?
От: . Великобритания  
Дата: 09.09.14 20:56
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

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

Не нужно, согласен. Но жутко упрощает понимание всего остального, да и интересно, по-моему.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: Очередной миф?
От: Vladek Россия Github
Дата: 14.09.14 15:11
Оценка:
Здравствуйте, rm822, Вы писали:

C>>Ерунда какая-то.

R>Это статы с https://www.openhub.net/
R>Список проектов у них впечатляет

Это какой-то анализатор, он не хостит эти проекты. Там и мои проекты есть, однако они на Кодплексе лежат.
Re[3]: Git пивом облит?
От: Clerk  
Дата: 15.09.14 10:34
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>rebase в SVN-е, это да — геморой, но опять же возможно. Я занимался таким несколько раз...

Rebase в git'e — это быстро, просто и легко. Постоянно юзаю. В том числе что бы оформить коммиты к ушедшему вперёд по коммитам svn.
Re[2]: Git пивом облит?
От: TimurSPB Интернет  
Дата: 15.09.14 10:41
Оценка:
bnk>- Отсутсвие GUI уровня допустим черепахи (TortoiseSVN). rebase/squash — фантастик хоум юзер экспириенс..
SmartGit неплох
Make flame.politics Great Again!
Re[4]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 15.09.14 11:00
Оценка:
Здравствуйте, Clerk, Вы писали:

SJA>>rebase в SVN-е, это да — геморой, но опять же возможно. Я занимался таким несколько раз...

C>В том числе что бы оформить коммиты к ушедшему вперёд по коммитам svn.

Это думаю можно не учитывать. Каждый SVN пользователь постоянно пользуется таким rebase при каждом апдейте. Только его бранч состоит из одного незакомиченного "комита". Этот "комит" ребейзится на пришедшую ревизию.
Отредактировано 15.09.2014 13:24 Sergey J. A. . Предыдущая версия .
Re[6]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 15.09.14 14:04
Оценка:
Здравствуйте, ., Вы писали:

SJA>>>>rebase в SVN-е, это да — геморой, но опять же возможно. Я занимался таким несколько раз...

C>>>В том числе что бы оформить коммиты к ушедшему вперёд по коммитам svn.
SJA>>Это думаю можно не учитывать. Каждый SVN пользователь постоянно пользуется таким rebase при каждом апдейте. Только его бранч состоит из одного незакомиченного "комита". Этот "комит" ребейзится на пришедшую ревизию.
.>Ага, и если что-то пошло не так, то можно вешаться. Наученные опытом SVN-щики обычно вручную бекапят ценные изменения перед апдейтом. Git же по дефолту не допускает необратимых операций, если что-то не так, можно вернуться к предыдущему состоянию (stash или reflog) и повторить позже.

Это конечно жирный минус.

Однако для опытного (а не наученного опытом) пользователя всё не столь печально:
Если обновляться почаще, конфликты будут возникать значительно реже(я уж и не помню когда они у меня были на update).
Если работать в персональном бранче и комитить всё перед sync merge — ничего теряться не будет, как и в git.
Ну и в конце концов ничего из ценно написанного ведь не теряется — всё висит в конфликтах.
Re[7]: Git пивом облит?
От: . Великобритания  
Дата: 15.09.14 19:50
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> Это конечно жирный минус.


SJA> Однако для опытного (а не наученного опытом) пользователя всё не столь печально:

SJA> Если обновляться почаще, конфликты будут возникать значительно реже(я уж и не помню когда они у меня были на update).
SJA> Если работать в персональном бранче и комитить всё перед sync merge — ничего теряться не будет, как и в git.
Вооот. Это основное отличие — в svn навязывается некий алгоритм использования. Если ему не следуешь — будут проблемы. В git делай что душе угодно, в каком хочешь порядке. Могут навязывать лишь другие, когда обмениваешься изменениями (например, делаешь push в "центральный" репо).

SJA> Ну и в конце концов ничего из ценно написанного ведь не теряется — всё висит в конфликтах.

Начинаешь разрешать конфликты и вдруг что-то не сростается. И решаешь повторить мерж чуть иначе, отложить на потом, или поменять кое-что перед мержем, и т.п., а если бэкапов не оставил — сам виноват, вешайся.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[8]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 15.09.14 20:34
Оценка:
Здравствуйте, ., Вы писали:

SJA>> Это конечно жирный минус.


SJA>> Однако для опытного (а не наученного опытом) пользователя всё не столь печально:

SJA>> Если обновляться почаще, конфликты будут возникать значительно реже(я уж и не помню когда они у меня были на update).
SJA>> Если работать в персональном бранче и комитить всё перед sync merge — ничего теряться не будет, как и в git.
.>Вооот. Это основное отличие — в svn навязывается некий алгоритм использования. Если ему не следуешь — будут проблемы.
SVN вообще как C++ — куча способов выстрелить себе в ногу. Да, нужно следовать более жёстким правилам.

.>В git делай что душе угодно, в каком хочешь порядке. Могут навязывать лишь другие, когда обмениваешься изменениями (например, делаешь push в "центральный" репо).

Что хочешь? Хм...

git reset --hard origin/master
git gc

Так можно? (Не уверен насчёт синтаксиса, надеюсь идея понятна)

SJA>> Ну и в конце концов ничего из ценно написанного ведь не теряется — всё висит в конфликтах.

.>Начинаешь разрешать конфликты и вдруг что-то не сростается. И решаешь повторить мерж чуть иначе, отложить на потом, или поменять кое-что перед мержем, и т.п., а если бэкапов не оставил — сам виноват, вешайся.

Ну я неявно имел в виду, что если увидел при апдейте страшные конфликты — тогда можно и прихраниться.
Но да — проблема есть, хотя я и ни разу в неё не вступал. Надеюсь разработчики svn-а прикрутят checkpoint-ы ещё при моей жизни...
Re: Git пивом облит?
От: Clerk  
Дата: 16.09.14 05:58
Оценка:
Здравствуйте, Passer, Вы писали:

P>Может дело во мне и много лет проведенных с svn не дают мне понять преимущества Гита? Или просто другим разработчикам гит лучше рекламируют?


В связи с тем, что git — это dvcs, а svn — нет, то много плюшек git в svn банально не существуют — например, поиск по истории возможен и при отсутствии соединения с сервером,
лёгкий и безгеморойный rebase, лёгкие бранчи и т.д. Работать можно и с svn, но с git — гораздо удобнее.
Re[9]: Git пивом облит?
От: . Великобритания  
Дата: 16.09.14 12:16
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

.>>Вооот. Это основное отличие — в svn навязывается некий алгоритм использования. Если ему не следуешь — будут проблемы.

SJA>SVN вообще как C++ — куча способов выстрелить себе в ногу. Да, нужно следовать более жёстким правилам.
У С++ есть хотя бы какие-то технические преимущества, об SVN такого не скажешь.

.>>В git делай что душе угодно, в каком хочешь порядке. Могут навязывать лишь другие, когда обмениваешься изменениями (например, делаешь push в "центральный" репо).

SJA>Что хочешь? Хм...
Угу.

SJA>git reset --hard origin/master

SJA>git gc
SJA>Так можно? (Не уверен насчёт синтаксиса, надеюсь идея понятна)
Конечно можно. "git reflog" живёт месяц, афаир.
Чтобы удалить всё — нужно очень хорошо постараться, написав несколько команд с кучей ключей, о которых, я уверен, ты и не слышал, и вряд ли ты сможешь запомнить, я гуглю/читаю ман каждый раз. Случайно такое не сделаешь, проще написать "rm -rf .".
Сравни с "svn up", который может покорёжить твои изменения, так что восстановить — проблема.

SJA>>> Ну и в конце концов ничего из ценно написанного ведь не теряется — всё висит в конфликтах.

.>>Начинаешь разрешать конфликты и вдруг что-то не сростается. И решаешь повторить мерж чуть иначе, отложить на потом, или поменять кое-что перед мержем, и т.п., а если бэкапов не оставил — сам виноват, вешайся.
SJA>Ну я неявно имел в виду, что если увидел при апдейте страшные конфликты — тогда можно и прихраниться.
Снова то же. А если не прихранился (забыл, поленился) — svn опять умывает руки.

SJA>Но да — проблема есть, хотя я и ни разу в неё не вступал. Надеюсь разработчики svn-а прикрутят checkpoint-ы ещё при моей жизни...

Мне кажется, что скорее разработчики svn перейдут на git.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: Git пивом облит?
От: The Passenger Голландия  
Дата: 16.09.14 12:29
Оценка:
Здравствуйте, vsb, Вы писали:

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


ключевые слова выделил, все изза этого пользуют, но эта мифическая "необходимость" так и не наступает
зато геморра от мержа выше крыши
Весь мир — Кремль, а люди в нем — агенты
Re[11]: Git пивом облит?
От: . Великобритания  
Дата: 16.09.14 14:35
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>Они есть.

SJA>Возможность отобрать права на чтение на куски репозитория. Используем для контрактеров.
Да, с этим согласен, в гит это хоть и делается, но довольно неочевидно (отпочковывается каталог как отдельный репо и потом мержится обратно как subtree). Но это тоже обычно означает непродуманное разбиение на модули, проект-свалка. Так что можно ещё поспорить — хорошая ли это фича, когда факт её применения обычно означает, что с проектом что-то не так.

SJA>Sparse checkout — многие пользуются что бы держать проект на SSD. Иначе не помещается.

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

SJA>Лучшая обработка часто, но незначительно изменяющихся бинарников. Не пользуемся.

Бинарники в бинарых репо держать надо (ну или git annex). Иначе проблемы с мержами — разные бинарники — и что же делать при конфликтах?

SJA>А, ну нашёл.


SJA>git reset --hard origin/master

SJA>git reflog expire --expire-unreachable=now --all
SJA>git gc --prune=now

SJA>всё исключительно средствами гита.

Ну понятно, ногу можно и ложкой отпилить. Но случайно такое никак не сделаешь. Раз решил такое сделать, то значит знаешь что делаешь. svnadmin тоже может много что сделать, например, злоумышленник может незаметно подправить историю.

.>>Чтобы удалить всё — нужно очень хорошо постараться, написав несколько команд с кучей ключей, о которых, я уверен, ты и не слышал, и вряд ли ты сможешь запомнить, я гуглю/читаю ман каждый раз. Случайно такое не сделаешь, проще написать "rm -rf .".

.>>Сравни с "svn up", который может покорёжить твои изменения, так что восстановить — проблема.

SJA>Ок. 'rm -rf' (он же сдохший веник) в SVN удалит только последний кусок работы. У меня это пол дня максимум.

SJA>У меня нет статистики, сколько кто копит в гите локальных коммитов. Но судя по всему побольше.
Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще, т.к. команды выполняются раз в пять быстрее. В чём разница-то?

SJA>>>Ну я неявно имел в виду, что если увидел при апдейте страшные конфликты — тогда можно и прихраниться.

.>>Снова то же. А если не прихранился (забыл, поленился) — svn опять умывает руки.
SJA>Да именно так. Просто надо быть аккуратнее.
В том-то и поинт — с гитом не надо.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[11]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 16.09.14 15:53
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> SJA>>Что хочешь? Хм...


SJA> .>Угу.


SJA> SJA>>git reset --hard origin/master

SJA> SJA>>git gc
SJA> SJA>>Так можно? (Не уверен насчёт синтаксиса, надеюсь идея понятна)

SJA> .>Конечно можно. "git reflog" живёт месяц, афаир.


SJA> А, ну нашёл.


SJA> git reset --hard origin/master

SJA> git reflog expire --expire-unreachable=now --all
SJA> git gc --prune=now

SJA> всё исключительно средствами гита.


И что это показывает? Что дурная голова рукам покоя не дает?
avalon 1.0rc3 build 430, zlib 1.2.5
Re[12]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 16.09.14 15:53
Оценка:
Здравствуйте, ., Вы писали:

SJA>>Они есть.

SJA>>Возможность отобрать права на чтение на куски репозитория. Используем для контрактеров.
.>Да, с этим согласен, в гит это хоть и делается, но довольно неочевидно (отпочковывается каталог как отдельный репо и потом мержится обратно как subtree). Но это тоже обычно означает непродуманное разбиение на модули, проект-свалка. Так что можно ещё поспорить — хорошая ли это фича, когда факт её применения обычно означает, что с проектом что-то не так.

Именно наш случай — проект свалка. Это одна из причин почему был выбран SVN — что бы можно было быстро сконвертировать часть проектов с VSS-а и пользоваться нормальным VCS.
git потребовал бы больше усилий (причём моих личных, неоплачиваемых). Ещё осталось процентов 60 на VSS-е...
Если бы мне нужно было ещё и всё резать всё на модули...


SJA>>Sparse checkout — многие пользуются что бы держать проект на SSD. Иначе не помещается.

.>Да тоже можно, даже круче (например, исключения поддерживаются). Только обычно это означает, что проект какой-то сильно особенный, либо, скорее всего, непродуманное разбиение на модули, что вызывает кучу других проблем.

Если я правильно понял — это не совсем настоящий sparse. Git всё равно скачивает всю историю, только чекаутит не все файлы.

SJA>>Лучшая обработка часто, но незначительно изменяющихся бинарников. Не пользуемся.

.>Бинарники в бинарых репо держать надо (ну или git annex). Иначе проблемы с мержами — разные бинарники — и что же делать при конфликтах?
Не могу ничего сказать. Стараюсь всеми силами недопустить в SVN бинарники. Но как факт — svn справляется лучше.
Что за бинарные репы? Мне ща надо думать о прикручивании некого artifat managementa... Пока ничего хорошего не придумывается.


.>Ну понятно, ногу можно и ложкой отпилить. Но случайно такое никак не сделаешь. Раз решил такое сделать, то значит знаешь что делаешь. svnadmin тоже может много что сделать, например, злоумышленник может незаметно подправить историю.

Про случайно/неслучайно речь вроде не шло. "В git делай что душе угодно, в каком хочешь порядке". Я сделал — результат хуже чем аналогичный в svn. В svn можно уничтожить только незакомиченные данные.

Про svnadmin непонятно, мы вроде обсуждаем клиентскую сторону. Это можно в отдельный минус записать.


SJA>>У меня нет статистики, сколько кто копит в гите локальных коммитов. Но судя по всему побольше.

.>Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще, т.к. команды выполняются раз в пять быстрее. В чём разница-то?

Не буду. Я комичу раз в пол дня не потому что это медленно

Про скорость это аргумент уже достал, если честно.

viu43091@BYM1D048 /cygdrive/c/work/gfz-tools   
$ time svn ci -m "test commit"
Sending        README                          
Transmitting file data .                       
Committed revision 39512.                      
                                               
real    0m3.282s                               
user    0m0.015s                               
sys     0m0.093s                               


viu43091@BYM1D048 /cygdrive/c/work/pdf-hilite.dev             
$ time git commit -a -m "test commit"                         
[test f3786e6] test commit                                    
 1 file changed, 3 deletions(-)                               
                                                              
real    0m0.274s                                              
user    0m0.015s                                              
sys     0m0.140s                                              
                                                              
viu43091@BYM1D048 /cygdrive/c/work/pdf-hilite.dev             
$ time git push                                               
Counting objects: 5, done.                                    
Delta compression using up to 4 threads.                      
Compressing objects: 100% (3/3), done.                        
Writing objects: 100% (3/3), 328 bytes | 0 bytes/s, done.     
Total 3 (delta 1), reused 0 (delta 0)                         
To file:///\\srv-tfs\git\pdf-hilite                           
   50b1420..f3786e6  test -> test                             
                                                              
real    0m1.252s                                              
user    0m0.015s                                              
sys     0m0.109s


Итого: svn 3.2 секунды. Сюда входит так же выполнение достаточно тяжеловесных хуков.
git — 1.252 + 0.274 = 1.5
Разница всего в 2 раза.

Я над комментарием к комиту дольше думаю + быстрое ревью отсылаемых изменений.
Гит мне сэкономит хорошо если 5%. Уж тогда заживём...


SJA>>>>Ну я неявно имел в виду, что если увидел при апдейте страшные конфликты — тогда можно и прихраниться.

.>>>Снова то же. А если не прихранился (забыл, поленился) — svn опять умывает руки.
SJA>>Да именно так. Просто надо быть аккуратнее.
.>В том-то и поинт — с гитом не надо.
Поинт есть, я не спорю. Но это не "ах, все срочно отказываемся от SVN-а, в ём невозможно работать"
Re[12]: Git пивом облит?
От: Clerk  
Дата: 16.09.14 15:54
Оценка:
Здравствуйте, ., Вы писали:

SJA>>Ок. 'rm -rf' (он же сдохший веник) в SVN удалит только последний кусок работы. У меня это пол дня максимум.

SJA>>У меня нет статистики, сколько кто копит в гите локальных коммитов. Но судя по всему побольше.
.>Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще, т.к. команды выполняются раз в пять быстрее. В чём разница-то?

Бэкап всего локального репозитория в git:

Добавляем в config след. строки:
[remote "backup"]
url = //somebackupserver/myrepositorybackup/
mirror = true


и после этого 'git push backup' делает полный бэкап текущего репозитория на сервере. И никакие hdd failure не страшны.
Re[12]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 16.09.14 15:56
Оценка:
D>И что это показывает? Что дурная голова рукам покоя не дает?

Именно это и показывает. Не svn или git, а дурная голова.
Заявленное "делай что хочешь" несколько не соответствует действительности.
Re[7]: Git пивом облит?
От: Clerk  
Дата: 16.09.14 16:29
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

А как с бранчами или аналогичной функциональностью в svn?
Вот работаю над фичей — сделал новый бранч и начал в нём изменения. А тут нужно срочно баг фиксить. В бранче новой фичи комичу изменения
и завожу новый бранч под баг. Начал фиксить — присылают ещё более срочный баг. Коммичу что сделал в бранче бага1 и создаю бранч под баг2.
Заканчиваю с багом номер2 и отправляю изменения в основную ветку. Переключаюсь в баг1 и делаю rebase на основную ветку. Заканчиваю фикс бага1
и отправляю изменения в основную ветку. Возвращаюсь в бранч фичи, делаю rebase на основную ветку и т.д. История — чистая, код разных фич
друг другу не мешает.
Вопрос — как сохранять эти временные недоизменения в svn?
Re[6]: Git пивом облит?
От: Clerk  
Дата: 16.09.14 16:32
Оценка:
Здравствуйте, ., Вы писали:

.>Ага, и если что-то пошло не так, то можно вешаться. Наученные опытом SVN-щики обычно вручную бекапят ценные изменения перед апдейтом. Git же по дефолту не допускает необратимых операций, если что-то не так, можно вернуться к предыдущему состоянию (stash или reflog) и повторить позже.

Для обычного пользования reflog — это уже тяжёлая артиллерия. Обычно всё заканчивается устранением конфликтов или в особо тяжких случаях git rebase abort.
Re[8]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 16.09.14 16:38
Оценка:
Здравствуйте, Clerk, Вы писали:

C>А как с бранчами или аналогичной функциональностью в svn?

C>Вот работаю над фичей — сделал новый бранч и начал в нём изменения. А тут нужно срочно баг фиксить. В бранче новой фичи комичу изменения
C>и завожу новый бранч под баг. Начал фиксить — присылают ещё более срочный баг. Коммичу что сделал в бранче бага1 и создаю бранч под баг2.
C>Заканчиваю с багом номер2 и отправляю изменения в основную ветку. Переключаюсь в баг1 и делаю rebase на основную ветку. Заканчиваю фикс бага1
C>и отправляю изменения в основную ветку. Возвращаюсь в бранч фичи, делаю rebase на основную ветку и т.д. История — чистая, код разных фич
C>друг другу не мешает.
C>Вопрос — как сохранять эти временные недоизменения в svn?

Если баги достаточно маленькие я скорее сохраню патч. А потом его применю обратно.

Если исходить из того, что все работы достаточно большие, то мои действия будут слабо отличаться от перечисленных.
Вместо rebase будет sync merge. А так — те же бранчи. История возможно будет кривее — svn log -g не всегда адекватен.

В целом в svn работать с бранчами сложнее, но я не стесняюсь.
Re[9]: Git пивом облит?
От: Clerk  
Дата: 16.09.14 17:23
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>В целом в svn работать с бранчами сложнее, но я не стесняюсь.


На работе центральный сервер — svn, локально у разработчиков — у кого-то svn, у кого-то git.
С git'ом жизнь проще.
Re[10]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 16.09.14 17:34
Оценка:
SJA>>В целом в svn работать с бранчами сложнее, но я не стесняюсь.

C>На работе центральный сервер — svn, локально у разработчиков — у кого-то svn, у кого-то git.

C>С git'ом жизнь проще.

Ну так я и не отрицаю.
Я только против мнения, что svn ни на что не годится и им пользоваться вообще невозможно. Некоторые уверяют, что там даже трёхстороннего мержа нет.
Re[3]: Git пивом облит?
От: vsb Казахстан  
Дата: 16.09.14 18:14
Оценка:
Здравствуйте, The Passenger, Вы писали:

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


TP>ключевые слова выделил, все изза этого пользуют, но эта мифическая "необходимость" так и не наступает


У кого-то не настаёт, у кого-то настаёт.

TP>зато геморра от мержа выше крыши


В чём гемор? По-моему уж в мерже гит точно не хуже svn.
Re: Git пивом облит?
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 16.09.14 20:46
Оценка:
Здравствуйте, Passer, Вы писали:

P>Поделитесь своим мнением.


Пытался пользоваться mercurial. Выяснил, что он не совместим с моими мозгами, ибо те вывихнулись в попытке понять, что происходит, но так нифига и не поняли. Особенно выносил мозг мёрдж (2 ветки, в каждой есть независимые изменения, в какой-то момент надо смерждить изменения из одной ветки в другую). Пока сделал, наделал пару десятков локальных коммитов с разной степенью бредовости содержимого. Добил красноглазый гуй у tortoisehg с аццким количеством всяких галочек, кнопочек и полей ввода с непонятными мне функциями. В процессе чуть не сломал клаву — после двух часов попыток добиться того, чтобы закоммитилось именно то, что мне нужно, нервы сдавали.
Плюнул и ушёл обратно на tfs — он простой, как пробка, и напортачить там нереально (без использования админских утилит). Мораль — проще надо быть, и люди к тебе потянутся!
[КУ] оккупировала армия.
Re[13]: Git пивом облит?
От: . Великобритания  
Дата: 16.09.14 21:04
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> Именно наш случай — проект свалка. Это одна из причин почему был выбран SVN — что бы можно было быстро сконвертировать часть проектов с VSS-а и пользоваться нормальным VCS.

Хе-хе. Вооот. А git ещё более нормальный vcs.

SJA> git потребовал бы больше усилий (причём моих личных, неоплачиваемых). Ещё осталось процентов 60 на VSS-е...

SJA> Если бы мне нужно было ещё и всё резать всё на модули...
Резать всё равно придётся, рано или поздно. Но это немного другой вопрос — legacy systems. Кобол местами до сих пор используют, но рекомендовать его использовать — только вредить.

SJA> Если я правильно понял — это не совсем настоящий sparse. Git всё равно скачивает всю историю, только чекаутит не все файлы.

В этом смысле да. Если бинари в репо не толкать, то ничего страшного. Вроде байку рассказывали, что клон репозитория mozilla (?) со всей историей занимал меньше, чем working copy репозитория svn.

SJA> SJA>>Лучшая обработка часто, но незначительно изменяющихся бинарников. Не пользуемся.


SJA> .>Бинарники в бинарых репо держать надо (ну или git annex). Иначе проблемы с мержами — разные бинарники — и что же делать при конфликтах?


SJA> Не могу ничего сказать. Стараюсь всеми силами недопустить в SVN бинарники. Но как факт — svn справляется лучше.

SJA> Что за бинарные репы? Мне ща надо думать о прикручивании некого artifat managementa... Пока ничего хорошего не придумывается.
Правильно. Надо, Федя, надо, прикручивание неизбежно для любого несдохшего проекта, это можно лишь болезненно оттягивать. А какой стек технологий то? В java мире — nexus/artifactory.

SJA> .>Ну понятно, ногу можно и ложкой отпилить. Но случайно такое никак не сделаешь. Раз решил такое сделать, то значит знаешь что делаешь. svnadmin тоже может много что сделать, например, злоумышленник может незаметно подправить историю.

SJA> Про случайно/неслучайно речь вроде не шло. "В git делай что душе угодно, в каком хочешь порядке". Я сделал — результат хуже чем аналогичный в svn. В svn можно уничтожить только незакомиченные данные.
В гите будет аналогом незапушенные данные.

SJA> Про svnadmin непонятно, мы вроде обсуждаем клиентскую сторону. Это можно в отдельный минус записать.

Просто надо осторожно сравнивать. Например, чтобы у гита серверная сторона была, какой-нибудь repository manager.

SJA> .>Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще, т.к. команды выполняются раз в пять быстрее. В чём разница-то?

SJA> Не буду. Я комичу раз в пол дня не потому что это медленно
А почему же тогда? Почему-то после перехода на гит я коммичу раз в десять чаще. Пушу так же, раз в пол дня, или даже чаще — зависит — багфиксы делаю или новые фичи.

SJA> Про скорость это аргумент уже достал, если честно.

Это простая операция, не так заметно. А update проекта 1000 каталогов? А переключение бранча? Создание бранча? Поиск в истории? Разница порой будет уже не пять раз, а пять тысяч.

SJA>
SJA> viu43091@BYM1D048 /cygdrive/c/work/pdf-hilite.dev
SJA> $ time git push
SJA> To file:///\\srv-tfs\git\pdf-hilite
SJA>

UNC вещь тормозная, ssh быстрый, особенно если ControlMaster включить. У меня обычно >0.5 секунды пуш на github, занятой сервер где-то в интернене, а не локалка.

SJA> Итого: svn 3.2 секунды. Сюда входит так же выполнение достаточно тяжеловесных хуков.

SJA> git — 1.252 + 0.274 = 1.5
SJA> Разница всего в 2 раза.
А десять старушек — уже рубль.

SJA> Я над комментарием к комиту дольше думаю

Думаешь долго, т.к. коммит в svn — ответственный шаг, ошибся — коллеги бить придут толпой. В git — обыденность, можно потом поправить.

SJA>+ быстрое ревью отсылаемых изменений. Гит мне сэкономит хорошо если 5%. Уж тогда заживём...

Ооо... ревью. Аналог gerrit есть для svn? С gerrit и push становится обыденностью, в худшем случае ревьювер пнёт, а чаще просто билд-сервер гавкнет.

SJA> .>В том-то и поинт — с гитом не надо.

SJA> Поинт есть, я не спорю. Но это не "ах, все срочно отказываемся от SVN-а, в ём невозможно работать"
А зачем вы от VSS отказываетесь? Ведь возможно же работать.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[14]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 08:29
Оценка:
Здравствуйте, ., Вы писали:

SJA>> Именно наш случай — проект свалка. Это одна из причин почему был выбран SVN — что бы можно было быстро сконвертировать часть проектов с VSS-а и пользоваться нормальным VCS.

.>Хе-хе. Вооот. А git ещё более нормальный vcs.
Есть определённые требования которым гит не удовлетворяет. Какая бы ни была это классная vcs во всех остальных отношениях — она всё ещё не удовлетворяет этим требованиям.
Не понимаю, что тут сложного?

Я ещё раз обрисую свою позицию и больше отвечать на "но лучше же" не буду.
При выборе тула я руководствовался (и другим советую) исходить из сравнительного анализа в *своей* ситуации с *доступными* ресурсами.
svn *в моей* ситуации был более выгоден, чем гит. И я его выбрал. Я учёл и скорость работы и возможность sparse checkout-а и наличие у меня опыта и привычки команды и много чего ещё. Что-то разумеется я не учёл.
В итоге всё пучком до сих пор. Мержит приемлимо, скорость достаточная, сон спокойный.
Пару новых проектов я завёл в git, все open source проекты тоже git. Полёт нормальный, нравится, но страстного желания переводить всё на гит пока не возникает.


.>Резать всё равно придётся, рано или поздно. Но это немного другой вопрос — legacy systems. Кобол местами до сих пор используют, но рекомендовать его использовать — только вредить.

Начинать писать на коболе — да, не стоит. Если надо поправить пару параметров — лучше не бросаться всё переписывать.
У меня нет никакого желания улучшать структуру проектов и избавляться от бинарников в VSS-е что бы потом, через лет так 5 (полагаю столько займёт переход на svn, если на это не будет выделятся ресурсы) перейти на git.

.>Правильно. Надо, Федя, надо, прикручивание неизбежно для любого несдохшего проекта, это можно лишь болезненно оттягивать. А какой стек технологий то? В java мире — nexus/artifactory.

С++/.NET. nexus/artifactory/archiva/nuget пробовал — немного не то. Хотя углубленно не копал.

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

Почему не пушишь в 10 раз чаше? Неужели пуш медленный?
Я то предпочитаю хорошо оформленные комиты, но если кого-то останавливает только скорость коммита/пуша... Мда.

SJA>> Про скорость это аргумент уже достал, если честно.

.>Это простая операция, не так заметно. А update проекта 1000 каталогов? А переключение бранча? Создание бранча? Поиск в истории? Разница порой будет уже не пять раз, а пять тысяч.

Я сделаю замеры. Но вот, как с технической точки рения ты полагаешь, что update, branch, switch будет медленнее?

SJA>> Я над комментарием к комиту дольше думаю

.>Думаешь долго, т.к. коммит в svn — ответственный шаг, ошибся — коллеги бить придут толпой. В git — обыденность, можно потом поправить.
Именно. Так в чём же преимущества быстрого пуша, если я всё равно буду думать перед ним?

SJA>>+ быстрое ревью отсылаемых изменений. Гит мне сэкономит хорошо если 5%. Уж тогда заживём...

.>Ооо... ревью. Аналог gerrit есть для svn? С gerrit и push становится обыденностью, в худшем случае ревьювер пнёт, а чаще просто билд-сервер гавкнет.
Нет, у нас другой процесс. Но я имел в виду просмотр *своих* изменений перед комитом.
Re[15]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 17.09.14 09:16
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> .>Почему-то после перехода на гит я коммичу раз в десять чаще. Пушу так же, раз в пол дня, или даже чаще — зависит — багфиксы делаю или новые фичи.


SJA> Почему не пушишь в 10 раз чаше? Неужели пуш медленный?

SJA> Я то предпочитаю хорошо оформленные комиты, но если кого-то останавливает только скорость коммита/пуша... Мда.

Подозреваю что тут имеется в виду что можно безболезненно коммитить промежуточные шаги и при необходимости выкидывать потом ненужное чтобы не загаживать историю коммитами типа "Откат коммита 100500 потому что зашел в тупик и надо делать по-другому"
avalon 1.0rc3 build 430, zlib 1.2.5
Re[16]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 10:07
Оценка:
SJA>> .>Почему-то после перехода на гит я коммичу раз в десять чаще. Пушу так же, раз в пол дня, или даже чаще — зависит — багфиксы делаю или новые фичи.

SJA>> Почему не пушишь в 10 раз чаше? Неужели пуш медленный?

SJA>> Я то предпочитаю хорошо оформленные комиты, но если кого-то останавливает только скорость коммита/пуша... Мда.

D>Подозреваю что тут имеется в виду что можно безболезненно коммитить промежуточные шаги и при необходимости выкидывать потом ненужное чтобы не загаживать историю коммитами типа "Откат коммита 100500 потому что зашел в тупик и надо делать по-другому"


Это локальные комиты. Хорошая штука, но мы обсуждаем именно скорость работы и её как-то непонятное влияние на частоту svn-комитов(git-пушей)
Re[17]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 17.09.14 10:20
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> Это локальные комиты. Хорошая штука, но мы обсуждаем именно скорость работы и её как-то непонятное влияние на частоту svn-комитов(git-пушей)


Связь скорость работы<->частота коммитов/пушей придумал ты Скорость это не только коммиты пуши, но и например blame
avalon 1.0rc3 build 430, zlib 1.2.5
Re[18]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 17.09.14 10:22
Оценка:
Здравствуйте, Dziman, Вы писали:

D> SJA> Это локальные комиты. Хорошая штука, но мы обсуждаем именно скорость работы и её как-то непонятное влияние на частоту svn-комитов(git-пушей)


D> Связь скорость работы<->частота коммитов/пушей придумал ты Скорость это не только коммиты пуши, но и например blame


И, например, то что можно коммитить промежуточные шаги без замусоривания истории(squash перед push) или извращениями с ручными патчами.
avalon 1.0rc3 build 430, zlib 1.2.5
Re[18]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 10:32
Оценка:
Здравствуйте, Dziman, Вы писали:

SJA>> Это локальные комиты. Хорошая штука, но мы обсуждаем именно скорость работы и её как-то непонятное влияние на частоту svn-комитов(git-пушей)


D>Связь скорость работы<->частота коммитов/пушей придумал ты

Разве?

SJA> .>Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще, т.к. команды выполняются раз в пять быстрее. В чём разница-то?
SJA> Не буду. Я комичу раз в пол дня не потому что это медленно
А почему же тогда? Почему-то после перехода на гит я коммичу раз в десять чаще. Пушу так же, раз в пол дня, или даже чаще — зависит — багфиксы делаю или новые фичи.


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

D>Скорость это не только коммиты пуши, но и например blame

Скорость blame в svn приемлемая. Прежде чем бросаться в сравнения прошу прочесть первый абзац тут: http://rsdn.ru/forum/tools/5786505.1
Автор: Sergey J. A.
Дата: 17.09.14
Re[19]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 17.09.14 10:45
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> SJA>> Это локальные комиты. Хорошая штука, но мы обсуждаем именно скорость работы и её как-то непонятное влияние на частоту svn-комитов(git-пушей)


SJA> D>Связь скорость работы<->частота коммитов/пушей придумал ты


SJA> Разве?


SJA>

SJA> SJA> .>Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще, т.к. команды выполняются раз в пять быстрее. В чём разница-то?
SJA> SJA> Не буду. Я комичу раз в пол дня не потому что это медленно
SJA> А почему же тогда? Почему-то после перехода на гит я коммичу раз в десять чаще. Пушу так же, раз в пол дня, или даже чаще — зависит — багфиксы делаю или новые фичи.


SJA> Человек уверен, что в связи с быстрыми комитами я стану пушиться чаще.


Он же пишет, что коммиты стали чаще, но пуш примерно как был так и остался.

SJA> D>Скорость это не только коммиты пуши, но и например blame


SJA> Скорость blame в svn приемлемая. Прежде чем бросаться в сравнения прошу прочесть первый абзац тут: http://rsdn.ru/forum/tools/5786505.1
Автор: Sergey J. A.
Дата: 17.09.14


Я не утверждаю что git подходит всем.
avalon 1.0rc3 build 430, zlib 1.2.5
Re[14]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 10:48
Оценка:
.>Это простая операция, не так заметно. А update проекта 1000 каталогов? А переключение бранча? Создание бранча? Поиск в истории? Разница порой будет уже не пять раз, а пять тысяч.

Итак наш транк.
Far говорит: Поиск закончен. Найдено файлов: 32996, папок: 3497
(само собой без .svn)


Чистил кэш утилитой RAMMap. Не уверен, насколько это адекватно, но другого способа я не знаю.
(RAMMap -> Menu -> Empty -> Empty Standby List)

SVN

Update, cold: 6 sec
Status, cold: 3.3 sec
Log(100), cold: 1.5 sec

Update, warm: 3.5 sec
Status, warm: 1.2 sec
Log(100), warm: 1.2 sec

Branch: 12 sec
Switch: 4 sec


Для git-а у меня нет аналогичного соответствующего репозитория, но есть другой, с кучей мелких файлов.
Far говорит: Поиск закончен. Найдено файлов: 66586, папок: 16077

status, cold: 19 sec
status, warm: 17.5 sec

log(100), cold: 0.25 sec
log(100), warm: 0.2 sec

И есть такой-же по содержанию и количеству файлов, но с меньшей историей для SVN-а
Far говорит: Поиск закончен. Найдено файлов: 63371, папок: 15589

status, cold: 7 sec
status, warm: 4.5 sec

log не имеет смысла, ибо там всего 4 записи


Итого.

1. Скорость SVN-а на моём рабочем репозитории вполне приемлема.
2. На большом количестве малких файлов git медленнее.

Пожалуй я откажусь от гита на большом репозитории в сторону svn-а...



На случай, если будут вопросы по проведению тестов:

SVN

cold update:

<clear cache>

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk
$ time svn up -r PREV                                    
Updating '.':                                            
D    ...        
A    ...   
U    ...        
U    ...
Updated to revision 39519.                               
                                                         
real    0m5.809s                                         
user    0m0.031s                                         
sys     0m0.078s                                         

<clear cache>

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk 
$ time svn up                                             
Updating '.':                                             
D    ...  
A    ...  
A    ...  
A    ...  
A    ...  
U    ...  
U    ...
Updated to revision 39520.                                
                                                          
real    0m5.559s                                          
user    0m0.000s                                          
sys     0m0.078s                                          




Warm update:

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk 
$ time svn up -r PREV                                     
Updating '.':                                             
D     ...
A     ...
U     ...
U     ...
Updated to revision 39519.                                
                                                          
real    0m3.493s                                          
user    0m0.047s                                          
sys     0m0.062s                                          

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk  
$ time svn up                                              
Updating '.':                                              
D    ...
A    ...
A    ...
A    ...
A    ...
U    ...
U    ...
Updated to revision 39520.                                 
                                                           
real    0m3.387s                                           
user    0m0.015s                                           
sys     0m0.078s                                           




Status cold + warm:

<clear cache>

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk
$ time svn st                                            
                                                         
real    0m3.323s                                         
user    0m0.015s                                         
sys     0m0.094s                                         

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk
$ time svn st                                            
                                                         
real    0m1.192s                                         
user    0m0.015s                                         
sys     0m0.062s                                         

Branch + switch (warm)

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk                                
$ time svn copy "^/trunk" "^/branches/private/username/test-1" -m "Create test branch"
                                                                                         
Committed revision 39521.                                                                
                                                                                         
real    0m12.477s                                                                        
user    0m0.031s                                                                         
sys     0m0.062s                                                                         

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk   
$ time svn switch "^/branches/private/username/test-1"   
At revision 39523.                                          
                                                            
real    0m4.055s                                            
user    0m0.000s                                            
sys     0m0.108s                                            

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk
$ time svn switch "^/trunk"                              
At revision 39523.                                       
                                                         
real    0m3.574s                                         
user    0m0.000s                                         
sys     0m0.109s                                         

log 100 enries, cold + warm

<clear cache>

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk
$ time svn log --limit 100 > NUL                         
                                                         
real    0m1.544s                                         
user    0m0.000s                                         
sys     0m0.094s                                         

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/gf/trunk
$ time svn log --limit 100 > NUL                         
                                                         
real    0m1.179s                                         
user    0m0.015s                                         
sys     0m0.046s



==== git big repo

<clear cache>

viu43091@BYM1D048 /cygdrive/c/work/git.speed.test/links             
$ time git status                                                   
# On branch master                                                  
#                                                                   
# It took 2.96 seconds to enumerate untracked files. 'status -uno'  
# may speed it up, but you have to be careful not to forget to add  
# new files yourself (see 'git help status').                       
nothing to commit, working directory clean                          
                                                                    
real    0m19.364s                                                   
user    0m0.000s                                                    
sys     0m0.125s                                                    

viu43091@BYM1D048 /cygdrive/c/work/git.speed.test/links            
$ time git status                                                  
# On branch master                                                 
#                                                                  
# It took 2.90 seconds to enumerate untracked files. 'status -uno' 
# may speed it up, but you have to be careful not to forget to add 
# new files yourself (see 'git help status').                      
nothing to commit, working directory clean                         
                                                                   
real    0m17.455s                                                  
user    0m0.000s                                                   
sys     0m0.093s                                                   

viu43091@BYM1D048 /cygdrive/c/work/git.speed.test/links  
$ time git log -100 > NUL                                
                                                         
real    0m0.260s                                         
user    0m0.000s                                         
sys     0m0.093s                                         
                                                         
viu43091@BYM1D048 /cygdrive/c/work/git.speed.test/links  
$ time git log -100 > NUL                                
                                                         
real    0m0.204s                                         
user    0m0.046s                                         
sys     0m0.062s



=== big repo svn

viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/wc   
$ time svn status                                     
                                                      
real    0m7.146s                                      
user    0m0.015s                                      
sys     0m0.124s                                      
                                                      
viu43091@BYM1D048 /cygdrive/c/work/sv.speed.test/wc   
$ time svn status                                     
                                                      
real    0m4.220s                                      
user    0m0.000s                                      
sys     0m0.077s
Re[20]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 10:55
Оценка:
Здравствуйте, Dziman, Вы писали:


SJA>>

SJA>> SJA> .>Если ты в svn коммитишься каждые полдня, то и в гите будешь так же пушиться, а то и чаще , т.к. команды выполняются раз в пять быстрее. В чём разница-то?
SJA>> SJA> Не буду. Я комичу раз в пол дня не потому что это медленно
SJA>> А почему же тогда? Почему-то после перехода на гит я коммичу раз в десять чаще. Пушу так же, раз в пол дня, или даже чаще — зависит — багфиксы делаю или новые фичи.


D>Он же пишет, что коммиты стали чаще, но пуш примерно как был так и остался.


Я выделил. Я комичу, когда считаю, что комит готов, а не потому что это быстро/медленно. Если мои слова где-то были истрактованы в другом ключе — прошу перетрактовать.


D>Я не утверждаю что git подходит всем.

А я не утверждаю, что svn подходит всем. Или даже хотя бы в среднем лучше git-a
Re[4]: Git пивом облит?
От: The Passenger Голландия  
Дата: 17.09.14 11:37
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>У кого-то не настаёт, у кого-то настаёт.


TP>>зато геморра от мержа выше крыши


vsb>В чём гемор? По-моему уж в мерже гит точно не хуже svn.


а можно замержить и залить только пару файлов не трогая остальные файлы?
Весь мир — Кремль, а люди в нем — агенты
Re[5]: Git пивом облит?
От: Clerk  
Дата: 17.09.14 12:19
Оценка:
Здравствуйте, The Passenger, Вы писали:

TP>а можно замержить и залить только пару файлов не трогая остальные файлы?

Можно. Добавляются только нужные файлы и с ними производится коммит.
Re[6]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 12:31
Оценка:
Здравствуйте, Clerk, Вы писали:

TP>>а можно замержить и залить только пару файлов не трогая остальные файлы?

C>Можно. Добавляются только нужные файлы и с ними производится коммит.

И git запомнит, что вот эти файлы из этого комита замержены а остальное нет? При последующем мерже этого-же комита что произойдёт?
Re[7]: Git пивом облит?
От: Clerk  
Дата: 17.09.14 12:44
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>И git запомнит, что вот эти файлы из этого комита замержены а остальное нет? При последующем мерже этого-же комита что произойдёт?

Git при мердже всегда оперирует коммитами, а не отдельными файлами. Либо мердж между коммитами успешный, либо нет, но операция всегда атомарная.

Если я правильно понял — у нас есть, например, 5 файлов. Нам нужно закомитить сейчас 2 из них. Создаём коммит с 2мя файлами.
Теперь нам нужно отправить этот комит в основную ветку. Так как у нас есть изменённые ещё 3 файла — временно отправляем эти 3 файла
в стэш (временное хранилище). После этого мержим наш 2х файловый комит в основую ветку. Если позникают неоднозначности — фиксим и заканчиваем мердж.
Достаём из стэша оставшихся 3 файла и продолжаем над ними работу.

Если же мы про rebase и возникающие конфликты — то, по умолчанию, их придётся каждый раз фиксить. Или же можно включить запоминатель разрешения
конфликтов http://git-scm.com/blog/2010/03/08/rerere.html и при повторном возникновении того же конфликта git сам всё сделает.
Re[13]: Git пивом облит?
От: . Великобритания  
Дата: 17.09.14 13:08
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

D>>И что это показывает? Что дурная голова рукам покоя не дает?


SJA>Именно это и показывает. Не svn или git, а дурная голова.

SJA>Заявленное "делай что хочешь" несколько не соответствует действительности.
Причём тут голова? Я о принципе наименьшего удивления. Я имею в виду, что если ты делаешь какие-то операции, которые не предназначены что-то удалять (скажем svn up), то в хорошей VCS не должна возникать ситуация, когда нельзя операции откатить, и приходится "присохраняться" тупым копированием в хз какие бекапы. А если ты явно набираешь три довольно хиртые команды чтобы всё уничтожить, то собственно это и ожидаешь.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[15]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 17.09.14 17:47
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> .>Это простая операция, не так заметно. А update проекта 1000 каталогов? А переключение бранча? Создание бранча? Поиск в истории? Разница порой будет уже не пять раз, а пять тысяч.


SJA> Итак наш транк.

SJA> Far говорит: Поиск закончен. Найдено файлов: 32996, папок: 3497
SJA> (само собой без .svn)

SJA> Чистил кэш утилитой RAMMap. Не уверен, насколько это адекватно, но другого способа я не знаю.

SJA> (RAMMap -> Menu -> Empty -> Empty Standby List)

Для более-менее честного тестирования импортируй svn в git ( git svn clone <svnurl> ) и гоняй тесты.

На моем достаточно маленьком репо (7200 ревизий svn, 2486 файлов, папки не считал):

log:

time svn log --limit 100 > /dev/null
svn log --limit 100 > /dev/null  0.02s user 0.01s system 2% cpu 1.274 total


time git log -n 100 > /dev/null
git log -n 100 > /dev/null  0.00s user 0.01s system 46% cpu 0.021 total


blame для первого попавшевося файла:

time svn blame Class.java >/dev/null
svn blame  > /dev/null  0.04s user 0.04s system 4% cpu 1.748 total


time git blame Class.java > /dev/null
git blame  > /dev/null  0.05s user 0.01s system 78% cpu 0.069 total


status:

time svn status > /dev/null
svn status > /dev/null  0.02s user 0.06s system 80% cpu 0.100 total


time git status > /dev/null
git status > /dev/null  0.01s user 0.01s system 69% cpu 0.024 total
avalon 1.0rc3 build 430, zlib 1.2.5
Re[15]: Git пивом облит?
От: . Великобритания  
Дата: 17.09.14 20:04
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA>

В git делай что душе угодно, в каком хочешь порядке.

SJA> Моей душе было угодно выполнить эти хитрые команды. Я уж и незнаю, что больше сказать.
Буквоедство. Я же тебе порекомендовал: "rm -rf *", и не стоило время тратить на гугл в поисках этих трёх команд.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[15]: Git пивом облит?
От: . Великобритания  
Дата: 17.09.14 21:22
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> В итоге всё пучком до сих пор. Мержит приемлимо, скорость достаточная, сон спокойный.

SJA> Пару новых проектов я завёл в git, все open source проекты тоже git. Полёт нормальный, нравится, но страстного желания переводить всё на гит пока не возникает.
Хорошо. Сойдёмся на том, что для некоторых корявых легаси систем в некоторых случаях svn или zip в качестве vcs могут быть лучше.

SJA> Начинать писать на коболе — да, не стоит. Если надо поправить пару параметров — лучше не бросаться всё переписывать.

SJA> У меня нет никакого желания улучшать структуру проектов и избавляться от бинарников в VSS-е что бы потом, через лет так 5 (полагаю столько займёт переход на svn, если на это не будет выделятся ресурсы) перейти на git.
Есть такая вещь как technical dept, если проект не сдохнет, то платить его таки придётся.

SJA> С++/.NET. nexus/artifactory/archiva/nuget пробовал — немного не то. Хотя углубленно не копал.

А что не срослось?

SJA> Почему не пушишь в 10 раз чаше? Неужели пуш медленный?

После того, как мы завели gerrit, пушить тоже стал чаще на порядок — накой самому гонять тесты и т.п., пусть CI-сервер трудится, он железный.

SJA> Я то предпочитаю хорошо оформленные комиты, но если кого-то останавливает только скорость коммита/пуша... Мда.

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

SJA> Я сделаю замеры. Но вот, как с технической точки рения ты полагаешь, что update, branch, switch будет медленнее?

Практически все svn операции требуют сетевое соединение. У гит их только две — push и fetch (pull). Скажем, создание бранча в гите это просто создание файла в каталоге ".git/refs/heads/" размером 40 байт, пара миллисекунд, на порядок меньше типичного пинга в сети.
update (pull) если без локальных изменений — просто fetch (который, например, Atlassian SourceTree делает в бэкграунде), и fast-forward merge — просто распаковка изменённых файлов в working copy.

SJA> Нет, у нас другой процесс. Но я имел в виду просмотр *своих* изменений перед комитом.

Удобнее изменения делать и просматривать по частям: первый коммит — поправить форматирование кода, второй коммит — рефакторинг, третий коммит — новые изменения. Пушим пачкой.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 17.09.2014 21:26 · (spelling) . Предыдущая версия .
Re[16]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 17.09.14 21:51
Оценка:
Здравствуйте, ., Вы писали:

.>Хорошо. Сойдёмся на том, что для некоторых корявых легаси систем в некоторых случаях svn или zip в качестве vcs могут быть лучше.

Если разницы между zip и svn не видно, то и смысла что-то обсуждать не вижу.
Re[8]: Git пивом облит?
От: The Passenger Голландия  
Дата: 17.09.14 22:40
Оценка:
Здравствуйте, Clerk, Вы писали:

C>Если я правильно понял — у нас есть, например, 5 файлов. Нам нужно закомитить сейчас 2 из них. Создаём коммит с 2мя файлами.

C>Теперь нам нужно отправить этот комит в основную ветку. Так как у нас есть изменённые ещё 3 файла — временно отправляем эти 3 файла
C>в стэш (временное хранилище). После этого мержим наш 2х файловый комит в основую ветку. Если позникают неоднозначности — фиксим и заканчиваем мердж.
C>Достаём из стэша оставшихся 3 файла и продолжаем над ними работу.

это уже звучит как минимум не "просто"

... а теперь еше усложним — представим что пока я правил эти 2 файла на остальные другие разрабы
уже повесили 100500 коммитов


я на самом деле не спец по гиту, просто бесит последняя программерская тенденция использовать то что модно а не что реально надо
Весь мир — Кремль, а люди в нем — агенты
Re[9]: Git пивом облит?
От: Clerk  
Дата: 18.09.14 05:30
Оценка:
Здравствуйте, The Passenger, Вы писали:

TP>это уже звучит как минимум не "просто"


TP>... а теперь еше усложним — представим что пока я правил эти 2 файла на остальные другие разрабы

TP>уже повесили 100500 коммитов
Да хоть сто тысяч миллионов. Git сам всё замержит.

TP>я на самом деле не спец по гиту, просто бесит последняя программерская тенденция использовать то что модно а не что реально надо

Люди используют то, что им удобно. Лёгкие бранчи и ненавязчивый мерж/ребэйз в svn тупо отсутствуют.
Re[2]: Git пивом облит?
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 18.09.14 08:27
Оценка:
Здравствуйте, uncommon, Вы писали:

U>В Git-е можно переписывать историю коммитов.


Вернее будет не "переписывать историю" а "определять историю".
HgLab: Mercurial Server and Repository Management for Windows
Re[17]: Git пивом облит?
От: . Великобритания  
Дата: 18.09.14 08:39
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

.>>Хорошо. Сойдёмся на том, что для некоторых корявых легаси систем в некоторых случаях svn или zip в качестве vcs могут быть лучше.

SJA>Если разницы между zip и svn не видно, то и смысла что-то обсуждать не вижу.
Разницы столько же как и между svn и git. А там уже от зрения зависит — кто что видит.
Шаг между CVCS и DVCS примерно такой же как и между бэкапами и VCS.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[16]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 18.09.14 10:07
Оценка:
D>Для более-менее честного тестирования импортируй svn в git ( git svn clone <svnurl> ) и гоняй тесты.

Чё-то не могу найти какой сервер можно запользовать. Обязательно чтоб умел аутентификацию и хотя бы базовую авторизацию. Желательно также чтоб легко инсталировался.

Есть такое на примете?

P.S. под винду

==
не актуально. вроде завёлся некий bonobo сервер
Отредактировано 18.09.2014 11:47 Sergey J. A. . Предыдущая версия . Еще …
Отредактировано 18.09.2014 10:10 Sergey J. A. . Предыдущая версия .
Re[17]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 18.09.14 11:58
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> D>Для более-менее честного тестирования импортируй svn в git ( git svn clone <svnurl> ) и гоняй тесты.


SJA> Чё-то не могу найти какой сервер можно запользовать. Обязательно чтоб умел аутентификацию и хотя бы базовую авторизацию. Желательно также чтоб легко инсталировался.


SJA> Есть такое на примете?


SJA> P.S. под винду


SJA> ==

SJA> не актуально. вроде завёлся некий bonobo сервер

Для чего сервер чтобы протестировать скорость работы с репозиторием git?
avalon 1.0rc3 build 430, zlib 1.2.5
Re[18]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 18.09.14 14:12
Оценка:
Здравствуйте, Dziman, Вы писали:

D>Для чего сервер чтобы протестировать скорость работы с репозиторием git?

Я ж хочу протестировать скорость в реальных условиях. Девелоперы обычно пушат свои изменения и пулят чужие.
Re[19]: Git пивом облит?
От: Dziman США http://github.com/Dziman
Дата: 18.09.14 14:32
Оценка:
Здравствуйте, Sergey J. A., Вы писали:

SJA> D>Для чего сервер чтобы протестировать скорость работы с репозиторием git?


SJA> Я ж хочу протестировать скорость в реальных условиях. Девелоперы обычно пушат свои изменения и пулят чужие.


Видимо ты всё-таки не понимаешь про какую скорость речь.
avalon 1.0rc3 build 430, zlib 1.2.5
Re[20]: Git пивом облит?
От: Sergey J. A. Беларусь  
Дата: 18.09.14 14:46
Оценка:
Здравствуйте, Dziman, Вы писали:

SJA>> Я ж хочу протестировать скорость в реальных условиях. Девелоперы обычно пушат свои изменения и пулят чужие.


D>Видимо ты всё-таки не понимаешь про какую скорость речь.


Поскольку равноценного аналога git commit в svn нет, то их и сравнивать особо незачем.
Буду сравнивать локальные операции — status, revert, diff
Сетевые операции pull/push — update/commit
Вот чекаут ещё сравню — в гите он просто реактивный, судя по всему.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.