Чи варто використовувати SVN або Git? [зачинено]


321

Я починаю новий розподілений проект. Чи варто використовувати SVN або Git, і чому?


5
Так, git працює на Mac. Якщо ви використовуєте макпорти для його встановлення, він навіть встановить передній кінець Mac для фіксації та перегляду інтерфейсів.
Сет Джонсон

3
можливо дублікат stackoverflow.com/questions/871 / ...

3
@Andre - тому що ви можете використовувати MonoDevelop - я перемикаюся з Vault на SVN, щоб я міг розробляти програмне забезпечення .NET на моєму mac або pc. Клієнта для Vault не було, але був SVN :-)
schmoopy


4
Github / bitbucket + sourcetree = небо! - sourcetreeapp.com
thecodeassassin

Відповіді:


253

SVN - це одне репо і багато клієнтів. Git - це репо з великою кількістю репортажів клієнтів, кожен з яких має користувач. Це децентралізовано до того моменту, коли люди можуть відстежувати власні редагування на місцевому рівні, не потребуючи натискання речей на зовнішній сервер.

SVN розроблений таким чином, щоб бути більш центральним, коли Git базується на кожному користувачі, який має власну рето Git, а ці репортажі змінюють зміни назад у центральний. З цієї причини Git надає особам кращий локальний контроль версій.

Тим часом у вас є вибір між TortoiseGit , GitExtensions (і якщо ви розміщуєте свій "центральний" git-сховище в github, їх власний клієнт - GitHub для Windows ).

Якщо ви хочете вийти з SVN, ви можете трохи оцінити Bazaar . Це одна з систем наступного покоління управління версіями, яка має цей розподілений елемент. Це не залежно від POSIX, як git, тому є вбудовані версії Windows, і вони підтримують деякі потужні бренди з відкритим кодом.

Але вам можуть навіть не потрібні подібні функції. Погляньте на особливості, переваги та недоліки розподілених VCS . Якщо вам потрібно більше, ніж пропозицій SVN, розгляньте одну. Якщо ви цього не зробите, можливо, ви захочете дотримуватися (в даний час) вищої інтеграції SVN на робочому столі.


24
Ви також можете подивитися на Hg (Меркурій)
Джоель

24
З жовтня 2008 року речі стали набагато кращими. Ви можете встановити TortoiseGit, взяти останню портативну версію MSysGit і сказати TortoiseGit, де її знайти. Я щойно перемістив своє велике репортаж svn на сьогоднішній день, тому що погана підтримка перейменування svn нарешті змусила мене злізти.
Ми всі Моніка

4
Переходячи на 2 роки, тепер у нас є кілька хороших інструментів для вікон. В даний час я використовую Netbeans з MSysGit. Мені теж пощастило з TortoiseGit. Я думаю, що це досить добре, щоб використовуватись у виробництві. Зважаючи на те, як важко керувати простими конфліктами в підривному режимі, це величезне вдосконалення.
Кейо

24
Ми активно використовуємо Git у Windows і вже давно. Git абсолютно фантастичний у Windows.
Charlie Flowers

13
@Oli Було б добре оновити свою відповідь (особливо про клієнта git Windows) на основі коментарів тут та вашого досвіду. Нинішня відповідь здається упередженою зараз, коли минуло 2-3 роки з часу її написання.
Аміт

111

Я ніколи не розумів цього поняття "git не є хорошим для Windows"; Я розвиваюся виключно під Windows, і у мене ніколи не було проблем з git.

Я б точно рекомендував git over subversion; його просто набагато більш універсальний і дозволяє "офлайн розвиток" таким чином, що підрив ніколи насправді не міг. Він доступний майже на кожній платформі, який можна уявити, і має більше можливостей, ніж ви, мабуть, коли-небудь використовуватимете.


