Контроль версій для конфігурації Windows


8

Як я можу поставити свою персональну конфігурацію Windows під контроль версій ?

Підсумок (деталі та приклади випливають):

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

Ось декілька речей, які я хочу вміти робити:

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

<added1> Я не буду намагатися дати повністю точне визначення поняття "конфігурація"; Я намагаюся охопити всі види особистих уподобань (наприклад, все, що можна встановити на панелі керування без прав адміністратора, ярлики в моєму користувальницькому меню "Програми" ...). Я не хочу включати свої документи чи встановлені програми. </added1>

<added2> Зауважте, що я орієнтуюся на мою особисту конфігурацію, а не на конфігурацію системи (це також було б корисно, але це не мета цього питання). Наприклад, я очікую, що рішення може працювати без прав адміністратора. </added1>

Що я роблю в unix - це поставити (підбірку) моїх точкових файлів під контроль версій . У Windows я припускаю, що я повинен зафіксувати реєстр та деякі файли (які?) Під Application Data. Я хотів би щось краще, ніж ставити весь файл реєстру під контроль версій (цього недостатньо деталізації, і я боюся проблем із блокуванням). <added1> В ідеалі я б використовував обгортки або скрипти з деяким поширеним програмним забезпеченням для управління версіями (Bazaar, CVS, Darcs, Git, Mercurial, Subversion,…), але це не є абсолютною вимогою. </added1>

Наразі мені потрібно працювати з Windows 2000 та Windows XP. Оскільки це для робочої машини, начинки для використання не будуть (відкритим кодом було б ідеально). Мені зручніше з командним рядком, ніж з графічними інтерфейсами.

<added1> Ось зразок робочого процесу:

  • Одного разу я вирішую, що хочу, щоб фон мого робочого столу був рожевим. Тому я вношу зміни через GUI. Це змінює рядок у ключі файла конфігурації в реєстрі. Потім я здійснюю зміни, щоб відстежувати її.
  • Пізніше мені цікаво, чому фон мого робочого столу рожевий. Тож я шукаю “колір робочого столу” в журналі змін.
  • Одного разу мені потрібно скористатися новою машиною. Тож я переходжу з мого сховища конфігурації та voilà, рожевого робочого столу.

Ось деякі речі, які я не намагаюся зробити:

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

  • Я не намагаюся копіювати інсталяцію Windows. Я не хочу переносити апаратні залежності, встановлені додатки чи документи.

</added1>


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

Погодьтесь із @Scott, я не вважаю це дуже практичним (або навіть можливим з цього приводу). Детальніше про те, що ви намагаєтеся зробити, було б чудово.
Саша Чедигов

1
+1 ... ти майже напевно йдеш про це неправильним шляхом.
Зак Томпсон

@Scott: моя мета - використовувати контроль версій для моїх налаштувань Windows. Я поняття не маю, чому моє запитання пропонує вам зворотну інженерію. @Zac: Я не можу йти про це неправильно, оскільки я не зробив першого кроку.
Жил "ТАК - перестань бути злим"

Просто здавалося, що ваша мета полягає в тому, щоб зробити щось в системі, а потім побачити, що сталося, і налаштувати конфігурацію, яку ви можете відновити згодом. Якщо вам пізніше потрібно було відновити конфігурацію, я б скористався деяким програмним забезпеченням віртуальної машини, щоб зробити знімки. Це не скаже тобі, що сталося, але все одно і знову потраплятимеш до того ж місця. Якщо ви хочете побачити, що таке програма, є програми, які створюють файли msi, роблячи різні системи перед і після встановлення. Потім ви можете зазирнути в msi і побачити, що додаток торкнувся / змінило. Але жодне з них не є "контролем версій".
Скотт Маккленінг

Відповіді:


9

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

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

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

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

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

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


1
+1 Я згоден з цим. Я не бачу особливостей Disk-Imaging, але я використовую DriveImage ( runtime.org/driveimage-xml.htm ), який дозволяє створити резервну копію диска під час використання системи, використовуючи надійні методи. Він також дозволяє переглядати файли
Cristian T

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

