LINUX.ORG.RU

svn vs git?


0

0

Вопрос знающим людям: чем принципиально различаются эти две системы, достоинства и недостатки и конечно ваши личные впечатления?

>чем принципиально различаются эти две системы

Централизованная и распределённая. Это два принципиальных различия. Остальное - детали.

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

Не народ, содержательно можно как-то про достоинства и недостатки применения? Мне на первом этапе как-то плохо понятны плюсы и минусы как распределенного хранилища так и централизованного. Может про централизованное я более и менее понимаю а вот про распределенное пока понимаю очень слабо.

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

Просто используйте то, что лучше подходит для вашего случая/задачи.

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

> Может про централизованное я более и менее понимаю а вот про распределенное пока понимаю очень слабо.

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

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

>Просто не используйте git.

А чем от так плох?

Комманнды у него местами не шибко очевидные (особенно уделение remote branch'а при помощи push), но если это освоить, что несложно, то все очень удобно.

ratatosk
()

поиск рулит. каждую неделю это спрашивают. и всегда это кончается срачем.

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

> Не народ, содержательно можно как-то про достоинства и недостатки применения? Мне на первом этапе как-то плохо понятны плюсы и минусы как распределенного хранилища так и централизованного.

Ты никогда не работал с VCS вообще? Тогда для тебя лучше распределенная система, ИМХО. Другое дело, что не Git (он сделан инопланетянами для инопланетян и их союзников), а что-то вроде Mercurial.

> Может про централизованное я более и менее понимаю а вот про распределенное пока понимаю очень слабо.

Самое лучшее введение в тему написал Jeff Garzik, но для BitKeeper ;)

www.linuxinsight.com/files/ols2002/henson-reprint.pdf

http://lwn.net/2002/0228/a/bk-thing.php3

Еще есть более Mercurial-специфичная документация:

http://www.selenic.com/mercurial/wiki/index.cgi/UnderstandingMercurial

http://hgbook.red-bean.com/read/collaborating-with-other-people.html Chapter 5, Collaboration models.

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

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


А в случае subversion это сложно? Или я не понял вас?

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

> А в случае subversion это сложно?

я имел в виду без постоянного подключения к сети.

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

>Может про централизованное я более и менее понимаю а вот про распределенное пока понимаю очень слабо.

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

Распределённое. С каждым рабочим каталогом у тебя есть свой локальный репозиторий. Обычно прямо там же, в скрытом каталоге, например, .hg или .git в корне проекта. Для любого каталога в любой момент можешь сделать отдельный репозиторий. hg init - и у тебя всё готово к работе. Можешь закоммитить туда изменения, откатиться назад и т.п. Кроме этого. Ты можешь взять и пропихнуть изменения, накопившиеся в репозитории в другой репозиторий. Он может быть удалённым, может на твоей же машине где-то в другом каталоге. Точно также можно забрать изменения с другого репозитория и провести до полученного результата апдейт своих рабочих каталогов.

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

Прямо на локалхосте :)

Заходишь в любой каталог и жмёшь
hg init

Потом hg add на нужные файлы/каталоги.

hg ci - коммит
hg up - апдейт

Красиво посмотреть результат под Linux можно в hgview, под Windows - в TortoiseHG.

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

>> Красиво посмотреть результат под Linux можно в hgview

> Еще новые hg даже в браузере рисуют граф версий.


hg serve

// К.О.

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

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

Я работаю с SVN и легко переключаюсь между двумя ноутами и десктопом. Я обладаю тайным знанием?

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

> Я работаю с SVN и легко переключаюсь между двумя ноутами и десктопом. Я обладаю тайным знанием?

Нет, у тебя постоянно есть сеть.

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

А, ну хорошо. А то я уж было испугался :)

MYMUR ★★★★
()

Вы еще используете централизованный репозиторий? Тогда мы идем к вам!

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

> Ты никогда не работал с VCS вообще? Тогда для тебя лучше распределенная система, ИМХО. Другое дело, что не Git (он сделан инопланетянами для инопланетян и их союзников), а что-то вроде Mercurial.

а сколько ты поработал с каждой из систем?

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

По всему интернету говорят, что git и hg - практически идентичны. Меркуриал чуть-чуть проще, но не сильно. Зато git он быстрее и занимает меньше места. Вот к прмимеру http://www.macrobug.com/blog/2009/01/27/git-versus-mercurial/ или http://joshcarter.com/productivity/svn_hg_git_for_home_directory или http://code.seanhess.net/?p=12.

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

> git vs mercurial - побеждает git:

Рассказать почему?

> что git и hg - практически идентичны. Меркуриал чуть-чуть проще, но не сильно. Зато git он быстрее и занимает меньше места.

Ошибаешься.

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

> Нет, у тебя постоянно есть сеть.

Т.е. git-подобная дрянь для нищебродов, у которых нет постоянного доступа к сети?

ЗЫ Я пользуюсь svn и только svn уже долго, давно и никогда не имел никаких проблем :)

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

> Т.е. git-подобная дрянь для нищебродов, у которых нет постоянного доступа к сети?

Это ты нищеброд:) в самолетах видимо не летаешь раз в неделю между Санта-Кларой, Москвой и Шанхаем.

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