9
Я, з іншого боку, мав досить багато проблем з git на вікнах, це робило справді дивні речі для мого репо. І я використовував найновішу версію в cygwin (це було щось на зразок місяця тому).
Роман Плошил

7
@ Роман: ну порт Cygwin навряд чи те саме, що і рідний порт win32. Я очікую, що порт Cygwin набагато менш перевірений ...
SamB

49
"Більше можливостей, ніж ви, мабуть, коли-небудь використовуватимете" - це червоний прапор у моїй книзі
BT

26
@ BT "червоний прапор" я не згоден. Я часто виявляю, що хочу, щоб було щось зробити, і після невеликого пошуку я з'ясував, що є кілька команд, про які я не знав про це. Я використовую GIT і на своїй машині Windows, і ще не маю великих проблем.
тестування123

@ testing123, але тоді вони не є функціями, "які ви, ймовірно, [n] коли-небудь використовувати", тому що ви фактично закінчили їх використовувати.
mulllhausen

77

Ось копія відповіді, яку я з тих пір видалив із дублюючого питання про Git vs. SVN (вересень 2009 р.).

Краще? Крім звичайного посилання WhyGitIsBetterThanX , вони різні:

один - центральний VCS, заснований на дешевій копії для гілок та тегів, інший (Git) - розподілений VCS на основі графіку змін. Див. Також Основні поняття VCS .


