Конкретні причини для використання Subversion? [зачинено]


22

Я хочу вибрати систему контролю версій для своєї компанії. Поки що я знаю, що у мене є Git, Subversion і Mercurial.

У наші дні я бачу, що Git є найбільш використовуваним, тому мені залишається цікаво: чи є якась конкретна причина все-таки використовувати Subversion, або я повинен перейти безпосередньо до Git?


36
Вони обидва працюють. Важливо те, чи відповідають вони вашим вимогам, про які ви нам не сказали.
Меттью Флінн


11
На якому аргументі ви виключаєте Mercurial?
mouviciel

8
-1 для суб'єктивних формулювань (приманка ІМХО) та "У ті дні я бачу, що Git є найбільш вживаним" - необхідне цитування. Git є надзвичайно поширеним в світі відкритого вихідного коду, але в корпоративному просторі це набагато рідше. Корпусу дуже подобається ідея єдиного, центрального, авторитетного сховища, і вони дуже повільно змінюються. У корпоративному просторі ви швидше бачите хороший CVS, ніж навіть SVN, не маючи на увазі DVCS.
Кіт

4
@RobinWinslow - SVN відрізняється від Git. Краще підходить для одних обставин, а гірше - для інших. Особисто я віддаю перевагу DVCS взагалі, і ви, очевидно, віддаєте перевагу Git, але обидва ці суб'єктивні думки. Вони не без цінності, але вони не належать на такий сайт.
Кіт

Відповіді:


46

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

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

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


16
Я не повністю згоден з вашою оцінкою, але я хотів би додати один важливий момент на користь SVN: Багато людей у ​​цій галузі комфортні зі SVN, але не знають достатньо Git, щоб з ним комфортно працювати. Якщо ваша команда звикла до SVN, то перехід на Git може зайнятись ціною. (Звичайно, може бути і навпаки).
Йоахім Зауер

8
Я б схвалив це десяток разів, якби міг. Багато людей ходять з диваком, але насправді не думають, навіщо їм потрібно розподілений контроль над джерелами.
Ейфорія

21
@Euphoric: Я точно знаю, чому я завжди хочу розподілене управління джерелами для кожного проекту. Він має важливий побічний ефект - зробити розгалуження та злиття простим, очевидним та надійним. Субверсія все ще забита в кутових випадках з розгалуженням, оскільки основна модель, яку вона обрала, просто ускладнює її.
Ян Худек

18
Розподілений контроль над версіями не є "придуманим". Це еволюція управління джерелом, подібно до того, як паралельне керування версіями було еволюцією над парадигмою блокування файлів.
JesperE

6
@MichaelBorgwardt, я насправді робив це кілька разів. Це набагато простіше, ніж із підривом, те, що все локально допомагає дуже багато, не потрібно пояснювати взаємодію «клієнт» та «сервер». Робочий процес у git або hg набагато природніший та інтуїтивніший (якщо ви тримаєтесь подалі від складних бітів, як редагування історії).
SK-логіка

19

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

Ми працюємо в основному з Visual Studio; інтеграція в IDE, безумовно, краща з SVN, ніж зараз з Git. Це може змінитися в майбутньому, але я, безумовно, врахував це у вашому рішенні так само, як і функції контролю версій.

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


Це хороший момент. Я думаю, що однією з причин, чому люди надають перевагу Git над SVN, є те, що Git має кращі інструменти для CLI. Але це може бути компенсовано хорошим стороннім графічним інтерфейсом SVN, як TortoiseSVN в Windows.
Ейфорія

2
Це одна з причин, коли ми пішли на Mercurial (і TortoiseHg) через Git. Переваги розподіленого контролю версій та гідне інтегрування інструментів та IDE.
HappyCat

15

Я фанат Git. Нещодавно мені довелося визнати, що одним із недоліків Git є те, що він ідентифікує версії з хешами як протилежні номерам випуску svn. Номер випуску можна легше передавати по телефону або щось подібне.

