Яка частина вашого проекту повинна бути в контролі вихідного коду?


54

Командний розробник розпочав роботу над новим проектом Drupal, а sysadmin запропонував їм лише вводити підкаталог сайтів / за замовчуванням у керування джерелами, оскільки це "зробить оновлення легко сценарієм". Відміняючи це дещо сумнівне твердження, воно ставить ще одне питання - які файли повинні знаходитись під контролем джерела? І чи існує ситуація, коли якусь велику частину файлів слід виключити?

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

Однак, я хотів би отримати інші думки з цього приводу. Чи є аргументи, щоб не мати все під контролем?


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

Відповіді:


71

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


1
@EdWoodcock: Ти маєш рацію, правильний порядок може бути справжнім болем, але іноді ти хочеш заново створити певний стан бази даних або необов’язково застосувати певні зміни під час тестування, а не відкидання / відтворення всієї справи. Я вважаю, що це залежить від проекту.
FrustratedWithFormsDesigner

1
Якщо взяти пункт, для цього потрібен рівень або прагматизм.
Ед Джеймс

3
@JayBazuzi: Посібники з налаштування робочої станції (в керуванні джерелами) повинні окреслювати необхідні інструменти та залежності, а також як встановити і звідки взяти інструменти. Підтримка зручного набору інструментів є важливим, але не є метою контролю джерел. Я думаю, якщо ви дійсно цього хотіли, ви можете додати файл інсталятора / .msi та деякі файли інструкцій, але це може бути нездійсненно на робочих місцях. Ви дійсно хочете перевірити у своїй системі управління джерелами VisualStudio Pro 2010 чи IBM RAD, XMLSpy тощо ? Багато робочих місць контролюють розгортання цих інструментів.
FrustratedWithFormsDesigner

2
@artistoex: Це розщеплення волосся. Як правило, передбачається, що у вікні збірки є ті самі бібліотеки, що і в областях розробників. Якщо вони відрізняються, з ІТ-менеджером щось не так. Все, що вам (в ідеалі) знадобиться, - це лише вихідний код. Для деяких проектів це не застосовується, але для більшості це повинно бути.
Майк S

1
@mike Я мав на увазі це. Я думаю, що Кент Бек у книзі про XP насправді запропонував це. Не така погана ідея. Ви майже на 100% впевнені, що зможете реконструювати всі фактори побудови. І не забувайте про те, що середовище, найімовірніше, зміниться протягом проекту.
artistoex

29

Найкраще вводити майже все під сонцем для контролю джерел.

  • Код

  • Бібліотеки

  • Ресурси

  • Побудова / розгортання сценаріїв

  • Створення сценаріїв та оновлення баз даних

  • Певна документація

  • Файли конфігурації для середовища

Єдине, що не повинно бути поставлено під контроль джерел - це створення артефактів для вашого проекту.


5
Переконайтеся, що "певна документація" не залежить від певного інструменту. Я зіткнувся з низкою проектів, які використовували щось на зразок версії SunOS Frame для виконання документів, вони перевіряли всі файли ".mif", але не отримані файли .ps або .pdf. Тепер, коли SunOS і Frame перенесені на смітник історії, багато документів із дизайну існують лише як заповітні паперові копії.
Брюс Едігер

2
@BruceEdiger У такому випадку я особисто хотів би отримати як інформацію про вихід, так і інформацію про інструмент. Якщо інструмент зникне, у вас, принаймні, є статична електронна копія :)
maple_shaft

Однією з переваг тут великої процесової компанії, джерело переходить у vcs, згенерований матеріал повинен перейти в систему управління конфігурацією, тому навіть якщо ваш інструмент не працює, у вас все ще є контрольовані результати
jk.

Як щодо конкретної версії компілятора, який ви використовуєте? Чорт, чому не вся ОС?
виграти

18

Я б сказав це;

  • будь-який файл, необхідний для складання, переходить у контроль версій
  • будь-який файл (який можна створити), згенерований збіркою, не робить

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


15

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


15

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

Деякі з відповідей тут говорять: "не ставити двійкові файли в управління джерелами". Це неправильно. Коли ви працюєте над продуктом з великою кількістю стороннього коду та безліччю бінарних бібліотек від постачальників, ви перевіряєте в бінарних бібліотеках . Тому що, якщо ви цього не зробите, то в якийсь момент ви збираєтеся оновити, і ви зіткнетеся з проблемою: збірка перервана, оскільки машина для збирання не має останньої версії; хтось дарує новому хлопцеві старі компакт-диски для встановлення; у вікі проекту є несвіжі інструкції щодо того, яку версію встановити; І ще гірше, якщо вам доведеться тісно співпрацювати з постачальником, щоб вирішити певну проблему, і вони надсилають вам п'ять наборів бібліотек за тиждень, ви повиннівміти відстежувати, який набір бінарних файлів демонстрував, яку поведінку. Система управління джерелом - це інструмент, який вирішує саме цю проблему.

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