@harrymc: Вибачте, якщо вперше не було зрозуміло мою початкову формулювання (я підозрюю, що для розуміння того, що я мав на увазі, потрібен unix фон), але я намагаюся створити резервну копію моєї конфігурації користувача, а не конфігурації системи .
Жил "ТАК - перестань бути злим"

1
Відповідь все одно буде однаковою, якщо тільки ви не зможете досить різко звузити список елементів у конфігурації користувача. У Windows немає реальної області "конфігурації користувача", на відміну від точкових каталогів Linux. Існує вулик реєстру користувачів, але багато інформації про користувачів розкидано в інших місцях і по всьому диску в "Файлах програми", "Користувачі" і т. Д. Ви навіть не можете відстежувати зміни реєстру, тому що сама Windows змінює пекло багато з них під час роботи. І кожен додаток вигадує свої правила. Є причина, чому Linux є більш ефективним ...
harrymc

Як користувач Windows, я також хотів би мати такий механізм, як ви окреслили. На жаль, це зовсім неможливо. Вам потрібно буде простежити кожну програму та вид змін за допомогою Process Monitor, щоб знайти, де зберігаються дані. Це величезний проект, що вимагає жахливих вкладень часу.
harrymc

2

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

Це рухає Unix адміністратора batty. Кайл Брандт , системний адміністратор StackOverflow Inc, пару тижнів тому захоплювався подібними речами, підготувавши нову партію машин Windows для StackExchange. Кроссовер Linux / Windows SysAdmins - все, що було з ним прийнято. Просто немає еквівалента Windows для розміщення / тощо під VCS. Там є деякі потворні хитрощі, такі як зображення / знімки диска або лише примушування змін конфігурації за допомогою групових політик (і відстежувати зміни в групових групах вручну), але нічого не настільки елегантного.

Вибачте.


2

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

Якщо ви шукаєте відстеження / резервне копіювання змін у файловій системі, можливо, найближчим часом буде DocShield . Ви можете відстежувати в ньому будь-яку папку, хоча дані програми, мабуть, найкраща здогадка щодо змін ваших особистих переваг більшості профілів користувачів Windows, які знають програмне забезпечення. DocShield безкоштовний для домашніх користувачів. Ви можете імітувати те, що він робить, використовуючи xcopy /d:{m-d-y}потрібні вам папки, а потім поштовий / 7z вихід.

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


Зважаючи на те, що мене не цікавлять звіти HTML, що робитиме Regshot, що не робитиме Microsoft reg.exeта Cygwin regtool? Що стосується DocShield, що це робить, щоб будь-яке програмне забезпечення для управління версіями не було краще?
Жил 'ТАК - перестань бути злим'

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

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

1

Це було б не просто, але ви можете скористатися Sysinternals Process Monitor, щоб визначити, які файли та параметри реєстру були змінені. Потім ви можете додати зміни реєстру та оновлені файли у більшу програму, яка внесе зміни замість вас. Можливо, ви могли б використовувати Power Shell або щось на зразок AutoIt. Потім перевірте результуючий сценарій у вашому комп'ютері. Я використовую подібний метод для автоматизації дивних налаштувань у сценарії входу та користувацькі шаблони адміністрування групової політики.


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

1

Я не маю для вас рішення ОС, але є платна можливість. Що ви можете зробити, - це створити резервну копію диска за допомогою DriveImage XML

Формат резервного копіювання - XML. Потім ви можете зберегти цей XML-файл (можливі також різні) до улюбленої системи контролю версій.

Як сказав HarryMC , ви не можете реально використовувати це зображення для внесення змін до нової системи, але ви точно можете використовувати зображення в новій системі з точно таким же обладнанням.


1

Ви можете використовувати програмне забезпечення для управління профілями ForensiT, щоб скопіювати весь профіль із встановленням вікна вікна. Перейдіть сюди, щоб перевірити це: Менеджер профілів користувачів


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

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

-2

Мені здається, ви описуєте додаток для бази даних, де ви відстежуєте ключі реєстру та індексуєте їх тегом. Хоча я недостатньо технічний для ключів реєстру, щоб це зробити, у вашому прикладі ви хочете шукати в базі даних Pink Pink top і отримати інструкцію, яка реалізує цю зміну на іншому комп'ютері. Тобто, якщо я зрозумію ваші наміри

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