Я начинаю новый распределенный проект. Что мне следует использовать - SVN или Git и почему?
возможный дубликат stackoverflow.com/questions/871/…
@Andre - поскольку вы можете использовать MonoDevelop - я переключаюсь с Vault на SVN, чтобы я мог разрабатывать программное обеспечение .NET на своем Mac или ПК. Для Vault не было клиента, но был для SVN :-)
см. также richappsconsulting.com/blog/blog-detail/…
Github / bitbucket + sourcetree = рай! - sourcetreeapp.com
В 2013 году я перешел с SVN на TFS на Git, и сейчас доступно множество клиентов Git. Window больше не является вторым классом в мире Git.
SourceTree отлично подходит для Windows или Mac и может использоваться для любого репозитория Git.
ошибка: файл <file> составляет 123,23 МБ; это превышает ограничение на размер файла GitHub в 100 МБ !!!!
Для меня это Git ВСЕГДА, за исключением случаев, когда вы управляете активами, которыми вы действительно не можете управлять без эксклюзивной проверки или которые очень большие.
Если вы не хотите начинать выдергивать волосы через какое-то время, используйте Git. с SVN вы будете буквально мочиться кровью. в настоящее время проект, над которым я работаю, использует SVN, и я ненавижу каждый момент, когда мне приходится вводить svn в моем терминале
Я бы выбрал SVN, поскольку он более широко распространен и известен.
Думаю, для пользователя Linux лучше подойдет Git.
Однако это быстро меняется. SVN теряет долю рынка, в то время как GIT получает прибыль: например: wikivs.com/wiki/Git_vs_Subversion#Popularity или programmers.stackexchange.com/questions/136079/…
@Zelphir: Я бы не назвал 7 лет быстро, но да, GIT увеличивает долю рынка и особенно лучше подходит для слияния файлов.
Git пока не поддерживается в Windows. Он оптимизирован для систем Posix. Однако запуск Cygwin или MinGW позволяет успешно запустить Git.
В настоящее время я предпочитаю Git, а не SVN, но требуется время, чтобы преодолеть порог, если вы пришли из CVS и SVN.
Определите «изначально». msysgit работает нормально
Определенно svn
, поскольку Windows - в лучшем случае - гражданин второго сорта в мире git
(подробнее см. http://en.wikipedia.org/wiki/Git_(software)#Portability).
ОБНОВЛЕНИЕ: извините за неработающую ссылку, но я отказался от попыток заставить SO работать с URI, содержащими круглые скобки. [ссылка исправлена. -ed]
К вашему сведению: заключите URL-адрес в угловые скобки или замените круглые скобки на% 28 и% 29.
Будет ли работать кодировка URL для синтаксиса [] ()?
Вместо «Определенно svn» я бы сказал «ЕСЛИ вы используете Windows svn», если пользователь не использует его, он не заботится о его поддержке.
@Hugo вопрос указывает, что он будет разработан с использованием Visual Studio, которая (была?) Только для Windows, так что им, вероятно, не все равно.
Это неправильный FUD. Git отлично работает в Windows. И SVN везде довольно плохой.
Для всех, кто голосовал против меня, пожалуйста, вернитесь и посмотрите комментарии разработчиков примерно за 2008 год: совершенно очевидно, что Линуса и его банды не заботила поддержка Windows. Это нормально: я тоже не хочу этого делать, и мое программное обеспечение не так сложно, как VCS, который ожидает POSIX-подобного поведения файловой системы. Однако, если вы посмотрите на контекст, мне кажется несправедливым характеризовать мое заявление как FUD.
Может быть, в 2008 году git плохо работал с Windows, но я использую msysgit с 2009 года, и он работает безупречно. Это включает в себя gitk, автономный настольный эквивалент GitHub.
Я бы, наверное, выбрал Git, потому что мне кажется, что он намного мощнее SVN. Доступны дешевые услуги хостинга кода, которые отлично подходят для меня - вам не нужно делать резервные копии или выполнять какие-либо работы по обслуживанию - GitHub является наиболее очевидным кандидатом.
Тем не менее, я ничего не знаю об интеграции Visual Studio и различных систем SCM. Я полагаю, что интеграция с SVN станет заметно лучше.
Главное, что Git - это распределенная VCS, а Subversion - централизованная. Распределенные VCS немного сложнее для понимания, но имеют много преимуществ. Если вам не нужны эти преимущества, Subversion может быть лучшим выбором.
Другой вопрос - инструментальная поддержка. Какие VCS лучше поддерживаются инструментами, которые вы планируете использовать?
Обновлено: Три года назад я ответил так:
And Git works on Windows at the moment only via Cygwin or MSYS. Subversion supported Windows from the beginning. As the git-solutions for windows may work for you, there may be problems, as the most developers of Git work with Linux and didn't have portability in the mind from the beginning. At the moment I would prefer Subversion for development under Windows. In a few years this may be irrelevant.
Сейчас мир немного изменился. Git теперь имеет хорошую реализацию для Windows. Хотя я не тестировал полностью на Windows (поскольку я больше не использую эту систему), я вполне уверен, что все основные VCS (SVN, Git, Mercurial, Bazaar) теперь имеют правильную реализацию Windows. Это преимущество для SVN исчезло. Остальные пункты (централизованное против распределенного и проверка поддержки инструментов) остаются в силе.
Я оптимистично настроен в отношении того, что горизонт нерелевантности будет намного короче, чем несколько лет.
Да, возможно, всего год. Git имеет динамичное сообщество разработчиков. Но есть и подрывная деятельность. Через год или два вам придется еще раз взглянуть на оба, чтобы ответить на этот вопрос.
Сейчас год или два спустя. Как это выглядит? :)
Прошло более трех лет. :-) Обновляю свой ответ.
В Git отсутствует расширение распределенной модели SCM на другие фазы конвейера разработки программного обеспечения. У нас нет хорошей модели для систем сборки распределенных релизов, распределенного автоматического тестирования, контроля качества, контроля релизов и т. д. Мы только получаем экспериментальную поддержку распределенного резервного копирования, и это после десятилетий исследований. Таким образом, Git предлагает больше разработчикам и меньше - процессу разработки программного обеспечения. Все реализации Git в конечном итоге благословляют одно репо быть центральным, что упрощает наиболее интересные возможности Git до факсимиле SVN.
@EdwinBuck, признаюсь, я не понимаю. Я бы сказал, что не может быть (значимо) двух версий одного и того же программного обеспечения, так как же может иметь смысл иметь два центральных репозитория? Даже если вы хотите протестировать распределенным образом, не имеет ли смысла тестировать одну и ту же версию программного обеспечения?
@hibbelig Git не имеет центрального репозитория, каждый репозиторий фактически (благодаря своей распределенной структуре) равен. Это означает, что вы либо переделываете свой производственный конвейер, чтобы, возможно, обрабатывать все репозитории одинаково, либо искусственно благословляли один репозиторий на «искусственно повышенный» статус (также известный как центральное хранилище). Если вы сделаете первое, никто ничего не знает о построении параллельных конвейеров, где релиз может поступать из любого рабочего места разработчика, если вы сделаете второе, обещание распределенной обработки будет обмануто централизованным соглашением.
@EdwinBuck Я думаю, вы знаете, что проблема с распределенными репозиториями заключается в том, что они / не / равны :-) (Обычно у них будут неопубликованные коммиты.) Итак, команда говорит, что они создают только версию, которая находится в центральном репо, поэтому что они могут быть уверены, что даже завтра они смогут воссоздать сборку. Если бы я строил на своем ноутбуке, то завтра команда, возможно, не смогла бы воссоздать сборку, потому что у меня могли быть локальные изменения, и я в отпуске.
@EdwinBuck Полагаю, мне сложно представить, что может обещать распределенная обработка? Это об ускорении чего-то? Тогда почему у нас не может быть нескольких серверов сборки, которые все используют центральное репо в качестве первого шага? Вы хотите сказать, что это приведет к перегрузке центрального репо? Мне трудно представить это, поскольку я не могу представить, что объем передаваемых данных станет чрезмерно большим. Если серверы сборки будут получать данные из центрального репозитория один раз в неделю, сколько времени это может занять?
@hibbelig Именно то, что вы сказали. Все репо не равны. Вы назначаете одну из них «высшей», так что это противоречит обещанию «распределить» по соглашению, а не по коду. Распределенные системы сборки (как я их себе представляю) могут позволить воспроизводимую сборку релизов с любого ноутбука.
Могу я расширить вопрос и спросить, хорошо ли Git работает на MacOS?
Ответ на комментарии: Спасибо за новости, я очень хотел попробовать. Я установлю его дома на свой Mac.
Да, прекрасно работает. Установил через MacPorts и использую ежедневно.
Оно делает. Он отлично работает в любой системе на основе POSIX (Unix, Linux, Solaris, BSD и т. д.). На самом деле проблема в Windows.
и git-gui и gitk, вероятно, работают под OS-X так же, как под Linux и Windows. В отличие от tortoiseSVN, какой AFAIK доступен только для Windows?
@David Schmitt: ну, tortoisesvn.tigris.org называет это «расширением оболочки Windows для Subversion», так что я так думаю, да ;-).
@Robert: каким был ваш опыт работы с git на OS X?
SVN - это одно репо и много клиентов. Git - это репозиторий с множеством клиентских репозиториев, каждое с пользователем. Он децентрализован до такой степени, что люди могут отслеживать свои собственные изменения локально, не отправляя данные на внешний сервер.
SVN спроектирован так, чтобы быть более центральным, где Git основан на том, что каждый пользователь имеет собственное репозиторий Git, и эти репозитории возвращают изменения в центральный репозиторий. По этой причине Git предоставляет пользователям лучший локальный контроль версий.
Между тем у вас есть выбор между TortoiseGit, GitExtensions (и, если вы размещаете свой «центральный» git-репозиторий на github, их собственный клиент - GitHub для Windows).
Если вы хотите выйти из SVN, вы можете немного оценить Базар. Это одна из систем контроля версий следующего поколения, в которой есть этот распределенный элемент. Он не зависит от POSIX, как git, поэтому есть нативные сборки Windows, и его поддерживают несколько мощных брендов с открытым исходным кодом.
Но возможно, вам даже не понадобятся такие функции. Взгляните на особенности, преимущества и недостатки распределенных VCS. Если вам нужно больше предложений SVN, подумайте об одном. Если вы этого не сделаете, вы можете придерживаться превосходной интеграции SVN (в настоящее время) с настольными компьютерами.
Можно также взглянуть на Hg (Меркурий)
Собственные сборки, если использование языка сценариев считается родным ... По той же логике Git является родным - ему просто нужна программа (cygwin или msys) для его запуска.
С октября 2008 года ситуация стала намного лучше. Вы можете установить TortoiseGit, получить последнюю переносимую версию MSysGit и указать TortoiseGit, где ее найти. Я только что переместил свой большой репозиторий svn на git, потому что плохая поддержка переименования svn наконец-то меня достаточно разозлила.
Спустя 2 года у нас теперь есть несколько хороших инструментов для Windows. В настоящее время я использую netbeans с MSysGit. Мне также повезло с TortoiseGit. Думаю, он достаточно хорош, чтобы его можно было использовать в продакшене. Учитывая, насколько сложно управлять простыми конфликтами в Subversion, git - это огромное улучшение.
Мы активно используем Git в Windows уже давно. Git абсолютно фантастичен в Windows.
@Oli Было бы хорошо обновить свой ответ (особенно о клиенте git для Windows) на основе комментариев здесь и вашего опыта. Текущий ответ кажется необъективным сейчас, когда прошло 2-3 года с момента его написания.
@Charlie Flowers С таким клиентом?
@Tomas Roos - мы в основном использовали командную строку вместе с gitk (ограниченный графический инструмент, который поставляется с git). Ежедневно вам нужно всего около 5 команд, они простые и мощные. Раздайте всем шпаргалку и позвольте им вызвать эксперта в тех случаях, когда происходит что-то необычное. В течение месяца они смогут справиться и с нестандартными случаями без посторонней помощи.
Ваша единственная жалоба, похоже, заключается в том, что у Git нет хорошего графического интерфейса для Windows. Могу ли я понять, что, по вашему мнению, SVN по-прежнему лучше двух.
Теперь есть TortoiseGit. Возможно, вы хотите отредактировать свой ответ.
Технически нет никакого "центрального" репозитория git. Все репо равны. Вы можете отправлять или вытягивать из одного репо в другое, если у вас есть разрешение на соответствующем конце. Конечно, вы можете легко настроить репо для ACT как централизованное репо, но на самом деле оно ничем не отличается от других.
Этот ответ был опубликован давно, поэтому я подумал, что стоит выделить Github для Windows
Попробуйте SourceTree (теперь доступно и для Windows) - это бесплатно и, на мой взгляд, лучшее! Сайт SourceTree
Эй, это 2018 год. 10 лет с момента ответа. Подождите, что ... что такое SVN ??
Я бы создал репозиторий Subversion. Поступая таким образом, отдельные разработчики могут выбирать, использовать ли клиенты Subversion или клиенты Git (с git-svn
). Использование git-svn
не дает вам все преимуществ полного решения Git, но дает отдельным разработчикам большой контроль над их собственным рабочим процессом.
Я считаю, что пройдет относительно немного времени, прежде чем Git будет работать так же хорошо в Windows, как и в Unix и Mac OS X (раз уж вы спросили).
Subversion имеет отличные инструменты для Windows, такие как TortoiseSVN для интеграции с проводником и AnkhSVN для интеграции с Visual Studio.
SVN кажется хорошим выбором под Windows, как указывали другие люди.
Если кто-то из ваших разработчиков хочет попробовать GIT, он всегда может использовать GIT-SVN, где репозиторий SVN воссоздается в репозитории GIT. Затем он сможет работать локально с GIT, а затем использовать SVN для публикации своих изменений в основном репозитории.
вы пробовали Bzr?
Это довольно хорошо, коннонично (люди, которые делают Ubuntu) сделали это, потому что им не нравилось больше ничего на рынке ...
Тем не менее, поддержка Windows действительно требует некоторой доработки. Не то чтобы я не очень-то с удовольствием использовал его для всего моего недавнего программирования под Windows (чем я занимался немало) или чего-то еще, но все же ...
Почти в 100% случаев с ОС люди «делали [любое программное обеспечение], потому что им не нравилось ничего другого на рынке».
@Hugo С открытым исходным кодом, если им понравится что-то еще на рынке, они будут способствовать этому, а не создавать что-то новое.
Это вообще не ответ на вопрос
@AlbertvanderHorst Нет, на этот вопрос ответили во времена Дикого Запада в SO, когда никто не знал ничего лучше и предлагал альтернативу. Можно спорить в спешке, похоже, что я также неправильно написал имя Canonical. Мне стыдно!
Я никогда не понимал эту концепцию «git плохо работает с Windows»; Я разрабатываю исключительно под Windows и у меня никогда не было проблем с git.
Я определенно рекомендую git вместо subversion; он просто намного более универсален и позволяет «автономную разработку», чего никогда не могло сделать ни одна подрывная деятельность. Он доступен практически на всех мыслимых платформах и имеет больше функций, чем вы, вероятно, когда-либо будете использовать.
У меня, с другой стороны, были некоторые проблемы с git в Windows, он делал действительно странные вещи с моим репо. И я использовал самую последнюю версию в cygwin (примерно месяц назад).
@Roman: ну, порт Cygwin - это не то же самое, что собственный порт win32. Я ожидаю, что порт Cygwin намного менее хорошо протестирован ...
"больше возможностей, чем вы, вероятно, когда-либо воспользуетесь" - это красный флаг в моей книге
@ B T "красный флаг" Я не согласен. Я часто обнаруживаю, что желаю, чтобы был способ что-то сделать, и после небольшого поиска я обнаружил, что есть несколько команд, о которых я не знал, которые делают именно это. Я также использую GIT на своей машине с Windows, и у меня еще не было серьезных проблем.
@ testing123, но тогда они не являются функциями, которые «вы, вероятно, [n] когда-нибудь будете использовать», потому что вы фактически их использовали.
Я не уверен, почему ваш комментарий адресован мне :). Я согласен, и это был смысл моего комментария. Я думаю, вы имели в виду @BT.
Вы должны пойти с DVCS, это как качественный скачок в управлении источниками. Лично я использую Монотонный, и время его разработки бесконечно ускорено. Мы используем его для Windows, Linux и Mac, и он очень стабилен. У меня даже есть buildbot, выполняющий ночные сборки проекта на каждой из платформ.
Распространение DVCS обычно означает, что вы создадите центральный сервер, на котором люди смогут отправлять изменения и отправлять изменения.
Не совсем отвечаю на ваш вопрос, но если вам нужны преимущества Распределенный контроль версий - похоже, что вы это делаете - и вы используете Windows, я думаю, вам было бы лучше использовать Mercurial, а не Git as Mercurial, у которого гораздо лучшая поддержка Windows. У Mercurial тоже есть порт для Mac.
Об этом есть интересное видео на YouTube. Это от самого Линуса Торвальдса: Goolge Tech Talk: Линус Торвальдс на git
Если ваша команда уже знакома с программным обеспечением для управления версиями и версиями, такими как cvs или svn, то для простого и небольшого проекта (такого, как вы утверждаете), я бы порекомендовал вам придерживаться SVN. Мне очень нравится svn, но для текущего проекта электронной коммерции, который я делаю на django, я решил работать над git (я использую git в svn-режиме, то есть с централизованным репозиторием, на которое я нажимаю и извлекаю from, чтобы сотрудничать хотя бы с одним другим разработчиком). Другой разработчик чувствует себя комфортно с SVN, и хотя опыт других может отличаться, нам обоим очень трудно использовать git для этого небольшого проекта. (Мы оба заядлые пользователи Linux, если это вообще имеет значение.)
Конечно, ваш пробег может отличаться.
Самое смешное: Я размещаю проекты в Subversion Repos, но получаю к ним доступ через команду Git Clone.
Пожалуйста, прочтите Разработка с помощью Git в проекте Google Code
Although Google Code natively speaks Subversion, you can easily use Git during development. Searching for "git svn" suggests this practice is widespread, and we too encourage you to experiment with it.
Использование Git в репозитории Svn дает мне преимущества:
backup/public
, чтобы другие могли его проверитьПросто примечание: по состоянию на июль 2011 года Google Code изначально поддерживает Git.
2 ключевых преимущества SVN, которые редко упоминаются:
Поддержка больших файлов. В дополнение к коду я использую SVN для управления своим домашним каталогом. SVN - единственная VCS (распределенная или нет), которая не подавляется моими файлами TrueCrypt (пожалуйста, поправьте меня, если есть другая VCS, которая эффективно обрабатывает файлы размером более 500 МБ). Это связано с тем, что сравнения diff передаются в потоковом режиме (это очень важный момент). Rsync неприемлем, потому что он не двусторонний.
Частичный репозиторий (подкаталог) checkout / checkin. Mercurial и bzr не поддерживают это, а поддержка git ограничена. Это плохо для командной среды, но бесценно, если я хочу проверить что-то на другом компьютере из моего домашнего каталога.
Просто мой опыт.
«Пожалуйста, поправьте меня, если есть еще одна VCS, которая эффективно обрабатывает файлы размером более 500 МБ» - конечно же, волей-неволей!
Perforce = не бесплатно. Кроме того, Perforce доступен не для всех платформ.
Почему бы не поместить репозиторий SVN ВНУТРИ контейнеров truecrypt? Вы также можете туннелировать это через ssh и настроить сервер для хранения этого конкретного репо в другом файле truecrypt. Это дает дополнительное преимущество, заключающееся в том, что вы можете производить частичную проверку этого репо.
@Hugo, насколько мне известно, клиент Perforce доступен для Windows, Unix, вариантов Linux, Mac, Amiga, BeOS, Cygwin, HPUX, IBM AS / 400, OS / 2, DEC VMS и Novell File Server. Отсутствует ли какая-то соответствующая платформа в списке?
Да, OpenBSD (и я знал это по опыту, не нужно было гуглить). Думаю, это не сработает и с maemo, хотя я могу ошибаться (и да, я использую git на maemo).
Я бы не делал снимков зашифрованных томов.
Вот копия ответа, который я сделал для несколько повторяющихся вопросов с тех пор были удалены о Git против SVN (сентябрь 2009 г.).
Лучше? Кроме обычной ссылки Почему GitIsBetterThanX, они разные:
one - это центральная система контроля версий, основанная на дешевой копии веток и тегов. другой (Git) - это распределенная система контроля версий, основанная на графике изменений. См. Также Основные концепции VCS.
Эта первая часть вызвала несколько неверно информированных комментариев, в которых утверждалось, что основная цель двух программ (SVN и Git) одинакова, но что они были реализованы совершенно по-разному. Чтобы прояснить принципиальная разница между SVN и Git, позвольте мне перефразировать:
SVN - это третья реализация пересмотр контроль: RCS, затем CVS и, наконец, SVN управления каталогами версионных данных. SVN предлагает функции VCS (маркировка и слияние), но его тег - это просто копия каталога (например, ветка, за исключением того, что вы «не должны» касаться чего-либо в каталоге тегов), и его слияние по-прежнему сложно, в настоящее время на основе метаданных. -данные добавлены для запоминания того, что уже было объединено.
Git - это управление содержимым файлов (инструмент, созданный для слияния файлов), превратилась в настоящую систему контроля версий, основанный на DAG (Направленный ациклический граф) коммитов, где ветки являются частью истории данных (а не сами данные), а теги - истинными мета- данные.
Сказать, что они не «принципиально» различны, потому что вы можете достичь одного и того же, решить одну и ту же проблему, - это ... явная ложь на многих уровнях.
Тем не менее, комментарии к этому старому (удаленному) ответу настаивали:
VonC: You are confusing fundamental difference in implementation (the differences are very fundamental, we both clearly agree on this) with difference in purpose.
They are both tools used for the same purpose: this is why many teams who've formerly used SVN have quite successfully been able to dump it in favor of Git.
If they didn't solve the same problem, this substitutability wouldn't exist.
, на что я ответил:
"заменяемость" ... интересный термин (используется в компьютерном программировании) .
Конечно, Git вряд ли является подтипом SVN.
Вы можете достичь тех же технических характеристик (тег, ветвление, слияние) с обоими, но Git не мешает вам и позволяют сосредоточиться на содержании файлов, не думая о самом инструменте.
Вы, конечно, не можете (всегда) просто заменить SVN на Git «без изменения каких-либо желаемых свойств этой программы (правильность, выполненная задача, ...)» (что является ссылкой на вышеупомянутый определение заменяемости):
Опять же, их природа принципиально иная (что затем приводит к другой реализации, но не в этом суть). Один видит контроль версий как каталоги и файлы, другой видит только содержимое файла (настолько, что пустые каталоги даже не регистрируются в Git!).
Общая конечная цель может быть одинаковой, но вы не можете использовать их одинаково, и вы не можете решить один и тот же класс проблем (по объему или сложности).
Я не не согласен с вами в том, что git и svn принципиально разные, но я не согласен по многим вашим пунктам. svn, возможно, был написан для замены cvs, но они никак не связаны иначе, в то время как cvs запускались как скрипты поверх RCS, так что есть прямая связь. Тем не менее, человек, которого вы цитируете, совершенно прав, они оба в основном управляют редакциями файлов, реализация и процесс, в котором это происходит (или как это происходит), являются деталями реализации. Это похоже на разницу между CRC и SHA1, фундаментально очень разные, но они делают одно и то же.
Я использовал SVN в течение долгого времени, но всякий раз, когда я использовал Git, я чувствовал, что Git очень мощный, легкий и, хотя и требует небольшого обучения, но лучше, чем SVN.
Я заметил, что каждый проект SVN по мере роста становится проектом очень большого размера, если он не экспортируется. В то же время проект GIT (вместе с данными Git) очень легкий по размеру.
В SVN я имел дело с разработчиками, от новичков до экспертов, и новички и промежуточные пользователи, похоже, создают конфликты файлов, если они копируют одну папку из другого проекта SVN, чтобы использовать ее повторно. В то время как я думаю, что в Git вы просто копируете папку, и она работает, потому что Git не вводит папки .git во все свои подпапки (как это делает SVN).
После долгого общения с SVN я, наконец, подумываю о переводе меня и моих разработчиков на Git, поскольку здесь легко сотрудничать и объединять работу, а также одним большим преимуществом является то, что изменения локальной копии могут быть зафиксированы как можно больше. желаемое, а затем, наконец, отправлено в ветку на сервере за один раз, в отличие от SVN (где мы должны время от времени фиксировать изменения в репозитории на сервере).
Кто-нибудь, кто может помочь мне решить, действительно ли мне следует перейти на Git?
Я бы не стал называть разработчика, который скопировал папку, управляемую SVN, в другой проект, чтобы использовать ее повторно, и не ожидал бы очевидных проблем «промежуточными». Я бы назвал их новичками. Да, вы правы, это связано с подпапкой .svn, которая сообщает SVN, к какому репозиторию принадлежат файлы. Если пользователь удалил эту подпапку .svn, он мог бы импортировать папку в новый проект SVN. Я сам все еще использую SVN, но у меня мало потребностей. GIT отлично подходит для больших проектов.
Последним клиентам svn не требуется папка .svn
в каждом подкаталоге. Это «исправляет» ошибку копирования до того, как это произойдет.
После дополнительных исследований и просмотра этой ссылки: https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.html
(Некоторые выдержки ниже):
Прочитав все это, я убедился, что Git - это то, что нужно (хотя есть небольшая кривая обучения). Я также использовал Git и SVN на платформах Windows.
Я хотел бы услышать, что другие говорят после прочтения вышеизложенного?
Git невероятно быстр в некоторых операциях, в основном потому, что операция влияет только на ваш локальный репозиторий. Например, проверку Git не следует сравнивать с справедливо с проверкой SVN, потому что проверка SVN также является отправкой изменений в промежуточный репозиторий для остальной части вашей команды. Это требует попадание в сеть, и сравнение Git-фиксации отсутствия сети с передачей по сети выглядит неуместным. Если вы совершите фиксацию, а затем потеряете жесткий диск, с Git вы потеряете свои изменения. Это нормально, если вы ожидаете именно этого, но этого не ожидают в нераспределенных SCM.
@EdwinBuck Не принимая во внимание то, что сделал Вакар, в тестах даже с учетом сетевого времени git имеет тенденцию быть быстрее: git-scm.com/about/small-and-fast
Ваш пункт «Создание репозитория - тривиальная операция» важен для крайне, особенно в Windows: по сравнению с SVN гораздо проще быстро смоделировать кучу взаимосвязанных распределенных репозиториев, все они связаны с центральным (--bare) репозиторием с Git, чем сделать то же самое с SVN (установить серверное приложение Windows SVN и т. д.). Кроме того (как ни странно) я считаю, что Git более согласован в разных ОС: командная строка очень хорошо спроектирована и, таким образом, большую часть времени (и практически идентична между ОС) по сравнению с различными клиентскими / серверными приложениями SVN ...
В вики-статье, на которую вы ссылаетесь, полно ошибок. Следовательно, ваш ответ неверен. Проголосовали против. В вики есть страница обсуждения, которая ссылается на svnvsgit.com и объясняет, почему сравнение неверно.
Невероятно быстро? Я переместил проект ciforth с локального резюме на github. Это простой проект, но в нем есть один большой основной исходный файл из 10 000 строк. Если я попытаюсь обвинить этот файл, github выйдет из строя. В основном, если кто-то не довольствуется тем, что говорит быстро, и настаивает на использовании такого уточнения, это не сбалансированное мнение, что заставляет меня подозревать все, что вы говорите. Groetjes Albert
Создание репозитория - тривиальная операция для rcs, просто mkdir RCS, и даже в этом нет необходимости. Я все время создаю «новый репозиторий» для лекций, решений проблем Эйлера и каждой простой программной идеи, которая приходит мне в голову для проверки. Так что вы можете обойтись гораздо меньшими затратами, если хотите простых вещей. Последний баг был удален более 20 лет назад. Groetjes Albert
Все сводится к следующему:
Будет ли ваше развитие линейным? Если это так, вам следует придерживаться Subversion.
Если, с другой стороны, ваша разработка не будет линейной, что означает, что вам нужно будет создать ветвление для разных изменений, а затем объединить такие изменения с основной линией разработки (известной Git как основная ветвь), тогда Git сделает НАМНОГО больше для вас.
Да, git работает на Mac. Если вы используете macports для его установки, он даже установит интерфейс Mac для фиксации и просмотра интерфейсов.