А що відбувається, коли різні проекти вимагають різних ланцюжків інструментів? Справа в суті: Через пару років один з проектів отримав оновлення від постачальника, і всі Makefiles зламалися. Виявляється, вони покладалися на новішу версію виробництва GNU. Таким чином, ми все модернізували. Ну, ще один Makefiles проекту зламався. Урок: введіть обидві версії GNU make і запустіть версію, яка постачається з замовленням проекту.

Або якщо ви працюєте в місці, де все інше дико виходить з-під контролю, у вас є розмови на кшталт "Гей, сьогодні починається новий хлопець, де CD для компілятора?" "Данно, не бачив їх з тих пір, як Джек відмовився, він був охоронцем компакт-дисків". "Ага, чи не це було раніше, ніж ми піднялися з другого поверху?" "Можливо, вони в коробці чи щось таке". А оскільки інструментам три роки, сподівання отримати цей старий компакт-диск від постачальника немає.

Усі ваші сценарії побудови належать до управління джерелами. Все! Повністю до змінних середовища. Ваша машина збирання повинна мати змогу запустити збірку будь-якого з ваших проектів, виконавши єдиний скрипт у корені проекту. ( ./buildце розумний стандарт; ./configure; makeмайже настільки ж хороший.) Сценарій повинен створити середовище, як потрібно, а потім запустити будь-який інструмент, який створює продукт (make, ant, тощо).

Якщо ви думаєте, що це занадто багато роботи, це не так. Це фактично економить тонну роботи. Ви створюєте файли один раз на початку часу, а потім під час оновлення. Жоден самотній вовк не може модернізувати власну машину і здійснити купу вихідного коду, який залежить від останньої версії якогось інструменту, порушуючи збірку для всіх інших. Коли ви наймаєте нових розробників, ви можете сказати їм перевірити проект та запустити ./build. Коли версія 1.8 має багато настройки продуктивності, а ви підправити код, прапори компілятора, і змінні оточення, ви хочете , щоб переконатися , що нові прапори компілятора випадково не одержати застосовуються до версії 1.7 патча будує, тому що вони дійсно потребують код зміни, які відбуваються разом з ними, або ви бачите деякі волохаті умови перегонів.

Найкраще , що це врятує вашу дупу колись: уявіть, що ви доставляєте версію 3.0.2 свого продукту в понеділок. Ура, святкуй. У вівторок вранці VIP-клієнт зателефонував на гарячу лінію підтримки, поскаржившись на цей надкритичний, терміновий помилку у версії 2.2.6, який ви доставили 18 місяців тому. І вам все одно доведеться підтримувати це, і вони відмовляються від оновлення, поки ви точно не зможете підтвердити, що помилка зафіксована в новому коді, і вони досить великі, щоб змусити вас танцювати. Є два паралельних всесвіту:

  • У Всесвіті, де у вас немає бібліотеки, ланцюжка інструментів та сценаріїв побудови в керуванні джерелами, і у вас немає надійної системи CM .... Ви можете перевірити правильну версію коду, але це дає ви всілякі помилки при спробі створення. Подивимось, чи ми оновили інструменти в травні? Ні, це були бібліотеки. Гаразд, поверніться до старих бібліотек - зачекайте, були два оновлення? Ага так, це виглядає трохи краще. Але зараз ця дивна аварія лінкера виглядає знайомою. О, це тому, що старі бібліотеки не працювали з новою ланцюжком інструментів, тому нам довелося оновити, правда? (Я пошкодую вам агонію решти зусиль. Минуло два тижні, і ніхто не буде радий після цього, не ви, не керівництво, не замовник.)

  • У Всесвіті, де все знаходиться в контролі джерел, ви перевіряєте тег 2.2.6, готові налагодження налагодження через годину або близько того, проводите день чи два, відтворюючи "VIP-помилку", відслідковуйте причину, усуньте її поточний випуск та переконайте замовника оновити. Стресовий, але не настільки ж поганий, як в іншому всесвіті, де ваша волосся на 3 см вище.

