Contrôle de version pour la configuration Windows

8

Comment puis-je placer ma configuration personnelle Windows sous contrôle de version ?

Résumé (détails et exemples suivent):

  • Configuration personnelle (par exemple les préférences du bureau), pas la configuration du système (par exemple les pilotes); devrait fonctionner sans droits d'administrateur
  • Contrôle de version, pas de sauvegarde ni de création d'image disque

Voici quelques choses que je veux pouvoir faire:

  • Validez l'état actuel de ma configuration dans un référentiel, de préférence avec une certaine granularité (si j'ai apporté deux modifications, j'aimerais pouvoir en valider une sans valider l'autre).
  • Écrivez une entrée du journal des modifications chaque fois que je valide et consultez la liste des entrées du journal des modifications pour chaque fichier de configuration.
  • Voir les différences entre l'état actuel et une version de référentiel.
  • Sortez de mon référentiel sur une nouvelle machine Windows et reproduisez ma configuration (au moins si la nouvelle machine a la même version de Windows).

<added1> Je n'essaierai pas de donner une définition complètement précise de la "configuration"; J'essaie de couvrir toutes sortes de préférences personnelles (par exemple, tout ce qui peut être réglé dans le panneau de configuration sans droits d'administrateur, raccourcis dans mon menu "Programmes" spécifique à l'utilisateur,…). Je ne souhaite pas inclure mes documents ou applications installées. </added1>

