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

8

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

Резюме (подробности и примеры приведены ниже):

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

Вот несколько вещей, которые я хочу сделать:

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

<добавленный1> я не буду пытаться дать полностью точное определение "конфигурации"; Я пытаюсь охватить все виды личных предпочтений (например, все, что можно установить в панели управления без прав администратора, ярлыки в моем меню «Программы», предназначенном для пользователя,…). Я не хочу включать свои документы или установленные приложения. </ added1>

<добавлено2> Обратите внимание, что я нацеливаюсь на мою личную конфигурацию, а не на конфигурацию системы (это также было бы полезно, но цель этого вопроса не в этом). Например, я ожидаю, что решение будет работать без прав администратора. </ added1>

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

В настоящее время мне нужно работать с Windows 2000 и Windows XP. Так как это для рабочей машины, Payware не подойдет (с открытым исходным кодом было бы идеально). Мне удобнее работать с командной строкой, чем с графическим интерфейсом.

<добавлен1> Вот пример рабочего процесса:

  • Однажды я решил, что хочу, чтобы фон моего рабочего стола был розовым. Поэтому я делаю изменения через графический интерфейс. Это изменяет строку в ключе файла конфигурации в реестре. Затем я фиксирую изменения, чтобы отследить их.
  • Позже я удивляюсь, почему фон моего рабочего стола розовый. Поэтому я ищу «цвет рабочего стола» в журнале изменений.
  • Однажды мне нужно использовать новую машину. Поэтому я проверяю из своего хранилища настроек и вуаля, розовый рабочий стол.

Вот некоторые вещи, которые я не пытаюсь сделать:

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

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

</ Added1>

Жиль "ТАК - перестань быть злым"
источник
4
Какова конечная цель этого, вы пытаетесь перепроектировать приложение? Причина, по которой я спрашиваю, заключается в том, что без отчетов о том, что отличается, сохранить состояние сублимации будет легко. Даже увидеть изменения могут быть не слишком сложными, но не проверять их в управлении версиями. Мне просто хотелось бы большего понимания того, чего вы хотите достичь, и, возможно, я мог бы предложить другой подход.
Скотт МакКленнинг
Согласитесь с @Scott, я не считаю это очень практичным (или даже возможным, в этом отношении). Было бы здорово узнать больше о том, чего вы пытаетесь достичь.
Саша Чедыгов
1
+1 ... вы почти наверняка поступите неправильно.
Зак Томпсон
@Scott: моя цель - использовать контроль версий для моих настроек Windows. Я понятия не имею, почему мой вопрос предлагает вам реверс-инжиниринг. @Zac: Я не могу пойти по этому пути неправильно, так как я не сделал первый шаг.
Жиль "ТАК - перестать быть злым"
Казалось, что ваша цель состояла в том, чтобы что-то сделать в системе, а затем посмотреть, что произошло, и настроить конфигурацию, которую вы сможете восстановить позже. Если бы вам позже понадобилось восстановить конфигурацию, я бы использовал программное обеспечение виртуальной машины для создания снимков. Это не скажет вам, что произошло, но это приведет вас к одному и тому же месту снова и снова. Если вы хотите увидеть, что делает приложение, есть программы, которые создают файлы MSI, выполняя различие системы до и после установки. Затем вы можете заглянуть внутрь MSI и посмотреть, что приложение коснулось / изменилось. Но ни один из них не является «контролем версий».
Скотт МакКленнинг

Ответы:

9

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

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

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

Единственное универсальное решение, которое я вижу, состоит в том, чтобы полностью создать образ системного диска и при необходимости восстановить его, используя продукт для создания образа диска.

Существует несколько продуктов для создания образов дисков очень хорошего качества, которые я могу порекомендовать, если вы обнаружите, что это решение вас интересует. Некоторые из них хранят репозиторий изображений с описательной информацией. Хотя лучшие из них являются коммерческими, бесплатные программы все еще очень хороши.

Создание образа диска лучше всего работает, когда системный диск не содержит пользовательских данных.

