Kontrola wersji dla konfiguracji Windows


8

Jak mogę ustawić moją osobistą konfigurację systemu Windows pod kontrolą wersji ?

Podsumowanie (szczegóły i przykłady poniżej):

  • Konfiguracja osobista (np. Preferencje pulpitu), a nie konfiguracja systemu (np. Sterowniki); powinien działać bez uprawnień administratora
  • Kontrola wersji, nie kopie zapasowe ani obrazowanie dysku

Oto kilka rzeczy, które chcę zrobić:

  • Zatwierdź bieżący stan mojej konfiguracji do repozytorium, najlepiej z pewną szczegółowością (jeśli dokonałem dwóch zmian, chciałbym móc zatwierdzić jedną bez zatwierdzania drugiej).
  • Napisz wpis dziennika zmian, ilekroć dokonam zatwierdzenia, i zobacz listę wpisów dziennika zmian dla każdego pliku konfiguracyjnego.
  • Zobacz różnice między bieżącym stanem a wersją repozytorium.
  • Sprawdź z mojego repozytorium na nowym komputerze z systemem Windows i odtwórz moją konfigurację (przynajmniej jeśli nowy komputer ma tę samą wersję systemu Windows).

<added1> Nie będę próbował podawać całkowicie precyzyjnej definicji „konfiguracji”; Próbuję zaspokoić wszelkie osobiste preferencje (np. Wszystko, co można ustawić w panelu sterowania bez uprawnień administratora, skróty w menu użytkownika „Programy”…). Nie chcę dołączać moich dokumentów ani zainstalowanych aplikacji. </added1>

<added2> Zauważ, że celuję w moją osobistą konfigurację, a nie konfigurację systemu (to też by się przydało, ale nie jest to celem tego pytania). Na przykład oczekuję, że rozwiązanie zadziała bez uprawnień administratora. </added1>

To, co robię w Uniksie, to poddanie (wybór) moich plików kropek kontroli wersji . W systemie Windows zakładam, że powinienem zatwierdzić rejestr i niektóre pliki (które?) Poniżej Application Data. Chciałbym coś lepszego niż poddanie całego pliku rejestru kontroli wersji (to za mało szczegółowości i obawiam się problemów z blokowaniem). <added1> Idealnie byłoby użyć opakowania lub skryptów z niektórymi popularnymi programami do kontroli wersji (Bazaar, CVS, Darcs, Git, Mercurial, Subversion,…), ale nie jest to absolutny wymóg. </added1>

Obecnie muszę pracować z systemem Windows 2000 i Windows XP. Ponieważ dotyczy to maszyny roboczej, payware nie zadziała (idealne byłoby open source). Czuję się bardziej komfortowo z linii poleceń niż z GUI.

<added1> Oto przykładowy przepływ pracy:

  • Pewnego dnia postanowiłem, że moje tło pulpitu będzie różowe. Więc dokonuję zmiany za pomocą GUI. To modyfikuje wiersz w kluczu pliku konfiguracyjnego w rejestrze. Następnie zatwierdzam zmianę, aby ją śledzić.
  • Później zastanawiam się, dlaczego moje tło pulpitu jest różowe. Dlatego w dzienniku zmian szukam „koloru pulpitu”.
  • Pewnego dnia muszę użyć nowej maszyny. Więc sprawdzam z mojego repozytorium konfiguracji i voilà, różowy pulpit.

Oto kilka rzeczy, których nie próbuję zrobić:

  • Nie próbuję tworzyć kopii zapasowych. Chcę mieć możliwość śledzenia zmian (według semantyki lub przynajmniej składni, nie tylko według daty) i udostępniania informacji między komputerami (jedno repozytorium, wiele transakcji).

  • Nie próbuję replikować instalacji systemu Windows. Nie chcę przenosić zależności sprzętowych, zainstalowanych aplikacji ani dokumentów.

</added1>