<added2> Notez que je cible ma configuration personnelle, pas la configuration système (ce serait utile aussi, mais ce n'est pas le but de cette question). Par exemple, je m'attends à ce qu'une solution fonctionne sans droits d'administrateur. </added1>

Ce que je fais sous Unix, c'est de mettre (une sélection de) mes fichiers dot sous contrôle de version . Sous Windows, je suppose que je devrais valider le registre et certains fichiers (lesquels?) Sous Application Data. Je voudrais quelque chose de mieux que de placer l'ensemble du fichier de registre sous contrôle de version (ce n'est pas assez de granularité et je crains des problèmes de verrouillage). <added1> Idéalement, j'utiliserais des wrappers ou des scripts avec certains logiciels de contrôle de version courants (Bazaar, CVS, Darcs, Git, Mercurial, Subversion,…), mais ce n'est pas une exigence absolue. </added1>

J'ai actuellement besoin de travailler avec Windows 2000 et Windows XP. Puisque c'est pour une machine de travail, le payware ne fera pas l'affaire (l'open source serait l'idéal). Je suis plus à l'aise avec la ligne de commande qu'avec les interfaces graphiques.

<added1> Voici un exemple de workflow:

  • Un jour, je décide que je veux que mon fond d'écran soit rose. Je fais donc le changement via l'interface graphique. Cela modifie une ligne dans une clé de fichier de configuration dans le Registre. J'engage ensuite le changement, pour le suivre.
  • Plus tard, je me demande pourquoi mon fond d'écran est rose. Je recherche donc «couleur du bureau» dans le changelog.
  • Un jour, je dois utiliser une nouvelle machine. Je vérifie donc à partir de mon référentiel de configuration, et voilà, le bureau rose.

Voici certaines choses que je n'essaie pas de faire:

  • Je n'essaye pas de faire des sauvegardes. Je veux pouvoir suivre les changements (par sémantique, ou du moins par syntaxe, pas seulement par date), et partager des informations entre machines (un référentiel, plusieurs extractions).

  • Je n'essaie pas de répliquer une installation Windows. Je ne veux pas reporter les dépendances matérielles, les applications installées ou les documents.

</added1>

Gilles 'SO- arrête d'être méchant'
la source
4
Quel est l'objectif final de ceci, essayez-vous de désosser une application? La raison pour laquelle je pose la question est sans les rapports sur ce qui est différent, il serait facile de conserver un état lyophilisé. Même voir les changements peut ne pas être trop difficile, mais ne pas les archiver dans le contrôle de version. J'aimerais simplement mieux comprendre ce que vous voulez accomplir et je pourrais peut-être suggérer une approche différente.
Scott McClenning du
D'accord avec @Scott, je ne pense pas que ce soit très pratique (ou même possible, d'ailleurs). Plus de détails sur ce que vous essayez d'accomplir seraient formidables.
Sasha Chedygov,
1
+1 ... vous y allez presque certainement dans le mauvais sens.
Zac Thompson, le
@Scott: mon objectif est d'utiliser le contrôle de version pour mes personnalisations Windows. Je ne sais pas pourquoi ma question vous suggère une ingénierie inverse. @Zac: Je ne peux pas m'y prendre dans le mauvais sens, car je n'ai pas fait le premier pas.
Gilles 'SO- arrête d'être méchant'
Il semblait que votre objectif était de faire quelque chose sur un système, puis de voir ce qui s'était passé, et de configurer une configuration que vous pouvez restaurer ultérieurement. Si vous deviez restaurer une configuration plus tard, j'utiliserais un logiciel de machine virtuelle pour prendre des instantanés. Cela ne vous dira pas ce qui s'est passé, mais cela vous ramènerait au même endroit encore et encore. Si vous voulez voir ce que fait une application, il existe des programmes qui créent des fichiers msi en effectuant un diff avant et après l'installation du système. Vous pouvez ensuite regarder à l'intérieur du msi et voir ce que l'application a touché / changé. Mais rien de tout cela n'est du "contrôle de version".
Scott McClenning, du

Réponses:

9

Pour autant que je sache, la configuration de Windows est trop dispersée pour une sauvegarde fiable, parmi trop de fichiers et de places dans le registre.

Il est impossible de sauvegarder le registre sur une machine et de le restaurer sur une autre (ou même sur la même), car trop de clés sont trop spécifiques à la machine et parce que certaines clés sont protégées par Windows.

La restauration du système vise à conserver l'état de la machine, mais pour votre objectif, elle n'est pas fiable, car elle décidera elle-même des sauvegardes à supprimer pour économiser de l'espace et présente d'autres problèmes négatifs tels que la non-disponibilité dans Windows 2000.

La seule solution universelle que je peux voir est d'imaginer le disque système dans son intégralité et de le restaurer si nécessaire, à l'aide d'un produit d'imagerie de disque.

Il existe plusieurs produits d'imagerie de disque de très bonne qualité, que je peux recommander si vous trouvez que cette solution vous intéresse. Plusieurs d'entre eux conservent un référentiel d'images descriptif. Bien que les meilleurs soient commerciaux, ceux gratuits sont toujours très bons.

L'imagerie de disque fonctionne mieux lorsque le lecteur système ne contient pas de données utilisateur.

harrymc
la source
1
+1 Je suis d'accord avec cela. Je ne vois pas les fonctionnalités de Disk-Imaging mais j'utilise DriveImage ( runtime.org/driveimage-xml.htm ) qui vous permet de sauvegarder le disque tout en utilisant le système en utilisant des techniques fiables. Il vous permet également de parcourir les fichiers
Cristian T
Il peut être plus simple d'utiliser une machine virtuelle et de prendre des instantanés plutôt que d'utiliser un produit d'imagerie de disque. Ce serait beaucoup plus simple de migrer entre des machines si le matériel n'est pas identique.
Velociraptors
@harrymc: Je suis désolé si ma formulation initiale n'était pas claire la première fois (je soupçonne qu'il a fallu un arrière-plan Unix pour comprendre ce que je voulais dire), mais j'essaie de sauvegarder ma configuration utilisateur, pas la configuration système .
Gilles 'SO- arrête d'être méchant'
1
La réponse serait toujours la même, à moins que vous ne puissiez restreindre assez fortement la liste des éléments dans la configuration utilisateur. Il n'y a pas de véritable zone de "configuration utilisateur" dans Windows, contrairement aux répertoires de points Linux. Une ruche de registre d'utilisateurs existe, mais beaucoup d'informations sur l'utilisateur sont dispersées dans d'autres endroits et partout sur le disque dans "Program Files", "Users" etc. Vous ne pouvez même pas surveiller les modifications du registre, car Windows lui-même modifie énormément de choses d'entre eux tout en travaillant. Et chaque application invente ses propres règles. Il y a une raison pour laquelle Linux est plus efficace ...
harrymc
En tant qu'utilisateur Windows, j'aurais aussi aimé avoir un mécanisme comme celui que vous décrivez. Hélas, c'est tout à fait impossible. Vous auriez besoin de suivre chaque application et chaque type de changement à l'aide de Process Monitor, afin de trouver où les données sont stockées. C'est un énorme projet qui demande un investissement monstrueux en temps.
harrymc
2

