Почему Git лучше Subversion?

Я использую Subversion несколько лет, а после использования 9X_git-commands SourceSafe я просто обожаю Subversion. В сочетании 9X_subversion с TortoiseSVN я даже представить не могу, что может 9X_svn быть лучше.

Тем не менее, растет число разработчиков, утверждающих, что 9X_svn у Subversion есть проблемы и что нам следует 9X_svn перейти на новое поколение распределенных 9X_subversion систем контроля версий, таких как Git.

Чем Git 9X_subversion лучше Subversion?

394
0
30
Общее количество ответов: 30

Ответ #1

Ответ на вопрос: Почему Git лучше Subversion?

Git не лучше Subversion. Но и не хуже. Это 9X_subversion другое.

Ключевое отличие в том, что он децентрализован. Представьте, что 9X_git вы разработчик в дороге, вы разрабатываете 9X_svn на своем ноутбуке и хотите иметь систему 9X_git управления версиями, чтобы иметь возможность 9X_svn вернуться на 3 часа назад.

Проблема с Subversion: репозиторий 9X_svn SVN может находиться в месте, до которого 9X_git-commands вы не можете добраться (в вашей компании, и 9X_git-commands у вас нет Интернета в данный момент), вы 9X_git не можете зафиксировать. Если вы хотите 9X_subversion сделать копию своего кода, вы должны буквально 9X_subversion скопировать/вставить его.

С Git у вас нет 9X_git этой проблемы. Ваша локальная копия является 9X_git репозиторием, и вы можете зафиксировать 9X_git его и получить все преимущества системы 9X_subversion управления версиями. Когда вы восстановите 9X_subversion подключение к основному репозиторию, вы 9X_git сможете зафиксировать его.

На первый взгляд 9X_git-commands это выглядит хорошо, но просто имейте в 9X_subversion виду дополнительную сложность этого подхода.

Git 9X_svn кажется «новой, блестящей, крутой» вещью. Это 9X_git ни в коем случае не плохо (в конце концов, Линус 9X_svn написал это для разработки ядра Linux), но 9X_git-commands я чувствую, что многие люди прыгают на поезде 9X_subversion «Распределенного контроля версий» только 9X_git-commands потому, что он новый и написан Линусом Торвальдсом, на 9X_git-commands самом деле не зная, почему / если это лучше.

У 9X_git-commands Subversion есть проблемы, но есть и Git, Mercurial, CVS, TFS 9X_git или что-то еще.

Редактировать: Итак, этому ответу уже год, и 9X_git он по-прежнему вызывает много голосов, поэтому 9X_subversion я подумал, что добавлю еще несколько объяснений. За 9X_git последний год, прошедший с момента написания 9X_git-commands этой статьи, Git получил большой импульс 9X_subversion и поддержку, особенно после того, как такие 9X_git сайты, как GitHub, действительно стали популярными. В 9X_subversion настоящее время я использую как Git, так 9X_svn и Subversion, и я хотел бы поделиться своим 9X_git личным мнением.

Во-первых, Git может поначалу 9X_svn сбивать с толку при децентрализованной работе. Что 9X_subversion такое пульт? и Как правильно настроить начальный 9X_git-commands репозиторий? - это два вопроса, которые 9X_svn возникают в начале, особенно по сравнению 9X_svn с простым "svnadmin create" в SVN, "git 9X_git-commands init" в Git может принимать параметры --bare 9X_git и --shared, что кажется "правильным" способом 9X_svn настройки централизованного репозиторий. Для 9X_subversion этого есть причины, но это добавляет сложности. Документация 9X_svn команды «checkout» очень сбивает с толку 9X_subversion людей, которые переходят — «правильный» способ 9X_git кажется «git clone», в то время как «git 9X_git-commands checkout», кажется, переключает ветки.

Git 9X_svn ДЕЙСТВИТЕЛЬНО сияет, когда вы децентрализованы. У 9X_git-commands меня есть сервер дома и ноутбук в дороге, и 9X_svn SVN здесь просто не работает. С SVN я не 9X_git могу иметь локальный контроль версий, если 9X_git я не подключен к репозиторию (да, я знаю 9X_svn о SVK или о способах копирования репо). В 9X_git-commands Git это режим по умолчанию. Однако это дополнительная 9X_git команда (git commit фиксирует локально, тогда 9X_subversion как git push origin master отправляет основную 9X_subversion ветку на удаленный сервер с именем «origin»).

Как 9X_subversion сказано выше: Git добавляет сложности. Два 9X_subversion режима создания репозиториев: проверка и 9X_subversion клонирование, фиксация и отправка... Вы 9X_svn должны знать, какие команды работают локально, а 9X_git какие работают с «сервером» (я предполагаю, что 9X_subversion большинству людей по-прежнему нравится центральный 9X_git-commands «мастер-репозиторий»). ).

Кроме того, инструментарий 9X_git по-прежнему недостаточен, по крайней мере, для 9X_git Windows. Да, есть надстройка Visual Studio, но 9X_subversion я все еще использую git bash с msysgit.

Преимущество 9X_git-commands SVN в том, что его НАМНОГО проще освоить: есть 9X_git ваш репозиторий, все изменения к нему, если 9X_git-commands вы знаете, как создавать, фиксировать и 9X_git-commands проверять, и вы готовы к работе, и можете 9X_git собирать такие вещи, как ветвление, обновление 9X_git и т. д. позже.

Преимущество Git в том, что 9X_subversion он НАМНОГО лучше подходит, если некоторые 9X_git-commands разработчики не всегда подключены к главному 9X_git-commands репозиторию. Кроме того, это намного быстрее, чем 9X_git SVN. И из того, что я слышал, поддержка 9X_git-commands ветвления и слияния намного лучше (чего 9X_svn и следовало ожидать, поскольку это основные 9X_git-commands причины, по которым это было написано).