І це єдиний професіонал, який я можу собі уявити. Якщо ви дійсно хочете покластися на цю функцію, ви можете мати її в розподіленому та / або централізованому VCS Bazaar . У Git є теги, які можуть служити цілі.

У всякому разі, я просто не міг уявити собі розвиток без швидкого перемикання гілок та приховування. Ці дві функції поодинці перемогли SVN, де, наскільки я пам’ятаю одне і те ж завдання, потрібно було створити і перевірити ціле дерево в окремі каталоги для досягнення тієї ж мети.

Ці так звані "розширені функції управління розподіленими версіями" приходять з часом, і вам не доведеться їх вивчати на самому початку. Не бійтеся їх. Вони тут, щоб допомогти вам, а не заважати. І немає жодної проблеми створити центральний сховище для DVCS.


1
Це насправді спір, git потребує лише достатньо великої частини хешу, щоб можна було розмежувати, зазвичай щось достатньо ~ 6 символів достатньо, а не весь хеш.
TC1

2
На практиці ви ніколи не передаєте git hash. Ви можете використовувати будь-який унікальний префікс хеша, який зазвичай становить 6-7 символів.
JesperE

1
@JesperE: Так, але кількість випусків SVN з часом збільшується послідовно, тоді як хеши Git, навіть якщо ви скорочуєте їх, також можуть бути випадковими.
Кіт Томпсон

2

За допомогою SVN ви можете легко перевірити частини сховища до рівня папки, тоді як за допомогою git ви отримуєте весь сховище, включаючи всю історію.

Залежно від ситуації це може мати деякі переваги для SVN

(це також має деякі великі недоліки, такі як прихований ".svn" сміття на всьому дереві папок).


3
Примітка: немає .svn сміття з v1.7 - його тепер усе зберігається в одному місці.
gbjbaanb

Це невірно - git дозволяє оформити файли лише без історії, а також можна перевірити лише частини репо-єдиних файлів, якщо ви хочете. Це трохи складніше, ніж svn, але ємність є.
Benubird

2

"Якщо у вас є завдання, яке можна виконати за шість годин, краще написати інструмент, який виконує це за 20 хвилин, навіть коли на створення інструменту йде шість годин?"

Розподілений контроль над версіями - це інший звір, з яким потрібно боротися. Це вимагає значного навчання для кожного розробника. Якщо у вас є буфер для розміщення навчального процесу для кожного розробника, вам слід перейти до гарної розподіленої системи управління версіями. Після завершення фази навчання розподілене управління версіями набагато краще, ніж централізоване управління версіями.

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

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

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

EDIT Переваги GIT над SVN

  1. Не потрібний виділений сервер Насправді обидва можна використовувати без сервера.
  2. Може продовжувати розробку навіть без підключення до мережі.
  3. Управління філіями набагато простіше.
  4. Краща підтримка таких інструментів CI, як Bamboo

Хтось згадав інструментарій (для візуальної студії) як причину дотримуватися SVN. http://gitscc.codeplex.com/ надає підтримку GIT для Visual Studio.


6
SVN робить ручки виконавчі файли краще , ніж Git або Hg.
Підроблене ім’я

2
"Ви потрапите в вузьке місце десь у майбутньому, де вам доведеться врешті-решт планувати міграцію контролю версій ..." Вибачте, я не можу погодитися, що це є вагомою причиною зробити цей крок сьогодні. Я працював над багатьма проектами, де такий підхід призводить до того, щоб зробити справи складнішими, ніж вони повинні бути, і проект скасовують задовго до того, як він коли-небудь отримає можливість скористатися тими майбутніми перевагами. Іноді досить добре, досить добре. Дотримуйтесь YAGNI і займіться тим, що робить сьогодні робота. Буде достатньо часу, щоб пізніше турбуватися про міграцію. Принаймні, у вас все одно буде проект.
njr101

