Подтвердить что ты не робот

Что может сделать SVN, что Git не делать?

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

Интересно о возможности-стоимости не обучения (или даже де-изучения того, что мало я узнал о) SVN. Есть ли что-то, что мне нужно следить?

Есть ли вещи, которые просто не выполняются или непомерно трудны в Git по сравнению с SVN?

4b9b3361

Ответ 1

Git не может svn lock документы, чтобы кто-то мог запретить другим редактировать объект, не связанный с автоманией (например, Word или Excel).

Ответ 2

Git не может проверить поддерево и использовать его, как если бы это был полный репозиторий.

Например, с Subversion вы можете проверить каталог "trunk" и использовать его так, как если бы это был репозиторий. Вы также можете проверить "branch/feature1" и использовать это. С помощью Git можно только проверить корневой каталог (хотя с недавними версиями вы можете сделать разреженную проверку, которая не загружает все файлы, вам все равно нужно проверить корень). В Git вы должны использовать ветки вместо проверки поддеревьев.

Ответ 3

Я думаю, что одним из немногих вариантов использования, в которых вы можете использовать Subversion вместо git, является то, что вы пытаетесь управлять очень большим хранилищем двоичных файлов, где люди в основном хотят только самую последнюю версию. например скажем, вы разрабатываете игру, и художники должны отслеживать изменения всех произведений искусства, но вся история репозитория будет огромной (100 гигабайт).

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

  • Неглубокие клоны.
  • Скотт Чакон git-media расширение
  • Подобный проект Joey Hess, git приложение
  • Использование Avery Pennarun bup для непосредственного создания файлов пакета.

... но он все еще является областью, где, вероятно, будет предпочтительнее SVN. Там пара краткая презентация на эту тему от GitTogether пару лет назад.

Ответ 4

Git не может хранить пустые каталоги. Возможно, это преимущество, но одно дело, что git не может делать, но svn может.

Ответ 5

Эта Wiki имеет хорошее сравнение: https://git.wiki.kernel.org/index.php/GitSvnComparison

Обобщенная

  • Git намного быстрее, чем Subversion
  • Subversion позволяет вам проверять только поддерево репозитория; Git требует, чтобы вы клонировали весь репозиторий (включая историю) и создали рабочую копию, которая отображает как минимум подмножество элементов, находящихся под контролем версий. Хранилища
  • Git намного меньше, чем Subversions (для проекта Mozilla, меньшего на 30x)
  • Git был разработан для полного распространения с самого начала, позволяя каждому разработчику иметь полный локальный контроль
  • Git ветки проще и меньше ресурсов, чем Subversion
  • Git ветки несут всю свою историю
  • Слияние в Git не требует, чтобы вы помнили версию, с которой вы слились (это преимущество было устранено выпуском Subversion 1.5)
  • Git обеспечивает лучший аудит событий ветвления и объединения
  • Git Форматы файлов репо просты, поэтому ремонт прост и коррупция редка.
  • Резервное копирование репозиториев Subversion централизованно потенциально проще - поскольку вы можете выбирать распределенные папки в репо в git
  • Git Клоны репозитория действуют как резервные копии полного резерва.
  • Subversion UI более зрелый, чем Git
  • Прогулка по версиям проще в Subversion, поскольку использует последовательные номера версий (1,2,3,..); Git использует непредсказуемые хэши SHA-1. Пройти назад в Git легко, используя синтаксис "^", но нет простого способа идти вперед.

Ответ 6

  • Git не имеет серьезной (независимой от платформы) поддержки символов, отличных от US-ASCII, в именах файлов и сообщениях фиксации, git просто сохраняет байтовое представление символов, которые он получает из ОС, вместо того, чтобы переводить его.
  • Git не может записать, какие конкретные фиксации были выбраны вишней.

Ответ 7

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

Я бы, однако, подумал о том, что git будет труднее изучить, но как только вы его повесили, люди обычно увлекаются и находят других НКМ ниже. Распределенная поддержка для git превосходна (есть и другие, но git, вероятно, самый распространенный), что бывает полезно для множества других задач, кроме как управлять исходным кодом. git можно считать ZIP-утилитой на стероидах и может быть быстро развернута для отслеживания изменений в общей файловой системе и для эффективного репликации изменений между хостами.

В окнах есть некоторые проблемы с git:

  • Поддержка имени файла Unicode является ошибкой во многих реализациях. Это становится все лучше, но все же это проблема.
  • Плагины проводников в Windows не так хороши. Мне проще использовать версию командной строки.

Но я бы рассмотрел вещи, которые есть git, а SVN - нет. Отсутствие явной поддержки веток в SVN является серьезной проблемой - реализация git очень приятная и позволяет вам веткиться, даже не думая о ветвях. Возможность работать в автономном режиме также является основным лечением.

Ответ 8

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

Ответ 9

Вы не можете ограничить доступ для чтения к части репо (т.е. разрешить чтение определенных файлов или только часть истории). Это прямое следствие того факта, что вы можете клонировать полный репозиторий (как объяснялось в ответах Тео и Марк Лонгэй). Если вам нужны разные уровни доступа для чтения для разных файлов, вы должны поместить их в разные репозитории (которые могут быть включены в качестве подмодулей в основное репо).

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

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

Ответ 10

Subversion - это центральный репозиторий

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

Subversion - это обычная мудрость

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

Subversion делает это в одну сторону, и ничего больше

SVN - это система управления версиями. У него есть один способ сделать свою работу, и каждый делает то же самое. Период. Это облегчает переход к/из SVN от/к другому централизованному VCS. Git НЕ является даже чистым VCS - это файловая система, имеет множество топологий для настройки репозиториев в разных ситуациях - и нет никакого стандарта. Это затрудняет выбор.

Другие преимущества:

SVN supports empty directories
SVN has better Windows support
SVN can check out/clone a sub-tree
SVN supports exclusive access control svn lock which is useful for hard-to-merge files
SVN supports binary files and large files more easily (and doesn't require copying old versions everywhere).
Adding a commit involves considerably fewer steps since there isn't any pull/push and your local changes are always implicitly rebased on svn update.

Нашел это и согласен с ним. Опять новые птицы довольно агрессивные, когда вы касаетесь Git. Я не могу доверять Git или github до тех пор, пока не появятся еще несколько изменений безопасности, вроде перехода на один шаг за пределы hackable ssh-ключей.

Ответ 11

При распределенном характере Git нет единого места (сервера), где вы /sysadmin можете создать резервную копию всей базы кода. Каждый node должен самостоятельно создавать резервные копии или объединять их с node, который берет ежедневные резервные копии.

Ответ 12

Еще две вещи, которые может выполнить svn, и я пропускаю в git:

  • externals (что-то вроде символических ссылок в пространстве имен репозитория)
  • расширение ключевого слова (автоматическое изменение содержимого файла во время проверки/обновления)