Это 9X_git-commands также объясняет, почему о нем так много 9X_git говорят в Интернете, поскольку Git идеально 9X_git подходит для проектов с открытым исходным 9X_subversion кодом: просто создайте его форк, зафиксируйте 9X_git-commands ваши изменения в своем собственном форке, а 9X_svn затем попросите мейнтейнера первоначального 9X_subversion проекта внести ваши изменения. С Git это 9X_git просто работает. Действительно, попробуйте 9X_subversion на Github, это волшебство.

Я также вижу мосты 9X_svn Git-SVN: центральный репозиторий представляет 9X_git-commands собой репозиторий Subversion, но разработчики 9X_subversion локально работают с Git, а затем мост отправляет 9X_git свои изменения в SVN.

Но даже с этим длинным 9X_git дополнением я по-прежнему придерживаюсь 9X_svn своей основной идеи: Git не лучше и не хуже, он 9X_git просто другой. Если у вас есть потребность 9X_svn в «Offline Source Control» и желание потратить 9X_git-commands дополнительное время на его изучение, это 9X_svn фантастика. Но если у вас строго централизованный 9X_subversion контроль версий и/или вы изо всех сил пытаетесь 9X_git внедрить контроль версий в первую очередь, потому 9X_git что ваши коллеги не заинтересованы, тогда 9X_git простота и превосходный инструментарий (по 9X_subversion крайней мере, в Windows) SVN сияют.

548
16

  • Мой опыт работы с git - не совсем «откровение, изменяющее жизнь». Я считаю, что это отличный инструмент, когда он работает, а когда нет, тогда он кажется довольно неотшли ...

Ответ #2

Ответ на вопрос: Почему Git лучше Subversion?

С Git вы можете делать практически все в 9X_git-commands автономном режиме, потому что у каждого 9X_subversion есть свой собственный репозиторий.

Создавать 9X_subversion ветки и объединять ветки очень просто.

Даже 9X_git если у вас нет прав на фиксацию проекта, вы 9X_svn все равно можете иметь свой собственный 9X_git-commands онлайн-репозиторий и публиковать «push-запросы» для 9X_svn ваших исправлений. Все, кому нравятся ваши 9X_git-commands патчи, могут включить их в свой проект, в 9X_subversion том числе и официальные сопровождающие.

Разветвить 9X_git проект, модифицировать его и при этом продолжать 9X_svn сливать исправления ошибок из ветки HEAD 9X_git – это тривиально.

Git работает для разработчиков 9X_git-commands ядра Linux. Это означает, что он действительно 9X_svn быстрый (так и должно быть) и масштабируется 9X_git-commands до тысяч участников. Git также использует 9X_git-commands меньше места (до 30 раз меньше места для 9X_svn репозитория Mozilla).

Git очень гибкий, очень 9X_svn TIMTOWTDI (есть несколько способов сделать 9X_subversion это). Вы можете использовать любой рабочий 9X_subversion процесс, который захотите, и Git его поддержит.

Наконец, есть 9X_svn GitHub, отличный сайт для размещения ваших репозиториев 9X_git Git.

Недостатки Git:

  • его намного сложнее изучить, потому что в Git больше концепций и больше команд.
  • ревизии не имеют номеров версий, как в subversion
  • многие команды Git зашифрованы, а сообщения об ошибках очень неудобны для пользователя
  • ему не хватает хорошего графического интерфейса (например, великолепного TortoiseSVN)

145
5

  • Я согласен. Использую как SVN, так и GIT (примерно с 6 месяцев). Честно говоря, я люблю git намного больше, чем SVN. Просто нужно время, чтобы этому научи ...

Ответ #3

Ответ на вопрос: Почему Git лучше Subversion?

Другие ответы хорошо объяснили основные 9X_git-commands функции Git (и это здорово). Но также есть 9X_git так много маленьких способов, которыми Git ведет 9X_git-commands себя лучше и помогает сохранить мою жизнь 9X_subversion более разумной. Вот некоторые из мелочей:

  1. В Git есть команда «очистить». SVN отчаянно нуждается в этой команде, учитывая, как часто она будет выгружать лишние файлы на ваш диск.
  2. В Git есть команда bisect. Это приятно.
  3. SVN создает каталоги .svn в каждой отдельной папке (Git создает только один каталог .git). Каждый сценарий, который вы пишете, и каждый выполняемый вами grep должны быть написаны так, чтобы игнорировать эти каталоги .svn. Вам также понадобится целая команда («svn export»), чтобы получить нормальную копию ваших файлов.
  4. В SVN каждый файл и папка могут относиться к разным ревизиям или ветвям. Поначалу кажется, что иметь такую ​​свободу приятно. Но на самом деле это означает, что существует миллион различных способов, с помощью которых ваша местная касса может полностью испортиться. (например, если "svn switch" не работает на полпути или вы неправильно ввели команду). И самое страшное: если вы когда-нибудь попадете в ситуацию, когда часть ваших файлов идет из одного места, а часть из другого, то "svn status" подскажет, что все в норме. Вам нужно будет сделать «svn info» для каждого файла/каталога, чтобы узнать, насколько странные вещи. Если «git status» говорит вам, что все нормально, то вы можете быть уверены, что все действительно нормально.
  5. Вы должны сообщать SVN всякий раз, когда вы что-то перемещаете или удаляете. Git сам разберется.
  6. Игнорировать семантику проще в Git. Если вы проигнорируете шаблон (например, *.pyc), он будет проигнорирован для всех подкаталогов. (Но если вы действительно хотите игнорировать что-то только для одного каталога, вы можете). С SVN кажется, что нет простого способа игнорировать шаблон во всех подкаталогах.
  7. Еще один пункт, связанный с игнорированием файлов. Git позволяет иметь «частные» настройки игнорирования (используя файл .git/info/exclude), которые не повлияют ни на кого другого.

