Коя е най-добрата Version Control система ?

+12 гласа
230 прегледа
попитан 2016 май 5 в Обща дискусия от Mihaela.Petrova. (3,020 точки)
Здравейте. Интересувам ме коя Version Control система използвате и защо? Когато трябва да се прави избор за работата ни, кои са важните неща? Някой има ли опит с популярните VCS- GitHub, Git, BitBucket, Mercurial? Ако може да споделите вашият отпи с тези VCS?

Благодаря предварително.

2 отговори

+7 гласа
отговорени 2016 май 5 от valeri.hristov (7,340 точки)
избран 2016 май 5 от Mitko Vasilev
 
Най-добър отговор

Състемите за контрол на съдържанието или version control system(VCS) се използват да следят промените по време на разработката на софтуерни проекти и позволяват на членовете на екипа да се сработват и да работят върху едни и същи файлове. VCS позволяват на разработчиците автоматично да следят работата си, да виждаш последните промени по файловете и кой ги е направил, да връщат към предишни версии на проекта, когато е необходимо. Промените се следят автоматично и различните версии на проекта се пазят в хранилище(repository/repo). VCS позволяват да се експериментира, благодарение на разклонения(branch). Разработчиците могат да „се разклонят“ от основните файлове, за да качват промени, които могат да счупят нещо в други части на кода. В последствие като са сигурни в работата си могат да следят разклонението с основния проект. VCS се интегрират с множество инструменти за разработка като PaaS  provider-и, IDE-та и други.

VCS се предлагат като частен софтуер и такъв с отворен код. Повечето частни продукти се базират на тези с отворен код, но предлагат по-добър потребителски интерфейс и допълнителни функционалности. VCS се делят и на централизирани и разпределени. Централизираните имат едно централизирано хранилище, което се свързва с няколко устройства и предлага проста структура и повече контрол върху потребителите и достъпа. По-нов подход е разпределената система, която позволява всеки потребител да има свое копие на хранилището, включително всички файлове,директории и история на промените. Това премахва нуждата от сървър и подобрява процеса на работа от гледна точка на скорост и надеждност. Размера на проекта, броя на разработчиците, целите и бюджета оказват влияние върху решението дали да изберем частен VCS или такъв с отворен код, както и дали да е централизиран или разпределен.

Какво да имаме предвид, когато избираме VCS

  1. Централизиран или разпределен модел: Централизираните състеми съхраняват проекта на един сървър, който пази всички версии на файловете. Потребителите достъпват файловете от него. Разпределената система позволява на потребителите на клонират версията на всяка система и резултатът от това е, че всеки потребител пази back-up на целия проект при себе си. В зависимост от нуждата от сигурност, размера на екипа и други фактори, и двата модела могат да са полезни на разработчиците. Компаниите трябва да обмислят тези фактори, когато си търсят VCS
  2. Големина на екипа: Планирането на големината на екипа от разработчици и тяхната йерархия може да помогна много при избирането на VCS. По-големите екипи може да се нуждаят от разпределен модел, където всеки има версията на проекта при себе си, докато при по-малките екипи клонят повече към централизирана система, където само един член на екипа пази версията на целия проект
  3. Отворен код или частен: При избора на VCS имаме 2 възможности: отворен код или частен. Системите с отворен код позволяват на потребителите на вземат кода на системата и да правят собствени промени и подобрения в него. Частните системи са собственост на дадена компания и кодът им е скрит за хората и само разработчиците на компанията могат да правят промени по него. Това трябва да се има предвид, когато някоя компания си избира VCS
  4. Възможности за управление на проекта: Някои VCS идват „оборудвани“ с възможности за управление на проекти. Ако компаниите имат вече съществуващ такъв софтуер трябва да се уверят, че новият ще се интегрира със стария. Компаниите, които нямат такъв софтуер трябва да си търсят VCS с вградени възможности за управление на проекти
  5. Проследяване на бъгове: Някои инструменти за контрол на съдържанието включват и възможности за проследяване на бъгове. Компаниите трябва да обмислят дали съществуващата им система за следене на бъгове ще се интегрира с новите възможности на VCS. Ако пък нямат такава система трябва да си търсят VCS, който може да следи бъговете.

Основни ползи от VCS:

  • Увеличава сработването на разработчиците чрез лесно споделяне на файлове
  • Дава възможност на всеки разработчик да прилага промени върху собствената си версия на проекта
  • Намалява риска от загуба на файлове и цели проекти чрез автоматични back-up
  • Създава стъпка по стъпка история на промените по проекта, за да покаже как се е развивал
  • Бързо връщане на промените чрез възстановяване на по-стара версия на проекта
