Використання Subversion як сховища артефактів проти певного інструменту управління артефактами


19

TL; DR: Навіщо використовувати щось на зразок Apache Archiva або Sonatype Nexus як сховище артефактів замість Subversion?

Система збірки, яку я використовую, наразі має велику кількість двійкових крапок (зображень, звукових файлів, скомпільованих бінарних файлів тощо), як вхідних, так і вихідних даних до наших збірок. Наша система управління ними дуже спеціальна; деякі перевіряються в наше сховище Subversion поряд з нашим кодом, деякі зберігаються в іншому місці поза будь-яким офіційним контролем версій.

Я дивлюся на консолідацію цього, тому у нас є щось більш послідовне та просте у використанні, яке відокремлює бінарні артефакти від коду.

Google каже мені, що є декілька сховищ артефактів ( Archiva , Nexus , Artifactory ,…), але, читаючи, я не бачу жодної переваги від використання цих над Subversion. Це буде доглядати за бінарними файлами - це вже так, що для деяких наших двійкових файлів, ми просто хотіли б переставити макет сховища, щоб відокремити їх від коду - і має помітну перевагу, що ми вже маємо сервери Subversion та досвід.

Так. Яка перевага від використання спеціальної системи управління артефактами, ніж використання загального інструменту управління версіями, як Subversion?


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

Відповіді:


13

Коротка відповідь: Зазвичай вам не потрібна історія бінарних артефактів і змін цих артефактів, вам просто потрібні конкретні версії.

Більш довга відповідь: Кожен раз, коли ви здійснюєте невелику зміну бінарного файлу, системи контролю версій не мають жодного способу створити дельту - різницю між двома файлами - тому це створює абсолютно нову копію.

У CVCS, як SVN, це не такий великий біль, тому що у вас є лише одна центральна копія вашого сховища - ваша локальна копія - лише одна версія. (Хоча навіть тоді ваш сховище може стати дуже великим, що робить перевірки повільніше.) Але що станеться, якщо пізніше ви перейдете до DVCS, де кожна копія сховища має повну історію кожного файлу? Розмір змін стає дуже актуальним там.

А що це дає вам взамін за біль? Єдине, що він пропонує - це повернутися до попередньої версії вашого сховища та знати, що у вас є правильні бінарні файли для цієї версії.

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

Останнє - це те, що пропонують загалом сховища артефактів.

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


Гаразд, я повинен уникати використання мого поточного сховища Subversion як сховища артефактів, але чому б не створити нове сховище Subversion? Це, мабуть, має однакові переваги та недоліки; сховище артефактів, мабуть, матиме ті самі проблеми щодо зберігання великих двійкових даних.
me_and

@me_and: Ви могли це зробити. Але тоді вам доведеться керувати, яка редакція надає версію артефакту. Навіщо надавати собі таку додаткову роботу, коли сховище артефактів робить це за вас? Це як сказати: "Так я міг використовувати Блокнот для написання свого коду? Навіщо тоді турбуватися з Eclipse?" Крім того, ви ніколи не зможете по-справжньому видалити старі версії, щоб заощадити місце. Можна зі сховищем артефактів.
пдр

1
Щоб підкреслити та розширити відповідь від @pdr, якщо ви використовували svn як сховище бінарних артефактів, ви, ймовірно, зіткнетесь із проблемами зберігання, оскільки svn розроблений так, щоб ніколи не видаляти дані. В одному місці, де я працював, ми використовували svn для зберігання артефактів, і ми регулярно перевищували межі зберігання, оскільки важко (не неможливо, але хитро) видалити старі невикористані артефакти з магазину. Рідні інструменти сховища бінарних сховищ, такі як Artifactory та Nexus, дозволяють видалити непотрібні артефакти.
Меттью Скелтон

3
Виправлення: Subversion використовує внутрішньо бінарні дельти (і AFAIK лише ті). Я багато років тому робив експерименти зі збереженням файлів MS Office, і це було надзвичайно ефективно. Розмір сховища зростав дуже повільно, навіть при сильному перетасуванні 200 слайдів PowerPoint. Але ефективність алгоритму бінарної дельти сильно відрізнятиметься від типу файлу, і я думаю, що відсутність політики збереження є справжньою проблемою тут (щось, що ви могли б обійти з відфільтрованим дамп / завантаженням, але тоді ви почнете писати власне рішення).
Пітер Бекер

"системи управління версіями не мають жодного способу створити дельту" - проблема полягає в тому, що вони роблять саме так - з 2006 року ... subversion.apache.org/docs/release-notes/1.4.html#svndiff1 en.wikipedia. орг / вікі / Xdelta
RnR

1

Ми використовуємо SVN як сховище для складання релізів, і це дуже добре. У нас в одному сховищі випусків краще, ніж 30 гб різних збірок релізів, і він добре виконує розгортання для розгортання.

деякі переваги цього:

  • Бінарні файли, додані до SVN, стискаються майже на 60-70 відсотків у середньому економії місця.
  • SVN служить бібліотекою (артефакторною) для випусків, а сховище резервного копіювання для цілей відновлення після аварій.
  • SVN через https дозволяє безпечно доставити код випуску в DMZ.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.