110
5

  • Объявление. 7. В современном git вы также можете настроить индивидуальное игнорирование для каждого ...

Ответ #4

Ответ на вопрос: Почему Git лучше Subversion?

«Why Git is Better than X» описывает различные плюсы и минусы Git 9X_svn по сравнению с другими SCM.

Кратко:

  • Git отслеживает контент, а не файлы
  • Ветви легкие, а слияние легко, я имею в виду действительно легко.
  • Он распределен, в основном каждый репозиторий - это филиал. На мой взгляд, гораздо проще разрабатывать одновременно и совместно, чем с Subversion. Это также делает возможной разработку офлайн.
  • Он не требует никакого рабочего процесса, как видно из the above linked website, с Git возможно множество рабочих процессов. Рабочий процесс в стиле Subversion легко имитировать.
  • Репозитории Git намного меньше по размеру, чем репозитории Subversion. Есть только один каталог «.git», в отличие от десятков репозиториев «.svn» (обратите внимание на Subversion 1.7 и выше now uses a single directory, например Git.)
  • Промежуточная область великолепна, она позволяет вам видеть изменения, которые вы фиксируете, фиксировать частичные изменения и выполнять различные другие действия.
  • Хранение бесценно, когда вы занимаетесь «хаотической» разработкой или просто хотите исправить ошибку, пока вы все еще работаете над чем-то другим (в другой ветке).
  • Вы можете переписать историю, что отлично подходит для подготовки наборов исправлений и исправления ваших ошибок (перед публикацией коммитов).
  • … и многое другое.

Есть некоторые 9X_git недостатки:

  • Для него пока не так много хороших графических интерфейсов. Это ново, а Subversion существует намного дольше, так что это естественно, поскольку в разработке находится несколько интерфейсов. Вот несколько хороших: TortoiseGit и GitHub for Mac.
  • Частичное извлечение / клонирование репозиториев в настоящий момент невозможно (я читал, что он находится в разработке). Однако есть поддержка подмодулей. Git 1.7+ supports sparse checkouts.
  • Это может быть труднее выучить, хотя я не обнаружил, что это так (около года назад). Git недавно улучшил свой интерфейс и стал довольно удобным для пользователя.

В самом упрощенном использовании 9X_git-commands Subversion и Git почти одинаковы. Нет большой 9X_git-commands разницы между:

svn checkout svn://foo.com/bar bar cd bar # edit svn commit -m "foo" 

и

git clone [email protected]:foo/bar.git cd bar # edit git commit -a -m "foo" git push 

На самом деле Git лучше всего 9X_subversion работает с другими людьми.

56
2

  • Вы говорите, что GIT отслеживает контент, а не файлы. Я обнаружил, что SVN также делает это: я просто внес изменения в файл и сохранил его. SVN показал файл к ...

Ответ #5

Ответ на вопрос: Почему Git лучше Subversion?

Google Tech Talk: Линус Торвальдс на git

http://www.youtube.com/watch?v=4XpnKHJAok8

Страница 9X_subversion сравнения Git Wiki

http://git.or.cz/gitwiki/GitSvnComparsion

54
2

  • Этот тоже неплохой. Это от одного из коммитеров git, и о ...

Ответ #6

Ответ на вопрос: Почему Git лучше Subversion?

Ну, раздали. Тесты показывают, что он значительно 9X_git быстрее (учитывая его распределенный характер, такие 9X_subversion операции, как diff и журналы, все локальны, поэтому, конечно, в 9X_svn этом случае он невероятно быстрее), а рабочие 9X_subversion папки меньше (что до сих пор поражает меня).

Когда 9X_git вы работаете над subversion или любой другой 9X_git-commands клиент/серверной системой управления версиями, вы, по 9X_git сути, создаете рабочие копии на своем компьютере, извлекая версии. Это 9X_git-commands представляет собой моментальный снимок того, как 9X_git-commands выглядит репозиторий. Вы обновляете свою 9X_svn рабочую копию через обновления, а репозиторий 9X_git-commands обновляете через коммиты.

При распределенном 9X_git контроле версий у вас есть не моментальный 9X_svn снимок, а вся кодовая база. Хотите сделать 9X_git diff с 3-месячной версией? Нет проблем, 3-месячная 9X_git-commands версия все еще на вашем компьютере. Это 9X_git-commands не только означает, что все работает намного 9X_subversion быстрее, но даже если вы отключены от центрального 9X_subversion сервера, вы все равно можете выполнять многие 9X_svn операции, к которым вы привыкли. Другими 9X_git словами, у вас есть не только моментальный 9X_subversion снимок данной ревизии, но и вся кодовая 9X_subversion база.

Можно подумать, что Git займет кучу 9X_git места на вашем жестком диске, но судя по 9X_git-commands паре тестов, которые я видел, на самом деле 9X_git он занимает меньше. Не спрашивайте меня 9X_git-commands как. Я имею в виду, он был построен Линусом, он, я 9X_subversion думаю, кое-что знает о файловых системах.

26
2

  • Я не удивлен, что "рабочие папки" git (т.е. репозитории) меньше, чем рабочие копии svn, потому что даже репозитории svn мень ...

Ответ #7

Ответ на вопрос: Почему Git лучше Subversion?

Основные моменты, которые мне нравятся в 9X_subversion DVCS:

  1. Вы можете совершать сломанные вещи. Это не имеет значения, потому что другие люди не увидят их, пока вы не опубликуете. Время публикации отличается от времени фиксации.
  2. Благодаря этому вы можете чаще совершать коммиты.
  3. Вы можете объединить полную функциональность. У этого функционала будет своя ветка. Все коммиты этой ветки будут связаны с этим функционалом. Вы можете сделать это с помощью CVCS, однако по умолчанию используется DVCS.
  4. Вы можете выполнить поиск в своей истории (найти, когда функция изменилась)
  5. Вы можете отменить пул, если кто-то облажался в основном репозитории, вам не нужно исправлять ошибки. Просто очистите слияние.
  6. Когда вам нужен контроль версий в любом каталоге, выполните: git init. и вы можете зафиксировать, отменить изменения и т.д...
  7. Это быстро (даже на Windows)