коментиран 2016 май 5 от valeri.hristov (7,340 точки)
BitBucket- най-добрата система за частни проекти
Добри страни
1.    Безплатно хостване на проекти при екип до 5 човека
2.    Поддържа GIT, което е най-популярната VCS в индустрията
3.    Лесно се интегрира с JIRA, което е инструмент за проследяване на проблеми
4.    Предоставя собствен десктоп клиент
5.    Върви с инструмент за проследяване на проблеми
6.    Сработването с екипа е лесно благодарение на интеграцията на Hipchat в платформата
Лоши страни
Не ми харесва, че продукти като JIRA могат да се интегрират, но са безплатни само за малко потребители или малко време, което прави продукта привлекателен за малки екипи.
Проблеми, които решава
Поддържа доста ефективно VCS и управлението на кода. Това дава възможност на членове на екипа да работят от вкъщи и все пак кодът да е на едно място, да се сработват чрез Hipchat и да проследяват проблеми в кода.

GitHub- основен източник на проекти с отворен код
Добри страни
GitHub е не само платформа за проекти с отворен код, а и една страхотна общност. Всеки разработчик трябва да има акаунт там, дори и да не помага в проекти с отворен код- можеш да научиш много като разглеждаш чужди проекти. Това е удивителен начин за споделяне на технически познания.
Лоши страни
GitHub няма безплатни частни хранилища, за разлика от доста други VCS, които предоставят неограничен брой безплатно. Разбира се, че това е начин да печелят, но голяма компания като GitHub може да печели и по начин, който не ограничава хората да правят частни хранилища.
Проблеми, които решава
Има последните технологии, чрез които предоставя сигурна, стабилна и надеждна услуга на потребителите.

 Git- най-добрият инструмент за контрол на версиите
Добри страни
След като си използвал централизирана VCS, Git изглежда много по-удобен, защото няма проблеми като „блокиран файл“, когато искаш да промениш нещо, а се окаже, че друг го използва.
Конфигурирането му в Windows и Linux е лесно. Освен това, Git има страхотна общност и документация онлайн. А това е от най-важните неща, които трябва търсим при избора на инструмент за production среда.
Лоши страни
Git работи доста бавно при хранилища над 1GB.
Проблеми, които решава
Като разпределена система работи прекрасно при отдалечени екипи

Microsoft Team Foundation Server(TFS)- страхотен начин да следиш прогреса си
Добри страни
TFS се справя страхотно с проследяването на бъгове и следенето и управлението при внедряване в различни среди. Много добре управлява изискванията, задачите, тестовете и всякакви други задачи. Може да се достъпва отдалечено през браузър, което го прави изключително полезен. Също така е интегриран във Visual Studio и е доста лесно да се използва.
Лоши страни
Понякога работи бавно с някои инструменти. Когато нямаш връзка със сървъра може да се появят доста грешки, които са объркващи. А и следи само промени по кода,които са направени в TFS.
Проблеми, които решава
Позволява на разработчици в различни часови зони да работят по един проект. Прави разработката много по-ефективна.

Mercurial – страхотен за персонални проекти
Добри страни
Mercurial има всички характеристики на добра разпределена система за контрол на съдържението. Не само, че е полезен при сработване, а и възможностите му да следи промените и да връща към определена версия са прекрасни. Чрез него лесно може да се види всеки ред код и има инструменти,които правят проследяването на бъгове много по-бързо. Има и клиенти с графичен интерфейс като TortoiseHg и SourceTree, които правят използването му лесно, а също може и да се интегрира с различни IDE-та като Visual Studio, Eclipse и IntelliJ.
Лоши страни
Най-големият му проблем е липсата на вградена система за заключване на файлове, която е нужна при работа с големи двуични файлове, които не могат да се слеят.
Напоследък сякаш Mercurial остава на заден план в сравнение с git от гледна точка поддръжка. Най-вероятно заради популярността на GitHub има тенденция първо той да се поддържа във външните инструменти, редактори и IDE-та.
Проблеми,които решава
Справя се страхотно с проблема, че много хора работят върху едни и същи файлове.
+1 глас
отговорени 2016 май 5 от Preslav.Ivanov. (2,300 точки)

Браво на Валери, много изчерпателен отговор.

Аз лично предпочитам SVN. Има много добър addon за VS: AnkhSVN. Съвместно с assembla това е най-доброто което съм намерил за работа с source controls. От 3 години ги ползвам, няколко проекта имам там качени. За публичен профил съм си направил в GitHub където пращам готови неща а не такива по който работя.

...