Яка система управління версіями може керувати всіма аспектами? [зачинено]


17

Кілька місяців тому я поринув у Subversion та GIT і розчарувався. Вони поводяться з КОДУ ДЖЕРЕЛА штрафом, але не з іншими аспектами. Наприклад, веб-сайт під контролем версій повинен керувати правом власності на файл / каталог, доступ до читання та запису файлів / каталогів, списки контролю доступу, часові позначки, вміст бази даних. і зовнішні посилання. Чи існує система контролю версій, яка може зробити так само досконалу реверсію, як перезавантаження з місячного резервного копіювання?


12
Схоже, ви хочете замість цього створити систему резервного копіювання?
Макке

2
Чи розглядали ви запуск свого веб-сайту під ОС X на Mac? Машина часу - це, мабуть, найпростіше рішення резервного копіювання, яке зараз доступне, і робить її дуже простою, якщо потрібно.

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

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

Відповіді:


44

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

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

Дозволи на доступ до веб-сайтів, як правило, досить прості. (В основному, вам потрібно забезпечити, щоб веб-сервер міг читати весь вміст і писати його дуже мало.) За винятком власності на каталоги в кількох каталогах, які потрібно писати підривкою веб-сервера, і, можливо, git, безумовно, можна обробляти дозволи. Каталоги, якими можна користуватися веб-сервером, зазвичай містять динамічний контент (створений та оновлений на веб-сайті), яким керується окремо від джерела веб-сайтів.

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

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

Редагувати:

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

Ці проблеми можна вирішити, імпортуючи сайт у систему контролю версій та змінивши процес, щоб головний сайт оновлювався через цю систему. (a), (b) та (c) обробляються безпосередньо контролем версій. Ви можете позначити випуски, щоб покращити роботу (c). (г) як правило, це не проблема, якщо система розгортання змінює лише ваш сайт. Я ніколи не потребував ACL-вмісту на вмісті сайту.

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

Але чому ніхто не побудував загальної системи для цього?

Тому що він не потрібен, якщо ви використовуєте систему контролю версій.

Система управління версіями МОЖЕ відслідковувати всі ці речі, але жодна не робить.

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

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

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


+1 для конкретизації причин, чому це питання неправильне з самого початку.
Макке

2
+1 Тим не менше, добре, що запитання було задано, щоб інші могли отримати користь від вашої відповіді.
oliver-clare

Система контролю версій повинна дати мені можливість сказати "ОК, на цьому іншому комп'ютері тут, побудуйте мені сайт станом на 28 липня". Контроль версій більш ефективний, ніж резервне копіювання, оскільки він відстежує зміни. В іншому випадку, так, щоденне резервне копіювання зробить роботу добре.
Енді Кенфілд

Так, виправлення, яке я використовую, це: (а) відсутність контролю за версіями взагалі; (б) сайт виробництва - це головний сайт; (в) архівувати кожен раз, коли щось змінюється; (г) скрипт архіву видаляє мотлох, як ACL; д) сценарій встановлення виправляє інші дозволи, такі як файли. Але чому ніхто не побудував загальної системи для цього? Система управління версіями МОЖЕ відслідковувати всі ці речі, але жодна не робить.
Енді Кенфілд

+1: Чудова відповідь. Однак я хотів би додати, що жодна система контролю версій не відстежує ці речі, тому що вони НЕ МОЖАЮТЬ. Дозволи та імена користувачів залежать від хоста, а їх формат є системним; немає ніякого способу, щоб інструмент міг автоматично пересилати їх на інший хост, особливо якщо це інша операційна система.
Ян Худек

10

Усі вони і ніхто з них.

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

Однак ви можете написати скрипт bash (* nix) або скрипт powershell (Windows), який досягає будь-якої або всіх цих цілей. Цей сценарій може бути збережений у контролі джерела.

Тоді ви можете зробити цей скрипт одним із артефактів побудови та запустити його як частину розгортання.


Це. Ідея взагалі мати джерела полягає в тому, що ви можете витягнути їх зі свого ДВК і використовувати їх для створення готового продукту.
Blrfl

2

Система контролю версій IMHO сама по собі не передбачається використовувати таким чином.

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

Для цього вам потрібно:

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

1

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

Цитую вас:

керувати правом власності на файл / каталог, доступ до читання та запису файлів / каталогів,

Я зробив це одним рядком (переконайтеся, що існує користувач, переконайтеся, що існує каталог тощо) ...

Списки контролю доступу,

Якщо це Windows ACL, то існують спеціальні інструменти CM для Windows ...

часові позначки,

знову команда touch Unix в одному рядку в маріонетковому сценарії могла це зробити для вас.

вміст бази даних.

Це складання багатьох рамок, робота з хроном, яка забезпечує все, що є інакше?

і зовнішні посилання.

Нічого про це не знаю.

Звичайно після написання коду управління конфігурацією, можливо, ви захочете поставити його (або отримати його в задіяних системах) в системі управління версіями. Ти не підеш від них :-).


Я не розумію, що ви маєте на увазі під "позначками часу - знову одна команда unix в одному рядку в маріонетковому сценарії могла це зробити". На моєму веб-сайті, щоб отримати версію сайту, він сканує все sitetree і повертає дату та час останнього файлу. Я хочу, щоб мій контроль версій "Оформити замовлення" надавав файлам ті ж часові позначки, що і у реєстрації, а не "тепер". Як це зробити в одній команді unix?
Енді Кенфілд

звичайно, ви шукаєте "touch", перевірте це: en.wikipedia.org/wiki/Touch_(Unix) . Як правило, під час перевірки буде застосовано теперішній час, але якщо з якихось причин ви хочете іншу мітку часу, це зробити, як це зробити.
Димитріос Мітріотис

Мені насправді сподобалося обґрунтування вашого запитання, ви хочете максимально автоматизувати, який є «правильним шляхом», вам потрібні певні ноу-хау, як це зробити і що стосується VControl, а що ні. Я б хотів, щоб більше людей з індустрії думали однаково ...
Димитріос Мітріотіс

0

Існує кінцева система контролю версій, яка управляє всіма аспектами всіх цифрових документів. Він називається Xanadu і був створений Теодором Холмом Нельсоном в 1960 році, ще до того, як такі речі, як файлові системи, були звичайними. Тож теоретично все ідеально вирішено. На практиці Xanadu ніколи не реалізовувався так, як передбачав Нельсон, але він надихнув на багато інших спеціалізованих систем, включаючи Інтернет та системи управління версіями. Роботи Нельсона все ще варто прочитати, і вони можуть відповісти на питання, чому не існує загального VCS, який би керував усіма аспектами.

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