harrymc
источник
1
+1 Я согласен с этим. Я не вижу функций создания образа диска, но я использую DriveImage ( runtime.org/driveimage-xml.htm ), который позволяет создавать резервные копии диска при использовании системы с использованием надежных методов. Это также позволяет просматривать файлы
Cristian T
Может быть проще использовать виртуальную машину и делать снимки, чем использовать продукт для создания образа диска. Это было бы намного проще для миграции между машинами, если оборудование не идентично.
Velociraptors
@harrymc: Извините, если моя первоначальная формулировка не была ясна в первый раз (я подозреваю, что для понимания того, что я имел в виду, потребовался фон Unix), но я пытаюсь сделать резервную копию моей пользовательской конфигурации, а не конфигурации системы ,
Жиль "ТАК - перестать быть злым"
1
Ответ будет таким же, если только вы не сможете сузить список элементов пользовательской конфигурации. В Windows нет реальной области «пользовательской конфигурации», в отличие от точечных каталогов Linux. Улей реестра пользователей существует, но большая информация о пользователях разбросана в других местах и ​​по всему диску в «Программных файлах», «Пользователях» и т. Д. Вы даже не можете отслеживать изменения реестра, потому что сама Windows изменяет чертовски много из них во время работы. И каждое приложение изобретает свои собственные правила. Есть причина, почему Linux более эффективен ...
harrymc
Как пользователь Windows, мне также хотелось бы иметь такой механизм, как вы обрисовали. Увы, это совершенно невозможно. Вам нужно будет отслеживать каждое приложение и вид изменений с помощью Process Monitor, чтобы найти, где хранятся данные. Это огромный проект, требующий огромных затрат времени.
harrymc
2

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

Это гонит админов Unix. Кайл Брандт , системный администратор StackOverflow Inc, пару недель назад рассказывал о подобных вещах, когда готовил новую партию компьютеров под Windows для StackExchange. Кроссовер Linux / Windows SysAdmins все сочувствовал ему. В Windows просто нет эквивалента для размещения / etc под VCS. Существуют некоторые уродливые ошибки, такие как создание образа / моментальный снимок диска или только принудительное изменение конфигурации с помощью групповых политик (и отслеживание изменений в объектах групповой политики вручную), но не все так элегантно.

Сожалею.

SysAdmin1138
источник
2

Лично я отслеживаю изменения в реестре Windows с помощью Regshot . Вы делаете снимок до изменения, затем второй после его внесения. Вы также можете получить хороший HTML-отчет об изменениях. Конечно, вы должны убедиться, что между моментальными снимками сделано только несколько изменений, если вы хотите выяснить, что делает каждое изменение. Regshot - это программа с открытым исходным кодом.

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

Затем добавьте выходные данные из обеих резервных копий в любое хранилище управления версиями со своими замечаниями.

Shogox
источник
Учитывая, что меня не волнуют отчеты HTML, что бы сделал Regshot, а Microsoft reg.exeи Cygwin - regtoolнет? Что касается DocShield, что он делает, что любое программное обеспечение для контроля версий не будет лучше?
Жиль "ТАК - перестать быть злым"
Награда присуждается за Regshot. Я не думаю, что это действительно то, чего я хочу, но это хорошее начало, на котором я мог бы опираться (особенно учитывая, что это открытый исходный код).
Жиль "ТАК - перестань быть злым"
Я думаю, что мое было больше, чем вы ищете ... но не потому, что я хотел щедрость, чтобы сообщить вам.
jer.salamon
1

Это будет непросто, но вы можете использовать Sysinternals Process Monitor, чтобы определить, какие файлы и параметры реестра были изменены. Затем вы можете добавить изменения реестра и обновленные файлы в большую программу, которая внесет изменения за вас. Возможно, вы могли бы использовать Power Shell или что-то вроде AutoIt. Затем проверьте полученный скрипт в вашем vcs. Я использую аналогичный метод для автоматизации странных настроек в сценариях входа и пользовательских шаблонах администрирования групповой политики.

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

У меня нет решения для ОС, но есть платная возможность. Что вы можете сделать, это сделать резервную копию вашего диска с помощью DriveImage XML

Формат резервной копии - XML. Затем вы можете сохранить этот XML-файл (также возможны различия) в вашей любимой системе контроля версий.

Как сказал HarryMC , вы не можете использовать этот образ для внесения изменений в новую систему, но вы точно можете использовать этот образ в новой системе с точно таким же оборудованием.

Девдатта Тенгше
источник
1

Вы можете использовать программное обеспечение для управления профилями ForensiT, чтобы скопировать весь свой профиль, отключив окно Windows. Зайдите сюда, чтобы проверить это: Менеджер профилей пользователей

jer.salamon
источник
Я не понимаю, как эта программа может мне помочь: похоже, она предназначена для развертывания профилей на нескольких машинах, что не является моей главной задачей (управление историей). Я вижу, что это может быть ценным инструментом для администраторов, но я здесь пользователь.
Жиль "ТАК - перестать быть злым"
Это дает вам возможность сделать резервную копию вашего профиля пользователя и иметь возможность восстановить его, когда вы выберете. Разве это не то, что вы ищете?
jer.salamon
-2

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

user50466
источник