4
Jaki jest ostateczny cel tego, czy próbujesz odtworzyć aplikację? Powodem, dla którego pytam, jest brak raportów o tym, co jest inne, utrzymanie stanu liofilizacji byłoby łatwe. Nawet zobaczenie zmian może nie być zbyt trudne, ale nie sprawdzenie ich w kontroli wersji. Chciałbym tylko lepiej zrozumieć, co chcesz osiągnąć, a może mógłbym zaproponować inne podejście.
Scott McClenning

Zgadzam się z @Scott, nie uważam, aby było to bardzo praktyczne (a nawet możliwe, jeśli o to chodzi). Więcej szczegółów na temat tego, co próbujesz osiągnąć, byłoby świetne.
Sasha Chedygov

1
+1 ... prawie na pewno robisz to w niewłaściwy sposób.
Zac Thompson,

@ Scott: moim celem jest użycie kontroli wersji do moich dostosowań Windows. Nie mam pojęcia, dlaczego moje pytanie sugeruje inżynierię odwrotną. @Zac: Nie mogę tego robić w niewłaściwy sposób, ponieważ nie zrobiłem pierwszego kroku.
Gilles „SO- przestań być zły”

Wydawało się, że Twoim celem było zrobienie czegoś w systemie, a następnie sprawdzenie, co się stało, vice setup konfiguracji, którą możesz przywrócić później. Gdybyś musiał później przywrócić konfigurację, użyłbym oprogramowania maszyny wirtualnej do robienia migawek. To nie powie ci, co się stało, ale sprawi, że będziesz ciągle w tym samym miejscu. Jeśli chcesz zobaczyć, co robi aplikacja, istnieją programy, które tworzą pliki msi, robiąc różnicę przed i po instalacji. Następnie możesz zajrzeć do MSI i zobaczyć, co aplikacja dotknęła / zmieniła. Ale żaden z nich nie jest „kontrolą wersji”.
Scott McClenning

Odpowiedzi:


9

O ile mi wiadomo, konfiguracja systemu Windows jest zbyt rozproszona, aby można było wykonać kopię zapasową wśród zbyt wielu plików i miejsc w rejestrze.

Nie można wykonać kopii zapasowej rejestru na jednym komputerze i przywrócić go na innym (lub nawet na tym samym), ponieważ zbyt wiele kluczy jest zbyt specyficznych dla komputera i ponieważ niektóre klucze są chronione przez system Windows.

Funkcja Przywracanie systemu ma na celu utrzymanie stanu komputera, ale nie jest wiarygodna, ponieważ sam decyduje, które kopie zapasowe należy usunąć, aby zaoszczędzić miejsce, i ma inne negatywne problemy, takie jak brak dostępności w systemie Windows 2000.

Jedyne uniwersalne rozwiązanie, jakie widzę, to zobrazowanie dysku systemowego w całości i przywrócenie go w razie potrzeby za pomocą produktu do tworzenia obrazów dysku.

Istnieje kilka produktów do tworzenia obrazów dysku o bardzo dobrej jakości, które mogę polecić, jeśli uznasz, że to rozwiązanie Cię interesuje. Kilka z nich prowadzi repozytorium zdjęć z opisem. Chociaż najlepsze są komercyjne, te bezpłatne są nadal bardzo dobre.

Obrazowanie dysku działa najlepiej, gdy dysk systemowy nie zawiera danych użytkownika.


1
+1 Zgadzam się z tym. Nie widzę funkcji Disk-Imaging, ale używam DriveImage ( runtime.org/driveimage-xml.htm ), który umożliwia tworzenie kopii zapasowych dysku podczas korzystania z systemu przy użyciu niezawodnych technik. Umożliwia także przeglądanie plików
Cristian T

Użycie maszyny wirtualnej i robienie migawek może być prostsze niż używanie produktu do tworzenia obrazu dysku. Łatwiej byłoby migrować między komputerami, jeśli sprzęt nie jest identyczny.
Velociraptors