Venant du côté serveur de la clôture, où vous vous attendriez à ce que nous soyons très paranoïaques à propos des changements de configuration et d'où ils viennent, je peux dire qu'ils n'existent pas vraiment. Le suivi de la configuration globale est un processus entièrement manuel pour la plupart. Il est possible de surveiller (mais pas d' empêcher ) des zones de registre spécifiques pour les changements, mais je ne connais pas de progiciels gratuits / bon marché qui permettent cela et plusieurs très coûteux (c'est un problème beaucoup plus complexe que le suivi des informations sur les fichiers, puis deux différences fichiers texte; donc coûteux).

Cela rend les administrateurs Unix fous. Il y a quelques semaines, Kyle Brandt , administrateur système de StackOverflow Inc, critiquait ce genre de chose alors qu'il préparait un nouveau lot de machines Windows pour StackExchange. Le crossover Linux / Windows SysAdmins a tous compati avec lui. Il n'y a tout simplement pas d'équivalent Windows de mettre / etc sous VCS. Il y a quelques trucs laids, comme l'imagerie de disque / snapshot ou forcer uniquement les modifications de configuration via les stratégies de groupe (et suivre les modifications des GPO manuellement), mais rien d'aussi élégant.

Désolé.

SysAdmin1138
la source
2

Personnellement, je fais le suivi des modifications dans le registre Windows avec Regshot . Vous prenez un instantané avant le changement puis un deuxième après l'avoir fait. Vous pouvez également obtenir un joli rapport HTML des modifications. Bien sûr, vous devez vous assurer que seuls quelques changements sont effectués entre les instantanés si vous voulez comprendre ce que chaque changement fait. Regshot est un programme open source.

Si vous recherchez le suivi / la sauvegarde des modifications du système de fichiers, le plus proche est probablement DocShield . Vous pouvez suivre n'importe quel dossier avec lui, bien que les données d'application soient probablement votre meilleure estimation des modifications de vos préférences personnelles de la plupart des logiciels compatibles avec les profils d'utilisateurs Windows. DocShield est gratuit pour les utilisateurs à domicile. Vous pouvez imiter ce qu'il fait en utilisant xcopy /d:{m-d-y}les dossiers dont vous avez besoin, puis compresser / 7z la sortie.

Ajoutez ensuite la sortie des deux sauvegardes à n'importe quel référentiel de contrôle de version avec vos remarques.

Shogox
la source
Étant donné que je ne me soucie pas des rapports HTML, que ferait Regshot que Microsoft reg.exeet Cygwin regtoolne feraient pas? Quant à DocShield, que fait un logiciel de contrôle de version qui ne fera pas mieux?
Gilles 'SO- arrête d'être méchant'
Bounty décerné pour Regshot. Je ne pense pas que c'est vraiment ce que je veux, mais c'est un bon début sur lequel je pourrais peut-être m'appuyer (surtout étant donné qu'il est open source).
Gilles 'SO- arrête d'être méchant'
Je pense que le mien était plus ce que vous cherchiez ... mais pas parce que je voulais juste que la prime vous le fasse savoir.
jer.salamon
1

Ce ne serait pas simple, mais vous pouvez utiliser Sysinternals Process Monitor pour déterminer quels fichiers et paramètres de registre ont été modifiés. Vous pouvez ensuite ajouter les modifications du registre et les fichiers mis à jour dans un programme plus grand qui apportera les modifications pour vous. Vous pourriez probablement utiliser Power Shell ou quelque chose comme AutoIt. Vérifiez ensuite le script résultant dans vos vcs. J'utilise une méthode similaire pour automatiser des paramètres étranges dans des scripts de connexion et des modèles d'administration de stratégie de groupe personnalisés.

fainéant
la source
Si je vous comprends bien, vous proposez essentiellement de ne conserver que les différences induites par mes modifications, au lieu de l'ensemble du registre et du Application Datacontenu, non? Comment détecter les modifications apportées lorsque le programme du moniteur ne fonctionne pas pour une raison quelconque? Existe-t-il un moyen raisonnable d'étendre le flux de travail pour activer les opérations de mise à jour (c'est-à-dire que j'ai déjà effectué un paiement et que je souhaite appliquer quelques modifications supplémentaires sur une autre machine)?
Gilles 'SO- arrête d'être méchant'
1

Je n'ai pas de solution OS pour vous, mais il y a une possibilité payante. Ce que vous pourriez faire, c'est de sauvegarder votre disque en utilisant DriveImage XML

Le format de sauvegarde est XML. Vous pouvez ensuite enregistrer ce fichier xml (des différences sont également possibles) sur votre système de contrôle de version préféré.

Comme l' a dit HarryMC , vous ne pouvez pas vraiment utiliser cette image pour apporter des modifications à un nouveau système, mais vous pouvez certainement utiliser l'image sur un nouveau système avec exactement le même matériel.

Devdatta Tengshe
la source
1

Vous pouvez utiliser le logiciel de gestion de profil de ForensiT pour copier l'intégralité de votre profil en démarrant une boîte Windows. Cliquez ici pour le vérifier: Gestionnaire de profil utilisateur

jer.salamon
la source
Je ne vois pas comment ce programme pourrait m'aider: il semble que ce soit pour le déploiement de profils sur plusieurs machines, ce qui n'est pas ma préoccupation principale (gestion de l'historique). Je peux voir que cela pourrait être un outil précieux pour les administrateurs, mais je suis un utilisateur ici.
Gilles 'SO- arrête d'être méchant'
Il vous offre la possibilité de sauvegarder votre profil utilisateur et de le restaurer lorsque vous le souhaitez. N'est-ce pas ce que vous cherchez?
jer.salamon
-2

Il me semble que vous décrivez une application de base de données où vous suivez les clés de registre et les indexez par une balise. Bien que je ne sois pas assez technique avec les clés de registre pour le faire, dans votre exemple, vous voulez rechercher Pink Desk top dans la base de données et obtenir les instructions qui implémenteront cette modification sur un autre ordinateur. Autrement dit, si je comprends vos intentions

user50466
la source