> Т.е. git-подобная дрянь для нищебродов, у которых нет постоянного доступа к сети?

> ЗЫ Я пользуюсь svn и только svn

Располагайтесь поудобнее на кушетке, больной. Рассказывайте, не сдерживайтесь.

> уже долго

Если что, я пользовался SVN с версии 0.14.

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

> а сколько ты поработал с каждой из систем?

Года 3-4 я выбирал между Git, Mercurial и Bazaar - догадайся, что я выбрал. Правда, тогда Git пользоваться было просто невозможно (см. cogito и Xen).

> По всему интернету говорят, что git и hg - практически идентичны.

По идеологии. Обе основаны на SHA*, обе ведут расределенный DAG версий. На этом сходства кончаются - "под капотом" они очень разные.

> Меркуриал чуть-чуть проще, но не сильно.

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

Mercurial сильно проще. Сейчас приходится немного иметь дело с Git - его точно написали инопланетяне.

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

> Сейчас приходится немного иметь дело с Git - его точно написали инопланетяне.

Угу. Один толстый инопланетный тролль :) Ему еще его инопланетный мозг не дает перейти на микроядерность... А вообще согласен, ни разу не очевидный и не понятный, не только интуитивно, интерфейс.

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

(хотя вопрос ко всем)

по ссылке на сравнение говорят, что у базара имеется Intelligent Merging after Moves or Renames, а все остальные довольствуются rename=copy+delete

чем оно Intelligent и какие это реально дает преимущества?

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

> в самолетах видимо не летаешь раз в неделю между Санта-Кларой, Москвой и Шанхаем.

Не, не летаю :) А что мешает сделать up перед взлетом и ci после посадки?

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

> Если что, я пользовался SVN с версии 0.14.

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

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

>Т.е. git-подобная дрянь для нищебродов, у которых нет постоянного доступа к сети?

Объясняли же уже не раз основной бонус.

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

В DVCS ты можешь сколько угодно коммитить/откатывать каждый мелкий чих. И только готовый результат заливать на центральный репозиторий.

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

> Т.е. при больших изменениях тебе придётся или коммитить в основной репозиторий недоработки, или подолгу обходиться без коммитов, пока не сделаешь полный цикл работы с доведением и тестированием.

Branch и коммить в него сколько угодно. Довел до ума - вливай в trunk. Допилили версию до релиза - клади ее в tags. Зато в любой момент любая версия доступна каждому участнику команды.

Я привык именно к такой схеме работы - в транке всегда лежит актуальная dev-версия _рабочего_ кода, которую можно собрать и запустить - она будет работать. В бранчах - те версии, над которыми работают участники команды - там могут быть и недоделки, и недоработки. Team-лидеру, кстати, удобнее отслеживать активность и результативность каждого участника команды по коммитам в свои бранчи. В тегах релизы.

При этом эта схема гибка и может подстраиваться под любую команду с любым циклом разработки :)

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

>Branch и коммить в него сколько угодно.

Всё равно это менее удобно. Бранчи - это аналоги Хэдов в том же Mercurial, а не аналоги самостоятельной работы :)

Бранчи - в плане истории изменений отдельная сущность. Ты потом не сведёшь вместе две истории.

...

В общем, я несколько лет работал с SVN и CVS, и уже года полтора, как работаю с Mercurial. Так вот, DVCS намного лучше :)

...

Хотя я раньше тоже был фанатом SVN (по принципу «работает? - ну так не меняй ничего») и перейти на Mercurail меня вынудил факт, что в своё время это была единственная VCS, способная работать на удалённых FS. Скажем, у тебя к удалённому хостингу есть ssh-доступ, но там нет ни svn, ни cvs, ни hg. В случае Mercurial (и сейчас (но не раньше) - с git) просто монтируешь удалённую систему по sshfs и работаешь со своей машины. SVN в этом случае обламывается.

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

KRoN73 ★★★★★
()

Главное преимущество распределенной системы (git) заключается в независимости от сервера.
Основные недостатки:
- отсутствие авторизации к отдельным файлам/каталогам;
- невозможность работать с частичной копией репозитория (в плане частичной истории коммитов и в плане частичного содержимого каталогов); пока что каждому приходится делать буквально свой собственный сервер с полным репозиторием и полной историей, даже если нужно изменить всего-лишь один файл.

Достаточно избавится от этих недостатков - и у SVN не останется шансов. Не знаю про git, а у mercurial уже есть какие-то успехи в этом плане.

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

> Прямо на локалхосте :)

ААА!!! клевая штука, спасибо! а то я уж подумывал поднимать сервачок на старом ноуте и там svn заводить...

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

>> Если что, я пользовался SVN с версии 0.14.

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

Вольно, рядовой.

> Branch и коммить в него сколько угодно.

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

> В бранчах - те версии, над которыми работают участники команды - там могут быть и недоделки, и недоработки

...с тем недостатком, что у вас история "грязная" - в ней зафиксированы ненужные ошибки (потому что откатить коммит вы не можете, а средства вроде mq для SVN не доведены до ума). Догадаться, чем вредна "грязная" история, остается как упражнение читателю.

Всё остальное, о чем ты сказал, делается в том же Mercurial не сложнее, чем в SVN.

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