@harrymc: Przykro mi, jeśli moje pierwsze sformułowanie nie było jasne za pierwszym razem (podejrzewam, że zrozumienie tego, co miałem na myśli, zajęło tło uniksowe), ale próbuję wykonać kopię zapasową konfiguracji użytkownika, a nie konfiguracji systemu .
Gilles „SO- przestań być zły”

1
Odpowiedź byłaby taka sama, chyba że można dość mocno zawęzić listę elementów w konfiguracji użytkownika. W przeciwieństwie do katalogów kropek w Linuksie nie ma prawdziwego obszaru „konfiguracji użytkownika”. Istnieje gałąź rejestru użytkowników, ale wiele informacji o użytkownikach jest rozproszonych w innych miejscach i na całym dysku w „Program Files”, „Users” itd. Nie można nawet monitorować zmian rejestru, ponieważ sam system Windows bardzo modyfikuje z nich podczas pracy. I każda aplikacja wymyśla własne reguły. Jest powód, dla którego Linux jest bardziej wydajny ...
harrymc

Jako użytkownik systemu Windows chciałbym również mieć taki mechanizm, jak naszkicujesz. Niestety, jest to całkiem niemożliwe. Należy śledzić każdą aplikację i rodzaj zmiany za pomocą Monitora procesów, aby znaleźć miejsce przechowywania danych. To ogromny projekt wymagający monstrualnej inwestycji czasu.
harrymc

2

Wychodząc ze strony serwera po ogrodzeniu, gdzie można oczekiwać, że będziemy bardzo paranoiczni w kwestii zmian konfiguracji i skąd pochodzą, mogę powiedzieć, że tak naprawdę nie istnieją. Globalne śledzenie konfiguracji jest w większości procesem całkowicie ręcznym. Możliwe jest monitorowanie (ale nie zapobieganie ) określonych obszarów rejestru pod kątem zmian, ale nie znam żadnych bezpłatnych / tanich pakietów oprogramowania, które to umożliwiają, oraz kilku bardzo drogich (jest to o wiele bardziej złożony problem niż śledzenie informacji o pliku, a następnie różnicowanie dwóch pliki tekstowe, a więc drogie).

To powoduje, że administratorzy systemu Unix są batty. Kyle Brandt , sysadmin dla StackOverflow Inc, zajmował się tego rodzaju sprawą kilka tygodni temu, gdy przygotowywał nową partię maszyn Windows dla StackExchange. Crossover Linux / Windows SysAdmins wszyscy z nim rozmawiali. Po prostu nie ma odpowiednika Windows umieszczania / etc pod VCS. Istnieją pewne brzydkie kłopoty, takie jak obrazowanie dysku / tworzenie migawek lub tylko wymuszanie zmian konfiguracji za pomocą zasad grupy (i ręczne śledzenie zmian w obiektach GPO), ale nic tak eleganckiego.

Przepraszam.


2

Osobiście śledzę zmiany w rejestrze systemu Windows za pomocą Regshot . Zrób migawkę przed zmianą, a następnie drugą po jej wprowadzeniu. Możesz również uzyskać ładny raport HTML o zmianach. Oczywiście musisz upewnić się, że między migawkami wprowadzono tylko kilka zmian, jeśli chcesz dowiedzieć się, co robi każda zmiana. Regshot to program typu open source.

Jeśli szukasz śledzenia / tworzenia kopii zapasowych zmian w systemie plików, najbliższym jest prawdopodobnie DocShield . Możesz za jego pomocą śledzić dowolny folder, chociaż dane aplikacji są prawdopodobnie najlepszym zgadywaniem zmian osobistych preferencji większości programów korzystających z profili użytkowników systemu Windows. DocShield jest bezpłatny dla użytkowników domowych. Możesz naśladować to, co robi, używając xcopy /d:{m-d-y}potrzebnych folderów, a następnie zip / 7z wyjście.