З урахуванням сказаного, ви можете зайняти це занадто далеко:

  • У вас повинна бути стандартна установка ОС, на якій у вас є "золота копія". Задокументуйте це, ймовірно, у системі README, яка знаходиться у контролі джерел, щоб майбутні покоління знали, що версії 2.2.6 та новіші лише побудовані на RHEL 5.3 та 2.3.0, а пізніше лише на Ubuntu 11.04. Якщо вам легше керувати ланцюжком інструментів таким чином, перейдіть до цього, просто переконайтеся, що це надійна система.
  • Проектна документація громіздка для підтримки в системі управління джерелами. Документи проекту завжди випереджають сам код, і не рідкість працювати над документацією для наступної версії, працюючи над кодом для поточної версії. Особливо, якщо всі ваші документи проекту - це бінарні документи, які ви не можете розрізнити чи об'єднати.
  • Якщо у вас є система, яка контролює версії всього, що використовується в збірці, використовуйте її ! Просто переконайтесь, що легко синхронізувати всю команду, щоб усі (включаючи машину збирання) тягнули з одного і того ж набору інструментів. (Я думаю про системи, такі як Debian pbuilder і відповідальне використання virtuolenv python.)

Не забудьте перевірити будь-яке важкозамінне обладнання. Одна компанія втратила збірку, оскільки у них більше не було деякого процесора (HPPA? 68040?), На якому працювали інструменти збирання.
hotpaw2

1
Що означає «система CM»?
Бодо

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

Схиляючись через пораду поставити ланцюжок інструментів і створити артефакти в контролі джерел. Так, якщо у вас є погані управлінські рішення для них, іноді це може знадобитися, але це ніколи не бажано. А популярні засоби OSS, такі як PHP, завжди будуть доступні (оскільки жодного видавця не можна зникати), тому це, безумовно, не потрібно у випадку цього питання.
Marnen Laibow-Koser

13

Єдині речі, які я не ставлю під контроль джерела, - це файли, які ви можете легко регенерувати або конкретні для розробника. Це означає виконувані файли та двійкові файли, що складаються з вашого вихідного коду, документації, яка генерується при читанні / розборі файлів під керуванням джерела, та специфічних для IDE файлів. Все інше переходить у контроль версій та належним чином керується ним.


7

Випадок використання для управління джерелом: Що робити, якщо всі наші машини розробників і всі наші машини розгортання потрапили під метеор? Ви хочете, щоб відновлення було максимально близьким до оформлення замовлення та побудови. (Якщо це занадто нерозумно, ви можете піти з "найняти нового розробника".)

Іншими словами, все, окрім ОС, додатків та інструментів, має бути у VCS та у вбудованих системах, де може бути залежність від певної бінарної версії інструменту, я також бачив інструменти, що зберігаються у VCS!

Неповний контроль над джерелом - один з найпоширеніших ризиків, який я бачу під час консультацій - є всілякі тертя, пов’язані із залученням нового розробника або налаштуванням нової машини. Поряд з концепціями постійної інтеграції та постійної доставки, ви повинні мати відчуття "безперервного розвитку" - чи може ІТ-людина створити нову машину розробки або розгортання по суті автоматично, щоб розробник міг розглянути код перед тим, як закінчити. їхня перша чашка кави?


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

+1 для довідки про метеор, що підводить підсумки.
muffinista

Чи може хтось вказати на приклад (наприклад) java-проекту з повною ланцюжком інструментів під контролем оборотів, щоб його можна було перевірити та використовувати прямо?
andersoj

@andersoj Check out boxen.github.com
Ларрі OBrien

6

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

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


2

Drupal використовує git, тому я буду використовувати термінологію git. Я би використовував підрепозити для кожного модуля, щоб мати можливість знімати оновлення модулів з офіційних репортажів Drupal, зберігаючи структуру окремих розгортань. Таким чином ви отримуєте переваги написання, не втрачаючи переваг, щоб все було під контролем джерела.


1

Все має бути під контролем джерела, крім:

  • Файли конфігурації, якщо вони містять параметри конфігурації, які відрізняються для кожного розробника та / або кожного середовища (розробка, тестування, виробництво)
  • Кешуйте файли, якщо ви використовуєте кешування файлової системи
  • Файли журналу, якщо ви входите в текстові файли
  • Все, що схоже на кеш-файли та файли журналів, створює вміст
  • (Дуже) Великі двійкові файли, які навряд чи зміняться (деякі системи управління версіями їх не люблять, але якщо ви використовуєте hg або git, вони не сильно проти)

Подумайте про це так: Кожен новий член команди повинен мати можливість оформити робочу копію проекту (мінус елементи конфігурації).