Основная причина относительно большого 9X_svn проекта — улучшенная коммуникация, созданная 9X_git пунктом 3. Остальное — приятные бонусы.

22
0

Ответ #8

Ответ на вопрос: Почему Git лучше Subversion?

Самое смешное: Я размещаю проекты в репозиториях 9X_git Subversion, но получаю к ним доступ через 9X_git команду Git Clone.

Пожалуйста, прочтите Develop with Git on a Google Code Project

Хотя 9X_svn код Google на родном языке говорит Subversion, вы 9X_git можете легко использовать Git во время 9X_svn разработки. В поисках "git svn" предполагает, что 9X_subversion эта практика широко распространены, и 9X_git-commands мы также призываем вас поэкспериментировать 9X_svn с ним.

Использование Git в репозитории Svn 9X_git-commands дает мне следующие преимущества:

  1. Могу работать распределен на нескольких машины, фиксирующие и вытягивающие из и к ним
  2. У меня есть центральный backup/public репозиторий svn, который могут проверить другие
  3. И они могут свободно использовать Git для себя

15
1

  • это немного устарело, код Google работает постоянно, по ...

Ответ #9

Ответ на вопрос: Почему Git лучше Subversion?

Все ответы здесь ожидаемы, ориентированы 9X_git-commands на программистов, однако что произойдет, если 9X_git ваша компания использует контроль версий 9X_git вне исходного кода? Существует множество 9X_svn документов, не являющихся исходным кодом, для 9X_git которых используется контроль версий, и 9X_git они должны находиться рядом с кодом, а не 9X_git-commands в другой CMS. Большинство программистов 9X_svn не работают изолированно - мы работаем для 9X_subversion компаний как часть команды.

Помня об этом, сравните 9X_subversion простоту использования как клиентских инструментов, так 9X_subversion и обучения между Subversion и git. Я не 9X_git вижу сценария, при котором любую распределенную 9X_subversion систему контроля версий было бы проще использовать 9X_svn или объяснить непрограммисту. Мне бы хотелось, чтобы 9X_svn меня доказали, что я ошибаюсь, потому что 9X_git тогда я смогу оценить git и действительно 9X_git-commands надеяться, что он будет принят людьми, которым 9X_svn нужен контроль версий, но не программистами.

Даже 9X_subversion в этом случае, если бы руководство спросило, почему 9X_git-commands мы должны перейти от централизованной к 9X_git распределенной системе контроля версий, мне 9X_svn было бы трудно дать честный ответ, потому 9X_git что он нам не нужен.

Отказ от ответственности: я 9X_svn рано заинтересовался Subversion (около v0.29), поэтому, очевидно, я 9X_git-commands предвзято, но компании, в которых я работал 9X_git-commands с того времени, получают пользу от моего 9X_svn энтузиазма, потому что я поощрял и поддерживал 9X_subversion его использование. . Я подозреваю, что именно 9X_git так и происходит с большинством компаний-разработчиков 9X_git программного обеспечения. Учитывая, что 9X_subversion так много программистов подключаются к git, мне 9X_subversion интересно, сколько компаний упустят преимущества 9X_svn использования контроля версий вне исходного 9X_git-commands кода? Даже если у вас есть отдельные системы 9X_git-commands для разных команд, вы упускаете некоторые 9X_git-commands преимущества, такие как (унифицированная) интеграция 9X_git-commands отслеживания проблем, при этом увеличивая 9X_git-commands требования к обслуживанию, оборудованию 9X_svn и обучению.

11
3

  • @inger Я не думаю, что вы можете сказать «это единственная веская причина», поддержка инструментов AFAIK для Subversion намного превосходит Git, например TortoiseSVN и ин ...

Ответ #10

Ответ на вопрос: Почему Git лучше Subversion?

Subversion по-прежнему является гораздо 9X_git более используемой системой контроля версий, а 9X_git-commands это означает, что она имеет лучшую поддержку 9X_git-commands инструментов. Вы найдете зрелые плагины 9X_subversion SVN практически для любого IDE, а также доступны 9X_subversion хорошие расширения проводника (например, TurtoiseSVN). В 9X_svn остальном я должен согласиться с Michael: Git не 9X_git лучше и не хуже Subversion, он другой.

9
0

Ответ #11

Ответ на вопрос: Почему Git лучше Subversion?

Одна из вещей, которые меня раздражают в 9X_svn SubVersion, это то, что она помещает свою 9X_svn папку в каждый каталог проекта, тогда как 9X_git-commands git помещает только одну в корневой каталог. Это 9X_subversion не такое большое дело, но такие мелочи складываются.

Конечно, в 9X_svn SubVersion есть Tortoise, что [обычно] очень 9X_subversion приятно.

8
1

  • каталоги .svn скоро исчезнут, вероятно, с v1.7<p><span class=" ...

Ответ #12

Ответ на вопрос: Почему Git лучше Subversion?

David Richards WANdisco Blog on Subversion / GIT

Появление GIT привело к появлению поколения 9X_git фундаменталистов DVCS - «гиттеронов», которые 9X_svn считают все, кроме GIT, дерьмом. Похоже, Гиттероны 9X_svn думают, что разработка программного обеспечения 9X_git происходит на их собственном острове, и 9X_git-commands часто забывают, что в большинстве организаций 9X_git-commands работают не только старшие инженеры-программисты. Это 9X_git нормально, но это не так, как думает остальная 9X_git-commands часть рынка, и я рад доказать это: GIT, по 9X_svn последним данным, занимал менее трех процентов 9X_git-commands рынка, в то время как Subversion имеет около 9X_git-commands пяти миллионов пользователей и около половины 9X_svn из них. рынок в целом.

