LINUX.ORG.RU

Git с централизованным репозиторием

 


3

1

Всем привет

Объясните плз, в чем преимущество git перед svn, если используется централизованный репозиторий кода? Пришел на проект. В нем 2 разработчика, используют гит, разработчики друг с другом сливали между собой изменения.

Я в проекте реализую отдельную функциональность, для которой уже развернут svn-репозиторий. Я сразу был этому рад, так как никаких религиозных проблем с выбором vcs не имею, но svn знаю намного лучше git. Спросил у коллег, почему они его не используют. Ничего внятного мне не сказали, одно мычание. В их группу пришел еще один разработчик - они задумались над централизованным репозиторием, но это должен быть git-репозиторий. Обсуждают возможность купить корпоративный акк на gitbucket, на мои вопросы о целесообразности отвечают что я просто люблю svn, а им нравится git.

И да, они используют TortoiseGit для работы :-) Позже я узнал, что этот хайп с гитом накрыл практически всю контору в других городах. Теперь уже мне приходится объяснять, почему я использую svn вместо git.

Чего в гите такого крутого?


Ответ на: комментарий от r3lgar

я вроде не писал что гит централизован Я написал, что они хотят использовать централизованный гит-репозиторий, когда изначально был доступен svn-сервер

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

и назвал в Свою честь

там же только одна буква совпадает. даже если добавить G к его инициалам, скорее выйдет LGBT чем GIT.
вы всё врети!

system-root ★★★★★
()
Ответ на: комментарий от beastie

Его придумал Он Сам и назвал в Свою честь.

Господь Иссусович Торвальдс?

ugoday ★★★★★
()

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

xaizek ★★★★★
()
Ответ на: комментарий от system-root

На одной конфе Линус сказал:

«I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.»

Шутка в значении слова git:

  • A completely ignorant, childish person with no manners.
  • A person who feels justified in their callow behaviour.
  • A pubescent kid who thinks it's totally cool to act like a moron on the internet, only because no one can actually reach through the screen and punch their lights out.

http://www.urbandictionary.com/define.php?term=Git

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

Недостатки CVS/SVN: без сети никуда, lock/unlock канитель ... и что там ещё было?

А централизованный git-repo очень даже зравое и правильное решение. Пока вас 2-е — ещё куда ни шло, но с каждым новым лицом, кол-во необходимых синков для достижения «общей правды» растёт как N*(N+1)/2.

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

Автономность репозитория тут совсем не критична, этот вопрос даже как-то не обсуждается внутри офиса. Можно даже сказать, что если в офисе пропадет коннект до серверов, то все пойдут на обед или поедут домой работать через vpn c рабочим ноутом.

Одновременная работа с одним файлом в svn вроде уже давно не проблема.

sotlef
() автор топика

Git просто стандартом стал. Всё очень удобно, есть gogs, gitlab, https://gitea.io

Самый удобный в cli: mercurial, git самый навороченный и самый быстрый. Как раз таки SVN - централизованное хранилище, а git - де-централизованно. SVN - прошлый век, никаких преимуществ по сравнению с git/mercurial у него нет. В основном в выборе cvs стоит вопрос хостинга, и тут по мне так лучше всех выглядят gitlab/bitbucket. Если команда состоит из сильно удаленной команды, то Github. Github самый безгемморный и простой, но цены выше. В моих командах использовался либо Github в 80% случаев, либо Gitlab на своей VDS 20%.

menangen ★★★★★
()
Ответ на: комментарий от system-root

Эх, не знаете вы истории ...

«I'm an egotistical bastard, and I name all my projects after myself. First 'Linux', now 'git'.» (c)

PS: git — unpleasant person in British English slang

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

Сразу сказал) Почему тему на линукс.орг.ру создал - потому что тут аудитория помоему лучше всего разбирается в гит в рунете

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

Так в проекте всегда есть origin/master. Но имея копию репозитория, ты можешь переназначить для себя этот origin/master и лить в него, но так же можешь за это получить по черепушке от тимлида, особенно, если проект закрытый.

r3lgar ★★★★★
()

Рассказывать тебе о преимуществах git можно было лет 5 назад, когда у него были конкуренты, была проблема выбора и были сомневающиеся. А сейчас он стандарт, SVN давно закопан вслед за CVS, а тратить время на рассказы разморозившимся не имеет никакого смысла. Просто прими это как данное.

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

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

sotlef
() автор топика

В гите с центральным репом очень много смысла:

1) В гите у каждого разработчика есть СВОЯ ПОЛНАЯ история, полный ее клон.

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