Ця перша частина породила кілька неправильно поінформованих коментарів, роблячи вигляд, що основна мета двох програм (SVN та Git) однакова, але вони реалізовані зовсім по-різному.
Щоб уточнити принципову різницю між SVN та Git , дозвольте перефразувати:

  • SVN є третім здійсненням перегляду контролю : RCS, то CVS і , нарешті , SVN управляти каталогами версіонірованних даних. SVN пропонує функції VCS (маркування та злиття), але його тег - це лише копія каталогу (наприклад, гілка, за винятком того, що ви не повинні "торкатися нічого до каталогу тегів"), і її злиття все ще складне, на даний момент засноване на мета -дані додано, щоб запам'ятати те, що вже було об'єднано.

  • Git - це управління вмістом файлів (інструмент, створений для об'єднання файлів), що перетворився на справжню систему управління версіями , засновану на DAG ( спрямованому ациклічному графіку ) комітетів, де гілки є частиною історії даних (а не самими даними). ), а теги - це справжні метадані.

Сказати, що вони не є «принципово» різними, тому що ви можете досягти одного і того ж, вирішити ту саму проблему, - це просто неправда на стільки рівнях.

  • якщо у вас є багато складних злиттів, робити їх з SVN буде довше і більше схильних до помилок. якщо вам доведеться створити багато гілок, вам потрібно буде керувати ними і об'єднувати їх, знову ж таки, набагато простіше з Git, ніж зі SVN, особливо якщо задіяна велика кількість файлів (швидкість тоді стає важливою)
  • якщо у вас є часткові злиття для незавершеної роботи, ви скористаєтеся областю (покажчик) Git, щоб здійснити лише те, що вам потрібно, приховати решту та перейти до іншої гілки.
  • якщо вам потрібна офлайн-розробка ... добре, що з Git ви завжди «в Інтернеті», зі своїм власним локальним сховищем, незалежно від робочого процесу, який ви хочете виконувати з іншими сховищами.

Проте коментарі до цієї старої (видаленої) відповіді наполягали:

VonC: Ви плутаєте принципову різницю у впровадженні (відмінності є дуже принциповими, ми обоє чітко погоджуємося з цим) із різницею у призначенні.
Вони обидва інструменти, які використовуються для однієї і тієї ж мети: саме тому багато команд, які раніше використовували SVN, досить успішно змогли скинути його на користь Git.
Якби вони не вирішили ту саму проблему, ця заміна не існувала б.

, на що я відповів:

"замінюваність" ... цікавий термін ( використовується в комп'ютерному програмуванні ).
Звичайно, Git навряд чи є підтипом SVN.

Ви можете досягти однакових технічних особливостей (тег, гілка, об'єднання) з обома, але Git не заважає вам і дозволяє зосередитись на вмісті файлів , не замислюючись про сам інструмент.

Ви, звичайно, не можете (завжди) просто замінити SVN на Git ", не змінюючи жодного з бажаних властивостей цієї програми (правильність, виконане завдання, ...)" (що є посиланням на вищезазначене визначення замінюваності ):

  • Один - це розширений інструмент редагування, інший - справжня система контролю версій.
  • Один підходить малий та середній монолітний проект із простим робочим процесом злиття та (не надто багато) паралельними версіями. SVN для цього достатньо, і вам можуть не знадобитися всі функції Git.
  • Інший дозволяє створювати середні та великі проекти на основі декількох компонентів ( одне репо на компонент ) з великою кількістю файлів для об'єднання між декількома гілками у складний робочий процес злиття, паралельні версії у галузях, оновлення злиття тощо. Ви можете це зробити за допомогою SVN, але вам набагато краще з Git.
    SVN просто не може керувати будь-яким проектом будь-якого розміру з будь-яким робочим процесом злиття. Git can.

Знову ж таки, їхня природа принципово інша (що потім призводить до різного впровадження, але це не суть).
Одні бачать керування редакцією як каталоги та файли, інші бачать лише вміст файлу (настільки, що порожні каталоги навіть не зареєструються в Git!).

Загальна кінцева мета може бути однаковою, але ви не можете їх використовувати однаково, а також не можете вирішити той самий клас проблем (за обсягом або складністю).


10
Я не погоджуюся з вами, що git і svn принципово різні, але я не згоден у багатьох ваших питаннях. svn, можливо, був написаний для заміни резюме, але вони жодним чином не пов’язані між собою, тоді як cvs починалися як сценарії зверху RCS, тому існує пряме відношення. Проте людина, яку ви цитуєте, має цілком рацію, вони обидва принципово керують переглядами файлів, реалізацією та процесом, в якому це відбувається (або як це відбувається), є деталями реалізації. Це як різниця між CRC і SHA1, принципово дуже різними, але вони роблять те саме.
Ерік Функенбуш

37

2 ключові переваги SVN, які рідко цитуються:

  1. Велика підтримка файлів. Окрім коду, я використовую SVN для управління домашнім каталогом. SVN - єдиний VCS (розповсюджений чи ні), який не задихається в моїх файлах TrueCrypt (будь ласка, виправте мене, якщо є ще один VCS, який ефективно обробляє файли 500MB +). Це відбувається тому, що поточні порівняння передаються потоково (це дуже важливий момент). Rsync неприйнятний, оскільки не є двостороннім.

  2. Часткове сховище (субдір) замовлення / реєстрація. Mercurial і bzr не підтримують це, і підтримка git обмежена. Це погано в командному середовищі, але неоціненно, якщо я хочу перевірити щось на іншому комп’ютері з домашнього режисера.

Просто мої переживання.


6
"Будь ласка, виправте мене, якщо є ще один VCS, який ефективно обробляє файли 500MB +" - Виконано, звичайно!
james creasy

8
Perforce = невільний. Також Perforce доступний не для всіх платформ.
WhyNotHugo

4
Чому б не помістити репортаж SVN INSIDE контейнерів truecrypt? Ви також можете тунель, що хоч ssh, і налаштувати сервер для зберігання конкретного репо в іншому файлі truecrypt. Це має додаткову перевагу в тому, що ви можете зробити часткові каси цього репо.
WhyNotHugo

1
@Hugo, наскільки я знаю, клієнт Perforce доступний для варіантів Windows, Unix, Linux, Mac, Amiga, BeOS, Cygwin, HPUX, IBM AS / 400, OS / 2, DEC VMS та Novell File Server. Чи є в списку якась відповідна платформа?
ей

1
Так, OpenBSD (і я це знав із досвіду, не потрібно було це гуглювати). Я думаю, що він також не буде працювати на maemo, хоча я можу помилитися (і так, я використовую git on maemo).
WhyNotHugo

25

Провівши додаткові дослідження та ознайомившись із цим посиланням: https://git.wiki.kernel.org/articles/g/i/t/GitSvnComppare_cb82.html

(Деякі витяги нижче):

  • Це неймовірно швидко. Жоден інший SCM, який я використовував, не міг не відставати від нього, і я багато використовував, включаючи Subversion, Perforce, darcs, BitKeeper, ClearCase та CVS.
  • Він повністю розподілений. Власник сховища не може диктувати, як я працюю. Я можу створювати гілки та вносити зміни під час відключення на своєму ноутбуці, а потім синхронізувати це з будь-якою кількістю інших сховищ.
  • Синхронізація може відбуватися на багатьох носіях. Канал SSH через HTTP через WebDAV, FTP або надсилаючи електронні листи з патчами, що застосовуються одержувачем повідомлення. Центральний сховище не потрібно, але його можна використовувати.
  • Гілки навіть дешевші, ніж у Subversion. Створити гілку так само просто, як записати на диск 41-байтний файл. Видалити гілку так само просто, як і видалити цей файл.
  • На відміну від Subversion гілки продовжують свою повну історію. без необхідності виконувати дивну копію і пройтися по копії. Під час використання Subversion мені завжди було незручно переглядати історію файлу на гілці, що сталася до створення гілки. від #git: spearce: я не розумію жодної речі про SVN на сторінці. Я зробив гілку i SVN і переглянувши історію, показав всю історію, файл у гілці
  • З'єднання гілок простіше і автоматичніше в Git. У програмі Subversion потрібно запам'ятати, з якої останньої версії ви злилися, щоб ви могли генерувати правильну команду злиття. Git робить це автоматично і завжди робить це правильно. А це означає, що менше шансів помилитися, об'єднавши дві гілки разом.
  • Злиття гілок фіксуються як частина належної історії сховища. Якщо я об'єднаю дві гілки разом або якщо я об'єднаю гілку назад у стовбур, з якого вона виникла, ця операція злиття записується як частина історії репосторів як виконана мною, і коли. Важко сперечатися, хто здійснив злиття, коли він знаходиться прямо там, у журналі.
  • Створення сховища - це тривіальна операція: mkdir foo; cd foo; git init Це все. Що означає, що я створюю сховище Git для всього цього дня. Я схильний використовувати одне сховище в класі. Більшість цих сховищ мають менше 1 Мб на диску, оскільки вони зберігають лише конспекти лекцій, домашні завдання та мої відповіді на LaTeX.
  • Внутрішні формати файлу сховища неймовірно прості. Це означає, що ремонт дуже легко зробити, але ще краще, оскільки це так просто, що його дуже важко зіпсувати. Я не думаю, що у кого-небудь ще не було пошкоджено сховище Git. Я бачив, як Subversion із Fsfs псується. І я бачив, що Berkley DB занадто багато разів корумповує себе, щоб довіряти свій код в програмі bdb Subversion.
  • Формат файлу Git дуже добре стискає дані, незважаючи на це дуже простий формат. Репозиторій CVS проекту Mozilla становить близько 3 ГБ; це близько 12 ГБ у форматі fsfs Subversion. У Git це близько 300 Мб.

Прочитавши все це, я переконаний, що Git - це шлях (хоча трохи кривої навчання існує). Я також використовував Git і SVN на платформах Windows.

Я хотів би почути, що мають сказати інші, прочитавши вище?


15
Git неймовірно швидкий на деяких операціях, головним чином тому, що операція впливає лише на ваш локальний сховище. Git в репозиторій, наприклад, не повинен справедливо порівняти з фіксуванням SVN, так як в репозиторії SVN також поштовх зміни до сховища аеродрому для іншої частини вашої команди. Для цього потрібне звернення до мережі, а порівняння Git не має мережевого зобов’язання на передачу мережі припускає недоречне порівняння. Якщо ви скористаєтеся, а потім втратите жорсткий диск, з Git ви втратили свої зміни. Це добре, якщо на це ви робите очікувати, але це не очікується в нерозподілених SCM.
Едвін Бак

1
@EdwinBuck Не беручи до уваги те, що робив Waqar, тести навіть з врахуванням мережевого часу git мають тенденцію бути швидшими: git-scm.com/about/small-and-fast
Sqeaky

Ваша точка "Створення репозиторію - це тривіальна операція" надзвичайно важлива, особливо в Windows: порівняно зі SVN набагато простіше швидко імітувати купу взаємопов'язаних розподілених репостів, які всі з'єднані з центральним (--безпечним) репо з Git, ніж це зробити аналогічно SVN (встановити серверну програму Windows SVN тощо). Також (химерно) я вважаю, що Git є більш послідовним у всіх ОС: командний рядок дуже добре розроблений і, таким чином, достатньо більшої частини часу (і практично однаковий між ОС) та різними нативними програмами для клієнтів / серверів SVN ...
Shivan Dragon

1
Стаття Вікі, на яку ви посилаєтесь, сповнена помилок. Тому ваша відповідь неправильна. Захищений. На вікі є сторінка розмов, яка посилається на svnvsgit.com, де розповідається, чому порівняння неправильне.
bahrep

Неймовірно швидко? Я перемістив проект ciforth з місцевого відеозапису на github. Це простий проект, але має один великий основний вихідний файл із 10000 рядків. Якщо я спробую використати вину за цей файл, github потрапляє в тайм-аут. Здебільшого, якщо хтось не вдоволений швидко говорити, і наполягайте на використанні такого кваліфікуючого, це не виважена думка, що робить мене підозрілим щодо всього, що ви говорите. Groetjes Albert
Альберт ван дер Хорст

12

Я створив би сховище Subversion. Роблячи це таким чином, окремі розробники можуть вибрати, чи використовувати клієнтів Subversion чи клієнтів Git (з git-svn). Використання git-svnне дає всіх переваг повноцінного рішення Git, але це дає окремим розробникам великий контроль над власним робочим процесом.

Я вважаю, що мине Git так само добре, як і для Unix та Mac OS X (оскільки ви просили) пройде порівняно короткий час.

Subversion має чудові інструменти для Windows, такі як TortoiseSVN для інтеграції Explorer і AnkhSVN для інтеграції Visual Studio.


11

Найцікавіше: я розміщую проекти в Subversion Repos, але отримую доступ до них за допомогою команди Git Clone.

Будь ласка, читайте Програму з Git у проекті Google Code

Хоча Google Code споконвічно говорить про Subversion, ви можете легко використовувати Git під час розробки. Пошук "git svn" дозволяє припустити, що ця практика є широко поширеною, і ми також радимо вам експериментувати з нею.

Використання Git у сховищі Svn дає мені переваги:

  1. Я можу працювати розподіленим на декількох машинах, здійснюючи посадки і тягнучи з них до них
  2. У мене є центральне backup/public сховище svn, щоб інші могли перевірити
  3. І вони можуть безкоштовно використовувати Git самостійно

3
Лише зауваження: Станом на липень 2011 року, Google Code підтримує Git спочатку.
Джеремі Салвен

9

Насправді не відповідаю на ваше запитання, але якщо ви хочете отримати переваги розподіленого контролю за версією - це звучить так, як ви - і ви використовуєте Windows, я думаю, вам буде краще використовувати Mercurial, а не те, що Git як Mercurial має набагато кращу підтримку Windows. У Mercurial теж є порт Mac.


9

Якщо ваша команда вже знайома з програмними програмами для керування версіями та джерелами, такими як cvs або svn, я рекомендую вам дотримуватися SVN. Мені дуже зручно з svn, але для поточного проекту електронної комерції, який я роблю на django, я вирішив працювати над git (я використовую git у svn-режимі, тобто з централізованим репо, на яке я натискаю і тягну з метою співпраці принаймні з одним іншим розробником). Іншому розробнику зручно працювати з SVN, і хоча досвід інших може відрізнятися, ми обидва переживаємо справді поганий час для цього маленького проекту. (Ми обоє жорсткі користувачі Linux, якщо це взагалі має значення.)

Звичайно, ваш пробіг може змінюватися.


8

Безумовно svn, оскільки Windows - у кращому випадку - громадянин другого класу у світі git(див. Http://en.wikipedia.org/wiki/Git_(software)#Portability для отримання більш детальної інформації).

ОНОВЛЕННЯ: Вибачте за розірване посилання, але я відмовився від спроби змусити SO працювати з URI, що містять дужки. [посилання виправлено зараз. -ед]


1
FYI: додайте URL у кутові дужки або замініть круглі дужки на% 28 та% 29.
PhiLho

1
Чи буде кодування URL-адреси працювати для синтаксису [] ()?
Хенк Гей

16
Це неправильно FUD. Git є фантастичним для Windows. І SVN скрізь поганий.
Charlie Flowers

6
Для всіх тих, хто мене сприймає, поверніться назад і подивіться на коментарі розробників з 2008 року: цілком зрозуміло, що Лінус і банда не піклувалися про підтримку Windows. Це добре: я теж не хочу цього робити, і моє програмне забезпечення не настільки складне, як VCS, який очікує поведінки POSIXish від файлової системи. Однак здається несправедливим охарактеризувати мою заяву як FUD, якщо подивитися на контекст.
Хенк Гей

2
Можливо, у 2008 році git був поганий у Windows, але я використовую msysgit з 2009 року, і він працює бездоганно. Це включає gitk, офлайн-еквівалент GitHub на робочому столі.
Дан Даскалеску

8

Головне - Git - це розподілений VCS, а Subversion - централізований. Розподілені VCS трохи складніше для розуміння, але мають багато переваг. Якщо вам не потрібні ці переваги, Subversion може стати кращим вибором.

Інше питання - підтримка інструментів. Який VCS краще підтримується інструментами, які ви плануєте використовувати?

EDIT: Три роки тому я відповів так:

І Git наразі працює в Windows тільки через Cygwin або MSYS . Subversion підтримувала Windows з самого початку. Оскільки git-рішення для Windows можуть працювати для вас, можуть виникнути проблеми, оскільки більшість розробників Git працюють з Linux і не мали портативності на увазі з самого початку. На даний момент я віддаю перевагу Subversion для розробки під Windows. Через кілька років це може бути неактуальним.

Тепер світ трохи змінився. Git має хорошу реалізацію у Windows зараз. Хоча я не тестував на Windows (оскільки я більше не використовую цю систему), я впевнений, що всі основні VCS (SVN, Git, Mercurial, Bazaar) мають належну реалізацію Windows. Ця перевага для SVN відсутня. Інші пункти (централізований проти розподіленого та перевірка на підтримку інструменту) залишаються дійсними.


Я оптиміст, що горизонт непотрібності буде набагато коротшим, ніж кілька років.
Грег Х'югілл

Так, можливо, це буде лише один рік. Git має динамічну спільноту розвитку. Але підрив теж є. Через рік-два вам доведеться ще раз переглянути обох, щоб відповісти на це питання.
Менмент

1
Зараз це вже рік-два. Як це виглядає? :)
Мерлін Морган-Грем

3
У Git бракує розширення розповсюдженої моделі SCM на інші фази конвеєра розробки програмного забезпечення. У нас немає хорошої моделі для систем побудови розподілених релізів, розподіленого автоматизованого тестування, контролю якості, контролю випусків тощо. Ми просто отримуємо деяку експериментальну підтримку розподіленої резервної копії, і це вже після десятиліть досліджень. Таким чином, Git пропонує більше розробнику і менше процесу розробки програмного забезпечення. Зрештою, всі реалізації Git дозволяють одне репо бути центральним, що спрощує найцікавіші здібності Git до факсиміле SVN.
Едвін Бак

1
@hibbelig Git не має центрального сховища, кожне сховище ефективно (за рахунок його розподіленої конструкції) рівним. Це означає, що ви або переробляєте виробничий конвеєр, щоб можливо обробляти всі сховища однаково, або штучно благословляти одне сховище, яке має статус "штучно підвищеного" (він же є центральним сховищем ). Якщо ви робите перший, ніхто не знає багато про побудову паралельних трубопроводів, де випуск може надійти з будь-якого столу розробника, якщо ви зробите останнє, обіцянка розподіленої обробки обробляється централізованою конвенцією.
Едвін Бак

6

Я б вибрав SVN, оскільки він є більш поширеним і більш відомим.

Я думаю, Git буде кращим для користувача Linux.


1
Однак це швидко змінюється. SVN втрачає частку ринку, в той час як доходи GIT: Наприклад: wikivs.com/wiki/Git_vs_Subversion#Popularity або programmers.stackexchange.com/questions/136079 / ...
Zelphir Kaltstahl

@ Zelphir: Я б не зателефонував 7 років швидко, але так, GIT отримує частку ринку і особливо краще для об'єднання файлів.
Беркхард

4

Git ще не підтримується в Windows, а поки що не підтримується. Він оптимізований для систем Posix. Однак запуск Cygwin або MinGW дозволяє запустити Git успішно.

У наш час я віддаю перевагу Git над SVN, але це потребує певного часу, щоб подолати поріг, якщо ви родом із CVS, SVN-землі.


8
Визначте «рідне». msysgit працює чудово
Мілан Бабушков

4

Я, мабуть, вибрав би Git, бо вважаю, що він набагато потужніший за SVN. Є дешеві хостинг послуг , доступних кодів , які працюють просто чудово для мене - ви не повинні робити резервні копії або будь - яких робіт по технічному обслуговуванню - GitHub є найбільш очевидним кандидатом.

При цьому я не знаю нічого про інтеграцію Visual Studio та різних систем SCM. Я думаю, що інтеграція зі SVN помітно краща.


4

Я використовував SVN давно, але щоразу, коли я використовував Git, я відчував, що Git набагато потужніший, легший і хоча трохи кривої навчання, але він кращий, ніж SVN.

Я зазначив, що кожен проект SVN, по мірі його зростання, стає дуже великим проектом, якщо його не експортують. З іншого боку, проект GIT (разом з даними Git) має дуже малу вагу.

У SVN я мав справу з розробниками від початківців до експертів, і новачки та посередники, здається, вводять файлові конфлікти, якщо вони копіюють одну папку з іншого проекту SVN з метою її повторного використання. Тоді як, я думаю, в Git ви просто скопіюєте папку і вона працює, тому що Git не вводить папки .git у всі свої папки (як це робить SVN).

Після довгого спілкування з SVN я, нарешті, думаю перенести своїх розробників і мене на Git, оскільки легко співпрацювати та об'єднувати роботу, а також одна велика перевага полягає в тому, що зміни локальної копії можуть бути здійснені стільки ж бажано, а потім, нарешті, за один раз відсувається до гілки на сервері, на відміну від SVN (де нам доводиться час від часу робити зміни в сховищі на сервері).

Хто-небудь, хто може допомогти мені вирішити, чи дійсно я повинен їхати з Git?


Я б не закликав жодного розробника, який скопіював папку, керовану SVN, в інший проект, щоб повторно її використовувати і не очікував, що очевидні проблеми будуть "проміжними". Я б назвав їх послушниками. Так, ви маєте рацію, це пов'язано з підпапкою .svn, яка повідомляє SVN, до якого сховища належать файли. Якщо користувач видалив цю підпапку .svn, він міг імпортувати папку в новий SVN-проект. Я все ще з SVN, але мої потреби мало. GIT чудово підходить для великих проектів.
діаста

3
Останнім клієнтам svn не потрібна .svnпапка у кожному підкаталозі. Це "виправляє" помилку копіювання до того, як це станеться.
Едвін Бак

4

Зводиться до цього:

Чи буде ваш розвиток лінійним? Якщо так, то слід дотримуватися Subversion.

Якщо, з іншого боку, ваш розвиток не буде лінійним, це означає, що вам потрібно буде створити розгалуження для різних змін, а потім об'єднати такі зміни назад в основну лінію розвитку (відому Git як головну гілку), тоді Git зробить МНОГО більше для вас.


3

ви пробували Bzr ?

Це досить добре, кононічно (люди, які роблять Ubuntu) зробили це тому, що їм нічого не подобалося на ринку ...


Підтримка windows дійсно потребує трохи роботи, хоча. Не так вже й багато, що я не дуже радісно використовував це для всіх моїх останніх програмувань під Windows (з якими я займався досить небагато), або чогось іншого, але все-таки ...
SamB

Це майже 100% часу з ОС, що люди "зробили це [будь-яке програмне забезпечення], тому що нічого не сподобалось на ринку".
WhyNotHugo

@Hugo З відкритим кодом, якби їм щось сподобалось на ринку, вони зробили б свій внесок у нього, а не роблять щось нове.
проголошено

Це зовсім не відповідь на питання
Альберт ван дер Хорст

@AlbertvanderHorst Ні, це не так, на питання відповіли в дні дикого заходу, коли ніхто краще не знав, і запропонували альтернативу. Спірний у моїй поспіху, схоже, що я також неправильно написав ім'я Canonical. Мені так соромно!
Омар Кухеджі

3

Чи можу я розширити питання і запитати, чи Git добре працює на MacOS?

Відповідь на коментарі: Дякую за новину, я з нетерпінням чекав спробувати. Я встановлю його вдома на своєму Mac.


1
Так, це прекрасно працює. Я встановив його через MacPorts і використовую щодня.
Грег Х'югілл

Це робить. Це чудово у будь-якій системі на основі POSIX (Unix, Linux, Solaris, BSD тощо). Це справді лише Windows, де криється проблема.
Олі

і git-gui та gitk, ймовірно, працюють так само під OS-X, як у Linux та Windows. На відміну від tortoiseSVN, який AFAIK є лише вікнами?
Девід Шмітт

@David Schmitt: ну, tortoisesvn.tigris.org називає це "розширенням оболонки Windows для підриву", тому я вважаю так, так ;-).
СамБ

@Robert: яким був ваш досвід роботи з Git на OS X?
Девід Шмітт


2

SVN здається хорошим вибором під Windows, на що вказують інші люди.

Якщо хтось із ваших розробників хоче спробувати GIT, він завжди може використовувати GIT-SVN, де репозиторій SVN відтворений у сховищі GIT. Тоді він повинен мати можливість локально працювати з GIT, а потім використовувати SVN для публікації його змін у головному сховищі.


1

Вам потрібно йти з DVCS, це як квантовий стрибок у керуванні джерелами. Особисто я використовую Monotone і його прискорений час розвитку не закінчується. Ми використовуємо його для Windows, Linux та Mac, і він був дуже стабільним. У мене навіть є будівельник, який робить нічні побудови проекту на кожній з платформ.

DVCS під час розповсюдження зазвичай означає, що ви створите центральний сервер саме для того, щоб люди підштовхували зміни до та з них.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.