Проблема, которую 9X_svn мы видели, заключалась в том, что Гиттероны 9X_git-commands стреляли (дешево) по Subversion. Твиты типа 9X_git-commands «Subversion такая [медленная / дрянная / ограничительная 9X_subversion / плохо пахнет / смотрит на меня забавно], и 9X_git-commands теперь у меня есть GIT, и [в моей жизни 9X_git-commands все работает / моя жена забеременела / у 9X_git-commands меня появилась девушка после 30 лет попыток 9X_svn / Я выиграл шесть раз подряд на столе для 9X_git блэкджека]. Вы поняли.

8
2

  • По иронии судьбы, Git был создан специально потому, что разработка программного обеспечения не ...

Ответ #13

Ответ на вопрос: Почему Git лучше Subversion?

Git также упрощает ветвление и слияние. В 9X_subversion Subversion 1.5 просто добавлено отслеживание 9X_git слияний, но Git все же лучше. С Git ветвление 9X_svn происходит очень быстро и дешево. Это делает 9X_git создание ветки для каждой новой функции 9X_subversion более осуществимой. О, и репозитории Git 9X_subversion очень эффективны с пространством для хранения 9X_subversion по сравнению с Subversion.

7
0

Ответ #14

Ответ на вопрос: Почему Git лучше Subversion?

Все дело в простоте использования/шагах, необходимых 9X_git-commands для того, чтобы что-то сделать.

Если я разрабатываю 9X_git-commands один проект на своем ПК/ноутбуке, git лучше, потому 9X_svn что его гораздо проще настроить и использовать. Вам 9X_subversion не нужен сервер, и вам не нужно постоянно 9X_svn вводить URL-адреса репозитория при слиянии.

Если 9X_git бы это было всего 2 человека, я бы сказал, что 9X_svn git также проще, потому что вы можете просто 9X_git-commands толкать и тянуть друг друга.

Как только вы 9X_subversion выйдете за рамки этого, я бы пошел на подрывную 9X_git деятельность, потому что в этот момент вам 9X_git-commands нужно настроить «выделенный» сервер или 9X_git-commands местоположение.

Вы можете сделать это так 9X_git же хорошо с git, как и с SVN, но преимущества 9X_subversion git перевешиваются необходимостью выполнять 9X_git-commands дополнительные шаги для синхронизации с 9X_svn центральным сервером. В SVN вы просто фиксируете. В 9X_subversion git вам нужно выполнить git commit, а затем 9X_svn git push. Дополнительный шаг раздражает 9X_git просто потому, что вы делаете его так много.

Преимущество 9X_subversion SVN также состоит в улучшении инструментов 9X_svn с графическим интерфейсом, однако экосистема 9X_git-commands git, похоже, быстро наверстывает упущенное, поэтому 9X_svn в долгосрочной перспективе я бы не стал 9X_svn об этом беспокоиться.

6
1

  • Отделение фиксации от публи ...

Ответ #15

Ответ на вопрос: Почему Git лучше Subversion?

Easy Git имеет хорошую страницу, сравнивающую фактическое 9X_git-commands использование Git and SVN, которая даст вам представление 9X_git о том, что Git может делать (или делать 9X_svn проще) по сравнению с SVN. (Технически это 9X_svn основано на Easy Git, который представляет 9X_git-commands собой легковесную оболочку поверх Git.)

6
0

Ответ #16

Ответ на вопрос: Почему Git лучше Subversion?

Git и DVCS в целом отлично подходят для 9X_git разработчиков, которые много пишут код независимо 9X_git друг от друга, потому что у каждого есть 9X_git своя ветка. Однако, если вам нужны изменения 9X_svn от кого-то другого, он должен зафиксировать 9X_git-commands в своем локальном репо, а затем он должен 9X_git-commands передать этот набор изменений вам, или вы 9X_subversion должны получить его от нее.

Мои собственные 9X_git рассуждения также заставляют меня думать, что 9X_git-commands DVCS усложняет задачу контроля качества 9X_svn и управления релизами, если вы делаете такие 9X_subversion вещи, как централизованные релизы. Кто-то 9X_git-commands должен нести ответственность за выполнение 9X_git этого push/pull из репозитория всех остальных, разрешение 9X_subversion любых конфликтов, которые были бы разрешены 9X_svn во время первоначального коммита ранее, затем 9X_git выполнение сборки, а затем повторная синхронизация 9X_git-commands репозиториев всеми другими разработчиками.

Конечно, все 9X_git это можно решить с помощью человеческих 9X_svn процессов; DVCS просто сломала то, что было 9X_git-commands исправлено централизованным контролем версий, чтобы 9X_git обеспечить некоторые новые удобства.

5
1

  • На самом деле, если вы посмотрите, что ядро ​​Linux или сам проект git находится по ...

Ответ #17

Ответ на вопрос: Почему Git лучше Subversion?

Мне нравится Git, потому что он действительно 9X_git помогает общаться между разработчиками в 9X_subversion средних и больших командах. Как распределенная 9X_git система управления версиями, благодаря своей 9X_svn системе push/pull, она помогает разработчикам 9X_git создавать экосистему исходного кода, которая 9X_git-commands помогает управлять большим пулом разработчиков, работающих 9X_git-commands над одним проектом.

Например, вы доверяете 9X_svn 5 разработчикам и получаете коды только 9X_git из их репозитория. У каждого из этих разработчиков 9X_svn есть собственная сеть доверия, из которой 9X_git-commands они извлекают коды. Таким образом, разработка 9X_subversion основана на доверии разработчиков, где ответственность 9X_git-commands за код распределяется между сообществом 9X_svn разработчиков.

Конечно, есть и другие преимущества, которые 9X_subversion упоминаются здесь в других ответах.

5
0

Ответ #18

Ответ на вопрос: Почему Git лучше Subversion?