Następnie dodaj dane wyjściowe z obu kopii zapasowych do dowolnego repozytorium kontroli wersji za pomocą swoich uwag.


Biorąc pod uwagę, że nie dbam o raporty HTML, co zrobiłby Regshot, czego nie zrobią Microsoft reg.exei Cygwin regtool? Co do DocShield, co robi to, że żadne oprogramowanie do kontroli wersji nie działa lepiej?
Gilles „SO- przestań być zły”

Nagroda przyznana za Regshot. Nie sądzę, że tak naprawdę tego chcę, ale to dobry początek, na którym mógłbym być w stanie budować (szczególnie biorąc pod uwagę, że jest to oprogramowanie typu open source).
Gilles „SO- przestań być zły”

Myślę, że mój był bardziej tym, czego szukasz ... ale nie dlatego, że chciałem nagrody za poinformowanie cię.
jer.salamon

1

To nie byłoby proste, ale możesz użyć Sysinternals Process Monitor, aby określić, które pliki i ustawienia rejestru zostały zmienione. Następnie możesz dodać zmiany rejestru i zaktualizowane pliki do większego programu, który wprowadzi zmiany za Ciebie. Prawdopodobnie możesz użyć Power Shell lub czegoś takiego jak AutoIt. Następnie sprawdź wynikowy skrypt w swoim vcs. Korzystam z podobnej metody do automatyzacji dziwnych ustawień w skryptach logowania i niestandardowych szablonach administracyjnych zasad grupy.


Jeśli dobrze cię rozumiem, zasadniczo proponujesz zachować tylko różnicę wywołaną przez moje zmiany, zamiast całego rejestru i Application Datazawartości, prawda? Jak wykryć zmiany wprowadzone, gdy program monitorujący z jakiegoś powodu nie działa? Czy istnieje rozsądny sposób na rozszerzenie przepływu pracy, aby umożliwić operacje aktualizacji (tj. Wykonałem już kasę i chcę zastosować jeszcze kilka zmian wprowadzonych na innym komputerze)?
Gilles „SO- przestań być zły”

1

Nie mam dla ciebie rozwiązania systemu operacyjnego, ale istnieje płatna możliwość. Co możesz zrobić, to wykonać kopię zapasową dysku za pomocą DriveImage XML

Format kopii zapasowej to XML. Następnie możesz zapisać ten plik xml (możliwe są także różnice) w swoim ulubionym systemie kontroli wersji.

Jak powiedział HarryMC , tak naprawdę nie można użyć tego obrazu do wprowadzenia zmian w nowym systemie, ale zdecydowanie można użyć obrazu w nowym systemie z dokładnie tym samym sprzętem.


1

Możesz użyć oprogramowania do zarządzania profilami ForensiT, aby skopiować cały profil, uruchamiając okno systemu Windows. Kliknij tutaj, aby to sprawdzić: Menedżer profili użytkowników


Nie wiem, jak ten program mógłby mi pomóc: wygląda na to, że służy do wdrażania profili na wielu komputerach, co nie jest moim głównym zmartwieniem (zarządzanie historią). Widzę, że może to być cenne narzędzie dla administratorów, ale jestem tutaj użytkownikiem.
Gilles „SO- przestań być zły”

Umożliwia tworzenie kopii zapasowej profilu użytkownika i przywrócenie go w dowolnym momencie. Czy nie tego szukasz?
jer.salamon

-2

Wydaje mi się, że opisujesz aplikację bazy danych, w której śledzisz klucze rejestru i indeksujesz je według znacznika. Chociaż nie jestem wystarczająco techniczny w kwestii kluczy rejestru, aby to zrobić, w twoim przykładzie chcesz przeszukać bazę danych w poszukiwaniu Pink Desk top i uzyskać instrukcję, która zaimplementuje tę zmianę na innym komputerze. To znaczy, jeśli rozumiem twoje intencje

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.