б) Можно смотреть историю мержей, можно делать чекаут отдельного файла от отдельного комита, можно сравнивать коммиты, ветки.

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

г) Ты всегда можешь отполировать свой комит до пуша, или даже объединить свой коммит на несколько.

2) Работа с ветками в гите, да и то как ветки сделаны идеологически и технически - это песня-сказка! Это отличный, мощный и довольно логичный инструмент(логичным и очевидным он станет когда разберешься, после этого от svn, tfs веток будет подтаншивать)

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

Спасибо. На такие вот комментарии я надеялся в этой теме)

sotlef
() автор топика

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

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

даже объединить свой коммит на несколько

создать коммит из нескольких*

Так же можно менять им коменты и прочее. Желательно на незапушеных изменениях (но это уже совсем другая история).

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

Поясню. Софт - я тут имел в виду полноценый сервак гит с веб мордой, тулами управления, управлением прав доступа и всем таким прочим. Для простейшего центрального репа гита достаточно линукс машинки с ссш и гит папкой там.

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

Коллеги не шмогли настроить гит на внутреннем генту-серваке. С правами что-то у них там не получилось

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

Посмотрите на gitolite, я лично не использовал никогда, но вроде что-то для управления и запуска сервака гитом. но в принципе прикупить инструмент не такая уж и проблема.

Dudraug ★★★★★
()

И на последок. В svn нет аналогов гитовским merge и rebase.

свновский мердж - это совсем другое и куда менее функциональное и удобное чем оба подхода гита.

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

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

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

Я это влёт подымал - там абсолютно ничего сложного(gitolite даже приколен - права доступа к git-репам хранятся в git - это мегакруто!), но ушел на gitlab, т.к. веб-морда очень помогает, например, при просмотре сложного ветвления. Ну и правами рулить легче когда пользователи запиханы в LDAP. gitolite так тоже можно настроить ЕМНИП, но все равно gitlab достаточно крут(активно косит под github, может для кого-то это и минус). Вроде есть и другие морды для git разной степени навороченности, но я плотно щупал только gitlab.

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

с руками у них что-то там

есть http://gitblit.com/ - там скачать-запустить и всё, хотя конечно лучше потом настроить

Deleted
()

можно месяцами пилить фичу в отдельной ветке и каждый день брать туда обновления из основной ветки

anonymous
()

У тебя там в svn хотя бы локальные бранчи есть? Ну, чтобы спокойно поковыряться, не трогая центральный репозиторий вообще.

А если центральный репозиторий ляжет — пропадёт вообще всё, или только большая часть? А разработчики, у каждого из которых — своя модификация, смогут это дело слить? В случае git это тривиальная задача.

Я уж не говорю, что в случае git бранчи мёржаться почти всегда в автоматическом режиме, а svn из этого вечно делает головную боль.

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

пусть взрослого кого админа позовут. Срсли, для большинства гитовских вебморд/систем_управления_репами знание даже факта существования этого гита особо не требуется.

от себя порекомендую gitblit. Правда, в основном из-за вкуса фломастеров (там ява, некоторым из-за этого СЛОЖНА!!!11 подсунуть серверу один war-архив)

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

У тебя там в svn хотя бы локальные бранчи есть?

У svn нету локальных бранчей. В свн вообще бранч это просто путь в репозитории, /trunk, /branches/production ты просто мержишь как бы два дерева файлов. Поэтому в гите часто на каждую фичу делают по бранчу, потому что просто и удобно, а в свн держат по минимуму бранчей, абы не запутаться.

goingUp ★★★★★
()

Чего в гите такого крутого?

GitHub. А так — Mercurial лучше :D

KRoN73 ★★★★★
()

в чем преимущество git перед svn, если используется централизованный репозиторий кода?

А так, в этом случае преимущество в том, что если накрывается центральный репозиторий, то SVN превращается в тыкву. А Git/Mercurial могут спокойно работать дальше, заливая изменения на другой сервер или обмениваясь коммитами прямо между участниками.

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

Автономность репозитория тут совсем не критична

Это не подумавши. Наблюдал истеорию с особенностью в новой прошивке фиревола и любителями SVNа, распределённость полезная фича.

DonkeyHot ★★★★★
()

Чет никто ветки не упоминает. В Гите удобные и интуитивно понятные ветки, в отличии от SVN.

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

Как минимум gitolite (у меня так настоен mirror на github). Другие скорей всего тоже, но я их толком не пользовал.

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

В Гите удобные и интуитивно понятные ветки,

Запортишь работу раз-другой и интуитивно понимаешь, что пора бы почитать документацию.

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

Или просто делать бэкапные коммиты в оффлайне.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.