В нескольких ответах на это есть ссылки, но 9X_subversion я хочу выделить два момента:

1) Возможность 9X_git делать выборочные коммиты (например, git add --patch). Если 9X_subversion ваш рабочий каталог содержит несколько изменений, которые 9X_git-commands не являются частью одного и того же логического 9X_subversion изменения, Git упрощает выполнение фиксации, включающей 9X_git только часть изменений. С Subversion это 9X_subversion сложно.

2) Возможность совершить фиксацию 9X_svn без публикации изменений. В Subversion любая 9X_git-commands фиксация немедленно становится общедоступной 9X_git и, следовательно, безотзывной. Это сильно 9X_subversion ограничивает способность разработчика «фиксировать 9X_subversion рано, фиксировать часто».

Git - это больше, чем 9X_svn просто VCS; это также инструмент для разработки 9X_git-commands патчей. Subversion - это просто VCS.

4
1

  • К вопросу 1) Если вы используете TortoiseSVN, AnkhSVN и т. Д., То очень легко (тривиально) выбрать, какие файлы с изменениями необходимо зафиксировать. Re 2) Если вы не хотите, чтобы другие разработчики получали ваш код, создайте ветку, а затем о ...

Ответ #19

Ответ на вопрос: Почему Git лучше Subversion?

Я думаю, что с Subversion все в порядке 9X_svn ... пока вы не начнете объединяться ... или 9X_svn делать что-нибудь сложное ... или делать 9X_svn что-то, что Subversion считает сложным (например, выполнение 9X_svn запросов, чтобы узнать, какие ветки испортили 9X_git конкретный файл, а где изменение на самом деле исходит 9X_subversion от обнаружения копирования и вставки и т. д.) ...

Я 9X_git не согласен с победившим ответом, говоря, что 9X_svn основным преимуществом GIT является работа в автономном режиме 9X_svn - это, безусловно, полезно, но это больше 9X_svn похоже на дополнение для моего варианта 9X_git-commands использования. SVK тоже может работать в 9X_git автономном режиме, но для меня нет никаких 9X_svn сомнений в том, в какой из них потратить 9X_svn свое время на обучение).

Просто он невероятно 9X_git мощный и быстрый и, после того, как вы привыкли 9X_git к концепциям, очень полезен (да, в этом 9X_svn смысле: удобен для пользователя).

Подробнее 9X_subversion об истории слияния см. здесь: Using git-svn (or similar) *just* to help out with an svn merge?

4
0

Ответ #20

Ответ на вопрос: Почему Git лучше Subversion?

Благодаря тому, что ему не нужно постоянно 9X_git-commands связываться с центральным сервером, почти 9X_svn каждая команда выполняется менее чем за 9X_git-commands секунду (очевидно, git push/pull/fetch медленнее 9X_svn просто потому, что они должны инициализировать 9X_svn SSH-соединения). Ветвление намного проще 9X_svn (одна простая команда для ветвления, одна 9X_subversion простая команда для слияния)

3
0

Ответ #21

Ответ на вопрос: Почему Git лучше Subversion?

Мне очень нравится возможность управлять 9X_git-commands локальными ветвями моего исходного кода 9X_git-commands в Git, не запутывая воду в центральном репозитории. Во 9X_git-commands многих случаях я проверяю код с сервера 9X_git-commands Subversion и запускаю локальный репозиторий 9X_subversion Git, чтобы иметь возможность это сделать. Также 9X_git замечательно, что инициализация репозитория 9X_svn Git не загрязняет файловую систему множеством 9X_git-commands надоедливых папок .svn повсюду.

Что касается 9X_subversion поддержки инструментов Windows, TortoiseGit 9X_subversion очень хорошо справляется с основами, но 9X_svn я по-прежнему предпочитаю командную строку, если 9X_subversion я не хочу просматривать журнал. Мне очень 9X_svn нравится, как Tortoise {Git | SVN} помогает 9X_svn при чтении журналов фиксации.

3
0

Ответ #22

Ответ на вопрос: Почему Git лучше Subversion?

Это неправильный вопрос. Слишком легко сосредоточиться 9X_subversion на проблемах git и сформулировать аргумент 9X_git-commands о том, почему Subversion якобы лучше, по 9X_git крайней мере, для некоторых случаев использования. Тот 9X_git факт, что git был изначально разработан 9X_subversion как низкоуровневый конструктор для управления 9X_git-commands версиями и имеет барочный интерфейс, ориентированный 9X_subversion на разработчиков Linux, облегчает священным 9X_git-commands войнам получение поддержки и воспринимаемую 9X_git легитимность. Сторонники Git бьют по барабану 9X_git миллионами преимуществ рабочего процесса, которые 9X_git-commands парни из svn объявляют ненужными. Довольно 9X_svn скоро вся дискуссия оформляется как централизованное 9X_git-commands против распределенного, что служит интересам 9X_svn сообщества корпоративных инструментов svn. Эти 9X_git компании, которые обычно публикуют наиболее 9X_svn убедительные статьи о превосходстве подрывной 9X_svn деятельности на предприятии, зависят от 9X_subversion предполагаемой небезопасности git и готовности 9X_git-commands svn к предприятию для долгосрочного успеха 9X_svn своих продуктов.

Но вот в чем проблема: Subversion - это архитектурный тупик.