2
Once the learning phase is over Distributed Version Control is much better than Centralized Version Control.Я повністю не згоден з цим. У деяких обставинах це може мати певні переваги, але щось таке просте, як номер версії у форматі, що читається людиною, є величезною перевагою для багатьох організацій.
TZHX

1
@apeirogon - Все зводиться до того, що ви збираєтеся помістити у сховище. ГОЛОВА тільки в одному з основних сховищ, з якими я працюю, становить 11,1 ГБ! Якби я мав це в репортажі Git / bzr / hg, він, ймовірно, займе 100+ ГБ.
Підроблена назва

1
Звичайно, це тому, що саме цей репо-файл наповнений PCB-файлами та 3D-моделями, які мають бінарний формат і не дуже просторові. Рекомендація тут (Electronics.SE, наприклад, для людей, які зберігають файли дизайну на друкованій платі тощо) дуже відрізняється, ніж якщо хтось зберігає вихідний код.
Підроблене ім’я

1

чи буде якась конкретна причина використовувати Subversion в ті дні

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

Так, є всі ті складні посібники, які описують, як Git є тривіальним, як тільки ти зрозумієш, що гілки - це просто гомеоморфні ендофайнери, які відображають підмножини простору Гільберта. 1

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

Здебільшого, Git і Hg прості у використанні, і вони мають остаточні переваги перед SVN. Слон у кімнаті, звичайно, розгалужений: гілки просто працюють у Git та Hg. Навпаки, у SVN вони в кращому випадку хворобливі і в гіршому випадку зламані (злиття декількох голів).

Звичайно, ви все ще можете використовувати SVN. Ви також можете використовувати Windows XP. Однак більшість користувачів, які намагалися обидва, погоджуються з тим, що одна з альтернатив надзвичайно перевершує.


1 Так, я розумію, що це жарт. Я думаю.


Підручник з Git із гомеоморфними ендофункторами, які відображають підскладки гільбертового простору? Мені це потрібно прочитати! Але хіба це не стосується Дарка, про який написано в Haskell (на який я вважаю ендофунктор ) і натхненний квантовою механікою (отже, простір Гільберта )? Я дійсно не бачу, що Git і HG мають відношення до цих речей.
близько

@leftaroundabout Це жарт. Опис навіть не є точним (наскільки я знаю). Це riff на багатьох навчальних посібниках, які починаються з "git гілок, легко, як тільки ви зрозумієте, що ...", а після цього є складна метафора, характерна для домену.
Конрад Рудольф

1
Ви коли-небудь думали, що всі ці надмірно складні підручники існують не просто так? І що це все одно? Я ніколи не розумів одержимості натовпу DVCS розгалуженням, а потім реінтеграцією гілки для кожної дрібниці. Це завжди відчувалося мені як рішення у пошуках проблеми. Повторно інтегрувати філію у SVN важко, оскільки це в першу чергу справді німа і концептуально неправильна річ , і я дійсно не знаходжу жодного аргументу, який зводиться до того, що "наш продукт робить набагато простішу справу не так" дуже переконливий.
Мейсон Уілер

1
Що стосується роботи над декількома змінами паралельно, то визнаю, це трохи болісно, ​​але правильне рішення - стелаж, який планується в наступному випуску SVN. І більшу частину часу, якщо ви працюєте над кількома змінами одночасно (і особливо якщо ви робите це послідовно!), Це свідчить про більш широку проблему, яку слід вирішити на рівні організації, а не ввімкнено новою інструменти. (Дивіться вище, повторно "наш продукт значно полегшує роботу неправильно", і класична стаття Джоеля про переключення завдань людини.)
Мейсон Уілер

3
@KonradRudolph Об'єднання гілок назад до ствола працює чудово в останніх версіях SVN. Він стає стабільно кращим протягом декількох років, де зараз дуже добре.
Адам Брусс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.