І не забудьте також змінити схему бази даних (прості скидання sql кожної зміни схеми) також під контроль версій. Ви можете включити документацію користувача та api, якщо це має сенс для проекту.


@maple_shaft викликає важливу проблему з моїм першим твердженням щодо файлів конфігурації середовища в коментарях. Я хотів би уточнити, що моя відповідь полягає в специфіці питання, що стосується Drupal або загальних проектів CMS. У таких сценаріях типово маєш локальну та виробничу базу даних, і одним із параметрів конфігурації середовища є облікові дані цих баз даних (та подібних даних). Бажано, щоб вони НЕ знаходились під контролем джерела, оскільки це створювало б декілька проблем щодо безпеки.

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


3
-1 ВЕЛИКОЗАГАЛЬНО з вашим твердженням про файли конфігурації, які не належать до керування джерелом Можливо, специфічні для конфігурації файли для розробника так, однак файли конфігурації, визначені для оточення, необхідні, якщо ви хочете мати можливість одномоментної збірки та розгортання будь-якого середовища.
maple_shaft

2
@maple_shaft У контексті запитання (проект Drupal або веб-проект gereric CMS) "одноетапна збірка та розгортання будь-якого середовища" є надзвичайно малоймовірним сценарієм (чи будете ви вкладати дані виробничої бази даних у все?). Я відповідаю на запитання, не надаючи загальних рекомендацій щодо того, що слід поставити під контроль версій. - Але ваш вітальний голова вітається :)
yannis

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

@maple_shaft Не хвилюйся з приводу зворотного перегляду (я відредагував це питання, але сміливо залишай його, якщо хочеш). Що стосується контролю версій, захищених паролем: нещодавно нам довелося зіткнутися з ситуацією, коли ноутбук був викрадений у члена нашої команди управління, який містив пароль до нашої системи управління версіями (на той час у нас були дані S3). З його боку це було великим сніфу (ноутбук не був захищений паролем, і кілька інших деталей, які я не можу реально розкрити), але все ж це щось, що може трапитися з усіма. На основі цього досвіду ми перемістили все з vcs.
янніс

@maple_shaft, і хоча це може здатися, що я виступаю за параноїю, тепер ми йдемо до крайності, щоб захистити що-небудь, пов’язане з обліковими записами, від подібних зловживань.
янніс

1

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

Наприклад, у контролі джерел не входять:

  • згенерований код
  • згенеровані бінарні файли
  • все, що створено вашою збіркою
  • все, що створено під час виконання вашими послугами, процесом, веб-додатком

Що стосується контролю джерела:

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

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


1

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

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

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

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

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


0

Моя відповідь досить проста: не бінарні файли. Як наслідок, майже все інше.

(Очевидно, не резервне копіювання бази даних чи міграція схем чи дані користувача.)


Міграційні схеми абсолютно перебувають у контролі джерел. Таким чином ви знаєте, яку схему БД очікує код.
Marnen Laibow-Koser

0

Управління джерелом - це механізм відстеження змін. Використовуйте його, коли хочете знати, хто змінив, що і коли.

Контроль джерела не безкоштовний. Це додає складності вашому робочому процесу та вимагає підготовки нових колег. Зважте переваги проти витрат.

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

Контроль над джерелами - це не магія. Спробуйте, але відмовтесь від нього, якщо він не додасть достатньої вартості, щоб компенсувати витрати.


2
Ти серйозно? Контроль над джерелами поганий, оскільки він вимагає підготовки нових колег? Ви насправді говорите, що хочете довго працювати з людьми, які не знають, як користуватися контролем джерел і не бажають вчитися? Особисто я вважаю за краще гортати гамбургери.
Зак

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

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

0

Речі, які я не став би в управління джерелом:

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

Тому я не роблю, hg addremoveнаприклад, оскільки роблю новий клон раз у раз, коли SDK оновлюється. Це також змушує мене робити повне резервне копіювання кожного разу, коли SDk оновлюється, і перевіряю, чи є нова версія, клонована з сховища.


0

Я настійно рекомендую вам наступну книгу, яка стосується ваших проблем:

Безперервна доставка: надійне випуск програмного забезпечення за допомогою автоматизації побудови, тестування та розгортання . Зокрема, у главі 2 розглядаються пункти, які потрібно поставити у керування джерелами, про що, як уже сказали досить багато людей, - це практично все, крім переважно створеного вмісту в результаті нарощування.

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

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


-1

Утримуйте весь код у контролі версій та всі конфігурації та дані користувачів. Щоб бути специфічним для drupal, вам потрібно поставити все в контроль версій, крім файлів та settings.php

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