Принимая 9X_git-commands во внимание, что вы можете взять git и довольно 9X_subversion легко создать централизованную замену подрывной 9X_git версии, несмотря на то, что svn существует 9X_git-commands более чем в два раза дольше, так и не удалось 9X_git добиться даже базовой работы с отслеживанием 9X_git слияния где-либо так хорошо, как в git. Одна 9X_git-commands из основных причин этого - дизайнерское 9X_svn решение сделать ветки такими же, как каталоги. Я 9X_subversion не знаю, почему они пошли по этому пути 9X_git изначально, это, безусловно, очень упрощает 9X_git частичное оформление заказа. К сожалению, это 9X_git-commands также делает невозможным правильное отслеживание 9X_subversion истории. Теперь очевидно, что вы должны 9X_git использовать соглашения о компоновке репозитория 9X_git-commands Subversion для отделения ветвей от обычных 9X_git каталогов, а svn использует некоторые эвристики, чтобы 9X_subversion заставить вещи работать для повседневных 9X_svn случаев использования. Но все это лишь прикрытие 9X_git очень плохого и ограничивающего проектного 9X_git-commands решения на низком уровне. Возможность выполнять 9X_subversion сравнение по репозиторию (а не по каталогу) является 9X_git базовой и важной функцией для системы управления 9X_subversion версиями и значительно упрощает внутреннее 9X_git устройство, позволяя создавать более умные 9X_subversion и полезные функции поверх нее. Вы можете 9X_svn увидеть, сколько усилий было приложено для 9X_subversion расширения подрывной деятельности, и, тем 9X_git-commands не менее, насколько она отстает от нынешнего 9X_svn поколения современных VCS с точки зрения 9X_git фундаментальных операций, таких как разрешение 9X_svn слияния.

А теперь вот мой искренний и агностический 9X_git-commands совет всем, кто все еще считает, что Subversion 9X_git-commands достаточно хороша в обозримом будущем:

Subversion 9X_git никогда не догонит новые разновидности VCS, которые 9X_subversion извлекли уроки из ошибок RCS и CVS; это 9X_svn техническая невозможность, если они не переоборудовали 9X_git модель репозитория с нуля, но тогда это 9X_svn было бы не так, как svn, не так ли? Независимо 9X_git-commands от того, насколько вы считаете, что не обладаете 9X_git-commands возможностями современной VCS, ваше незнание 9X_git не защитит вас от ловушек Subversion, многие 9X_git из которых являются ситуациями, которые 9X_svn невозможно или легко разрешить в других 9X_git-commands системах.

Крайне редко техническая неполноценность 9X_subversion решения настолько очевидна, как с svn, я 9X_svn бы никогда не высказал такого мнения о win-vs-linux 9X_git-commands или emacs-vs-vi, но в данном случае он настолько 9X_git ясен, а система контроля версий - такой 9X_git-commands фундаментальный инструмент в арсенале разработчика, что 9X_subversion я считаю, что об этом следует говорить однозначно. Независимо 9X_svn от требования использовать svn по организационным 9X_git причинам, я умоляю всех пользователей svn 9X_svn не позволять своему логическому уму формировать 9X_svn ложное убеждение, что более современные 9X_subversion системы контроля версий полезны только для 9X_git-commands крупных проектов с открытым исходным кодом. Независимо 9X_svn от характера вашей разработки, если вы программист, вы 9X_git станете более эффективным программистом, если 9X_svn научитесь использовать лучше спроектированные 9X_subversion системы контроля версий, будь то Git, Mercurial, Darcs 9X_git или многие другие.

3
0

Ответ #23

Ответ на вопрос: Почему Git лучше Subversion?

Subversion очень проста в использовании. За 9X_git последние годы я ни разу не обнаружил проблемы 9X_subversion или того, что что-то работает не так, как 9X_git ожидалось. Также есть много отличных инструментов 9X_git с графическим интерфейсом и большая поддержка 9X_git интеграции SVN.

С Git вы получаете более 9X_svn гибкую систему контроля версий. Вы можете 9X_git использовать его так же, как SVN, с удаленным 9X_git репозиторием, в котором вы фиксируете все 9X_subversion изменения. Но вы также можете использовать 9X_svn его в основном в автономном режиме и только 9X_svn время от времени отправлять изменения в 9X_git удаленный репозиторий. Но Git более сложен 9X_git и требует более крутого обучения. Я впервые 9X_subversion обнаружил, что совершаю переход к неправильным 9X_git ветвям, косвенно создаю ветки или получаю 9X_svn сообщения об ошибках с небольшим количеством 9X_svn информации об ошибке и о том, где я должен 9X_git-commands искать с помощью Google, чтобы получить 9X_git-commands лучшую информацию. Некоторые простые вещи, такие 9X_subversion как замена маркеров ($ Id $), не работают, но 9X_subversion GIT имеет очень гибкий механизм фильтрации 9X_git и перехвата для объединения собственных 9X_subversion скриптов, поэтому вы получаете все, что 9X_subversion вам нужно, и многое другое, но для этого 9X_subversion требуется больше времени и чтения документации. ;)

Если 9X_git-commands вы работаете в основном в автономном режиме 9X_git-commands с локальным репозиторием, у вас нет резервной 9X_subversion копии, если что-то потеряно на вашем локальном 9X_subversion компьютере. С SVN вы в основном работаете 9X_git-commands с удаленным репозиторием, который одновременно 9X_git является вашей резервной копией на другом 9X_subversion сервере ... Git может работать точно так 9X_git же, но Линус не ставил перед собой цель 9X_git-commands создать что-то вроде SVN2. Он был разработан 9X_git-commands для разработчиков ядра Linux и нужд распределенной 9X_git-commands системы контроля версий.

Git лучше SVN? Разработчики, которым 9X_subversion нужна лишь некоторая история версий и механизм 9X_subversion резервного копирования, легко и хорошо работают 9X_svn с SVN. Разработчики, часто работающие с 9X_git ветвями, тестирующие больше версий одновременно 9X_subversion или работающие в основном в автономном режиме, могут 9X_svn извлечь выгоду из функций Git. Есть несколько 9X_svn очень полезных функций, таких как хранение, которых 9X_subversion нет в SVN, которые могут облегчить жизнь. Но, с 9X_git другой стороны, не всем нужны все функции. Поэтому 9X_git я не могу видеть мертвых SVN.

Git нужна лучшая 9X_svn документация, и отчеты об ошибках должны 9X_svn быть более полезными. Также редко встречаются 9X_svn существующие полезные графические интерфейсы. На 9X_git этот раз я нашел только 1 графический интерфейс 9X_git для Linux с поддержкой большинства функций 9X_subversion Git (git-cola). Интеграция с Eclipse работает, но 9X_svn она не выпущена официально, и официального 9X_svn сайта обновлений нет (только некоторые внешние 9X_subversion сайты обновлений с периодическими сборками 9X_svn из магистрали http://www.jgit.org/updates) Поэтому в наши дни наиболее 9X_subversion предпочтительным способом использования 9X_subversion Git является командная строка.

2
0

Ответ #24

Ответ на вопрос: Почему Git лучше Subversion?

Eric Sink из SourceGear написал серию статей о различиях 9X_git между распределенными и нераспределенными 9X_svn системами контроля версий. Он сравнивает 9X_git-commands плюсы и минусы самых популярных систем контроля 9X_svn версий. Очень интересное чтение.
Статьи 9X_svn можно найти в его блоге www.ericsink.com:

  • Read the Diffs

  • Git is the C of Version Control Tools

  • On Git's lack of respect for immutability and the Best Practices for a DVCS

  • DVCS and DAGs, Part 1

  • DVCS and DAGs, Part 2

  • DVCS and Bug Tracking

  • Merge History, DAGs and Darcs

  • Why is Git so Fast?

  • Mercurial, Subversion, and Wesley Snipes

2
0

Ответ #25

Ответ на вопрос: Почему Git лучше Subversion?

Для людей, которым нужен хороший графический 9X_svn интерфейс Git, хорошим решением может стать 9X_git-commands Syntevo SmartGit. Он проприетарный, но бесплатный для некоммерческого 9X_git использования, работает в Windows / Mac 9X_git-commands / Linux и даже поддерживает SVN с использованием 9X_git какого-то моста git-svn, я думаю.

2
0

Ответ #26

Ответ на вопрос: Почему Git лучше Subversion?

Во-первых, одновременное управление версиями 9X_subversion кажется простой проблемой. Это совсем не 9X_svn так. В любом случае ...

SVN не интуитивно 9X_git понятен. Git еще хуже. [sarcastic-speculation] Это 9X_git может быть связано с тем, что разработчики, которым 9X_git нравятся сложные проблемы, такие как параллельный 9X_git контроль версий, не очень заинтересованы 9X_subversion в создании хорошего пользовательского интерфейса. [/ sarcastic-speculation]

Сторонники 9X_git SVN считают, что им не нужна распределенная 9X_svn система контроля версий. Я тоже так думал. Но теперь, когда 9X_subversion мы используем исключительно Git, я верю. Теперь 9X_git контроль версий работает для меня И для 9X_svn команды / проекта, а не просто для работы 9X_subversion над проектом. Когда мне нужна ветка, я делаю 9X_git-commands ветку. Иногда это ветка, у которой есть 9X_git-commands соответствующая ветка на сервере, а иногда 9X_svn ее нет. Не говоря уже обо всех других преимуществах, которые 9X_git мне придется изучить (отчасти благодаря 9X_subversion загадочному и абсурдному отсутствию пользовательского 9X_subversion интерфейса, который является современной 9X_git системой контроля версий).

1
0

Ответ #27

Ответ на вопрос: Почему Git лучше Subversion?

Git в Windows теперь неплохо поддерживается.

Посмотрите 9X_subversion GitExtensions = http://code.google.com/p/gitextensions/

и руководство для лучшего 9X_subversion взаимодействия с Windows Git.

1
0

Ответ #28

Ответ на вопрос: Почему Git лучше Subversion?

http://subversion.wandisco.com/component/content/article/1/40.html

Думаю, можно с уверенностью сказать, что 9X_subversion среди разработчиков SVN Vs. Аргумент Git 9X_svn бушует уже некоторое время, и каждый имеет 9X_subversion собственное мнение о том, что лучше. Об 9X_subversion этом даже говорили в ходе нашего вебинара 9X_subversion по Subversion в 2010 году и позже.

Хайрам 9X_git Райт, наш директор по открытому исходному 9X_subversion тексту и президент Subversion Corporation, рассказывает 9X_svn о различиях между Subversion и Git, а также 9X_subversion о других распределенных системах контроля 9X_git версий (DVCS).

Он также рассказывает о грядущих 9X_git изменениях в Subversion, таких как Working 9X_svn Copy Next Generation (WC-NG), которые, по 9X_svn его мнению, заставят ряд пользователей Git 9X_git-commands вернуться к Subversion.

Посмотрите его видео 9X_svn и поделитесь с нами своим мнением, комментируя 9X_subversion этот блог или публикуя сообщения на наших 9X_git форумах. Регистрация проста и займет всего 9X_svn несколько минут!

1
0

Ответ #29

Ответ на вопрос: Почему Git лучше Subversion?

В последнее время я живу в мире Git, и мне 9X_git-commands он нравится для личных проектов, но я пока 9X_git-commands не смогу переключить рабочие проекты на 9X_git него из Subversion, учитывая изменение мышления, которое 9X_git-commands требуется от персонала, без каких-либо неотложных 9X_git преимуществ. . Более того, самый крупный 9X_subversion проект, который мы выполняем внутри компании, чрезвычайно 9X_git зависит от svn:externals, который, насколько я видел 9X_subversion до сих пор, не так хорошо и без проблем 9X_svn работает в Git.

1
0

Ответ #30

Ответ на вопрос: Почему Git лучше Subversion?

Почему я считаю, что Subversion лучше Git 9X_git (по крайней мере, для проектов, над которыми 9X_subversion я работаю), в основном из-за удобства использования 9X_git и более простого рабочего процесса:

http://www.databasesandlife.com/why-subversion-is-better-than-git/

1
0