Kontrol versi untuk konfigurasi Windows

8

Bagaimana saya bisa meletakkan konfigurasi Windows pribadi saya di bawah kontrol versi ?

Ringkasan (detail dan contoh berikut):

  • Konfigurasi pribadi (mis. Preferensi desktop), bukan konfigurasi sistem (mis. Driver); harus bekerja tanpa hak admin
  • Kontrol versi, bukan pencadangan atau pencitraan disk

Berikut adalah beberapa hal yang saya ingin dapat lakukan:

  • Komit keadaan konfigurasi saya saat ini ke repositori, lebih disukai dengan beberapa rincian (jika saya telah membuat dua perubahan, saya ingin dapat melakukan satu tanpa komit yang lain).
  • Tulis entri changelog setiap kali saya komit, dan lihat daftar entri changelog untuk setiap file konfigurasi.
  • Lihat perbedaan antara kondisi saat ini dan versi repositori.
  • Lihat dari repositori saya di mesin Windows baru dan mereproduksi konfigurasi saya (setidaknya jika mesin baru memiliki versi Windows yang sama).

<added1> Saya tidak akan mencoba memberikan definisi "konfigurasi" yang sepenuhnya tepat; Saya mencoba untuk mencakup semua jenis preferensi pribadi (misalnya, apa pun yang dapat diatur di panel kontrol tanpa hak admin, pintasan di menu "Program" khusus pengguna, ...). Saya tidak ingin memasukkan dokumen saya atau aplikasi yang diinstal. </added1>

<added2> Perhatikan bahwa saya menargetkan konfigurasi pribadi saya, bukan konfigurasi sistem (itu akan berguna juga, tetapi bukan tujuan dari pertanyaan ini). Misalnya saya mengharapkan solusi untuk bekerja tanpa hak admin. </added1>

Apa yang saya lakukan di unix adalah meletakkan (pilihan) file dot saya di bawah kontrol versi . Di Windows, saya kira saya harus melakukan registri dan beberapa file (yang?) Di bawah Application Data. Saya ingin sesuatu yang lebih baik daripada meletakkan seluruh file registri di bawah kontrol versi (itu tidak cukup granularity, dan saya takut masalah penguncian). <added1> Idealnya saya akan menggunakan pembungkus atau skrip dengan beberapa perangkat lunak kontrol versi umum (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...), tapi itu bukan persyaratan mutlak. </added1>

Saat ini saya perlu bekerja dengan Windows 2000 dan Windows XP. Karena ini untuk mesin kerja, payware tidak akan berfungsi (open source akan ideal). Saya lebih nyaman dengan baris perintah daripada dengan GUI.

<added1> Ini contoh alur kerja:

  • Suatu hari saya memutuskan saya ingin latar belakang desktop saya menjadi merah muda. Jadi saya melakukan perubahan melalui GUI. Ini memodifikasi baris dalam kunci file konfigurasi di registri. Saya kemudian melakukan perubahan, untuk melacaknya.
  • Kemudian saya bertanya-tanya mengapa latar belakang desktop saya berwarna merah muda. Jadi saya mencari "warna desktop" di changelog.
  • Suatu hari saya perlu menggunakan mesin baru. Jadi saya memeriksa dari repositori konfigurasi saya, dan voilà, desktop pink.

Berikut adalah beberapa hal yang tidak saya coba lakukan:

  • Saya tidak mencoba membuat cadangan. Saya ingin dapat melacak perubahan (berdasarkan semantik, atau setidaknya sintaks, bukan hanya berdasarkan tanggal), dan untuk berbagi informasi antar mesin (satu repositori, beberapa checkout).

  • Saya tidak mencoba meniru instalasi Windows. Saya tidak ingin membawa dependensi perangkat keras, aplikasi yang diinstal, atau dokumen.

</added1>

Gilles 'SANGAT berhenti menjadi jahat'
sumber
4
Apa tujuan akhir dari ini, apakah Anda mencoba merekayasa balik aplikasi? Alasan saya bertanya adalah tanpa laporan tentang apa yang berbeda, menjaga keadaan kering beku akan mudah. Bahkan melihat perubahannya mungkin tidak terlalu sulit, tetapi tidak memeriksanya ke dalam kontrol versi. Saya hanya ingin lebih memahami apa yang ingin Anda capai dan mungkin saya bisa menyarankan pendekatan yang berbeda.
Scott McClenning
Setuju dengan @Scott, saya tidak melihat ini sangat praktis (atau bahkan mungkin, dalam hal ini). Rincian lebih lanjut tentang apa yang ingin Anda capai akan sangat bagus.
Sasha Chedygov
1
+1 ... Anda hampir pasti melakukan ini dengan cara yang salah.
Zac Thompson
@Scott: tujuan saya adalah menggunakan kontrol versi untuk penyesuaian Windows saya. Saya tidak tahu mengapa pertanyaan saya menyarankan reverse engineering kepada Anda. @Zac: Saya tidak bisa melakukan ini dengan cara yang salah, karena saya belum membuat langkah pertama.
Gilles 'SO- stop being evil'
Sepertinya tujuan Anda adalah melakukan sesuatu pada sistem dan kemudian melihat apa yang terjadi, dan mengatur konfigurasi yang dapat Anda pulihkan nanti. Jika Anda perlu mengembalikan ke konfigurasi nanti, saya akan menggunakan beberapa perangkat lunak mesin virtual untuk mengambil foto. Itu tidak akan memberi tahu Anda apa yang terjadi tetapi itu akan membuat Anda ke tempat yang sama lagi dan lagi. Jika Anda ingin melihat apa yang dilakukan aplikasi, ada program yang membuat file MSI dengan melakukan diff sistem sebelum dan sesudah menginstal. Anda kemudian dapat melihat ke dalam MSI dan melihat apa yang disentuh / diubah oleh aplikasi. Tetapi tidak satu pun dari ini adalah "kontrol versi".
Scott McClenning

Jawaban:

9

Sejauh yang saya tahu, konfigurasi Windows terlalu tersebar untuk dapat diandalkan cadangan, di antara terlalu banyak file dan tempat di registri.

Tidak mungkin untuk membuat cadangan registri pada satu mesin dan mengembalikannya pada yang lain (atau bahkan pada yang sama), karena terlalu banyak kunci terlalu spesifik untuk mesin dan karena beberapa kunci dilindungi oleh Windows.

Pemulihan Sistem bertujuan menjaga status mesin, tetapi untuk tujuan Anda tidak dapat diandalkan, karena akan menentukan sendiri cadangan mana yang akan dihapus untuk menghemat ruang, dan memiliki masalah negatif lainnya seperti tidak tersedia di Windows 2000.

Satu-satunya solusi universal yang dapat saya lihat adalah mem-image keseluruhan disk sistem dan mengembalikannya saat diperlukan, menggunakan produk disk-imaging.

Ada beberapa produk disk-imaging dengan kualitas yang sangat baik, yang dapat saya rekomendasikan jika Anda menemukan bahwa solusi ini menarik bagi Anda. Beberapa di antaranya menyimpan repositori gambar dengan deskriptif. Meskipun yang terbaik adalah komersial, yang freeware masih sangat bagus.

Pencitraan disk berfungsi paling baik saat drive sistem tidak berisi data pengguna.

harrymc
sumber
1
+1 Saya setuju dengan itu. Saya tidak dapat melihat fitur Disk-Imaging tetapi saya menggunakan DriveImage ( runtime.org/driveimage-xml.htm ) yang memungkinkan Anda membuat cadangan disk saat menggunakan sistem menggunakan teknik yang dapat diandalkan. Ini juga memungkinkan Anda untuk menelusuri file
Cristian T
Mungkin lebih mudah menggunakan VM dan mengambil foto, daripada menggunakan produk disk-imaging. Itu akan jauh lebih mudah untuk bermigrasi antar mesin jika perangkat kerasnya tidak identik.
Velociraptors
@harrymc: Saya minta maaf jika formulasi awal saya tidak jelas pertama kali (saya kira butuh latar belakang unix untuk memahami apa yang saya maksud), tapi saya mencoba untuk membuat cadangan konfigurasi pengguna saya, bukan konfigurasi sistem .
Gilles 'SO- stop being evil'
1
Jawabannya tetap sama, kecuali Anda dapat mempersempit daftar elemen dalam konfigurasi pengguna dengan cukup tajam. Tidak ada area "konfigurasi pengguna" yang nyata di Windows, tidak seperti direktori Linux dot. Ada kumpulan registri pengguna, tetapi banyak info pengguna tersebar di tempat lain dan di seluruh disk di "Program Files", "Users" dll. Anda bahkan tidak dapat memantau perubahan registri, karena Windows sendiri memodifikasi banyak sekali dari mereka saat bekerja. Dan setiap aplikasi menciptakan aturannya sendiri. Ada alasan mengapa Linux lebih efisien ...
harrymc
Sebagai pengguna Windows, saya juga ingin memiliki mekanisme seperti yang Anda garis besar. Sayangnya, itu sangat tidak mungkin. Anda perlu melacak setiap aplikasi dan jenis perubahan menggunakan Process Monitor, untuk menemukan di mana data disimpan. Ini adalah proyek besar yang menuntut investasi waktu yang luar biasa.
harrymc
2

Berasal dari sisi server pagar, tempat Anda mengharapkan kami menjadi sangat paranoid tentang perubahan konfigurasi dan dari mana mereka berasal, saya dapat mengatakan bahwa itu tidak benar-benar ada. Pelacakan konfigurasi global adalah proses yang sepenuhnya manual untuk sebagian besar. Dimungkinkan untuk memantau (tetapi tidak mencegah ) area registri spesifik untuk perubahan, tetapi saya tahu tidak ada paket perangkat lunak gratis / murah yang memungkinkan dan beberapa paket yang sangat mahal (ini adalah masalah yang jauh lebih kompleks daripada melacak info file dan kemudian membedakan dua file teks; dengan demikian, mahal).

Ini mendorong Unix admin batty. Kyle Brandt , sysadmin untuk StackOverflow Inc, mencekam tentang hal semacam ini beberapa minggu yang lalu ketika ia sedang menyusun batch baru mesin Windows untuk StackExchange. Linux / Windows crossover SysAdmins semua bersimpati dengannya. Tidak ada Windows yang setara dengan menempatkan / etc di bawah VCS. Ada beberapa kludges jelek di luar sana, seperti disk imaging / snapshotting atau hanya memaksa perubahan konfigurasi melalui Kebijakan Grup (dan melacak perubahan ke GPO secara manual), tetapi tidak ada yang hampir sama anggunnya.

Maaf.

SysAdmin1138
sumber
2

Secara pribadi saya melacak perubahan di registri windows dengan Regshot . Anda mengambil snapshot sebelum perubahan lalu yang kedua setelah membuatnya. Anda juga bisa mendapatkan laporan HTML perubahan yang bagus. Tentu saja Anda harus memastikan hanya beberapa perubahan yang dilakukan di antara snapshot jika Anda ingin mengetahui apa yang dilakukan setiap perubahan. Regshot adalah program sumber terbuka.

Jika Anda mencari pelacakan / pencadangan perubahan sistem file terdekat yang mungkin ada adalah DocShield . Anda dapat melacak folder apa pun dengannya meskipun data aplikasi mungkin merupakan perkiraan terbaik Anda untuk perubahan preferensi pribadi Anda dari sebagian besar perangkat lunak yang disadari oleh pengguna windows. DocShield gratis untuk pengguna rumahan. Anda dapat meniru apa yang dilakukannya dengan menggunakan xcopy /d:{m-d-y}folder yang Anda butuhkan dan kemudian zip / 7z output.

Kemudian tambahkan output dari kedua cadangan ke repositori kontrol versi apa pun dengan komentar Anda.

Shogox
sumber
Mengingat saya tidak peduli dengan laporan HTML, apa yang akan dilakukan Regshot yang tidak dilakukan oleh Microsoft reg.exedan Cygwin regtool? Sedangkan untuk DocShield, apa fungsinya sehingga perangkat lunak kontrol versi mana pun tidak akan melakukan yang lebih baik?
Gilles 'SO- stop being evil'
Hadiah diberikan untuk Regshot. Saya tidak berpikir itu benar-benar yang saya inginkan, tetapi ini adalah awal yang baik yang saya dapat membangun (terutama mengingat itu open source).
Gilles 'SO- stop being evil'
Saya pikir milik saya lebih dari apa yang Anda cari ... tetapi bukan karena saya ingin hadiah hanya untuk memberi tahu Anda.
jer.salamon
1

Ini tidak akan sederhana, tetapi Anda bisa menggunakan Sysinternals Process Monitor untuk menentukan file dan pengaturan registri mana yang diubah. Anda kemudian dapat menambahkan suntingan registri dan memperbarui file ke dalam program yang lebih besar yang akan membuat perubahan untuk Anda. Anda mungkin dapat menggunakan Power Shell atau sesuatu seperti AutoIt. Kemudian periksa skrip yang dihasilkan ke vcs Anda. Saya menggunakan metode serupa untuk mengotomatisasi pengaturan aneh ke skrip log masuk dan template administrasi Kebijakan Grup kustom.

pemalas
sumber
Jika saya memahami Anda dengan benar, Anda pada dasarnya mengusulkan untuk menjaga hanya perbedaan yang disebabkan oleh perubahan saya, bukan seluruh registri dan Application Datakonten, bukan? Bagaimana saya mendeteksi perubahan yang dilakukan ketika program monitor tidak berjalan karena suatu alasan? Apakah ada cara yang masuk akal untuk memperpanjang alur kerja untuk memungkinkan operasi pembaruan (yaitu, saya sudah melakukan checkout dan ingin menerapkan beberapa perubahan lagi yang dibuat pada komputer lain)?
Gilles 'SO- stop being evil'
1

Saya tidak punya solusi OS untuk Anda, tetapi ada kemungkinan berbayar. Apa yang dapat Anda lakukan, adalah membuat cadangan drive Anda menggunakan DriveImage XML

Format cadangan adalah XML. Anda kemudian dapat menyimpan file xml ini (beda juga dimungkinkan) ke Sistem Kontrol Versi favorit Anda.

Seperti yang dikatakan HarryMC , Anda tidak dapat benar-benar menggunakan gambar ini untuk membuat perubahan pada sistem baru, tetapi Anda pasti dapat menggunakan gambar pada sistem baru dengan perangkat keras yang persis sama.

Devdatta Tengshe
sumber
1

Anda dapat menggunakan perangkat lunak manajemen profil ForensiT untuk menyalin seluruh profil Anda dengan mematikan kotak windows. Buka di sini untuk memeriksanya: Manajer Profil Pengguna

jer.salamon
sumber
Saya tidak melihat bagaimana program ini bisa membantu saya: sepertinya ini untuk menyebarkan profil ke beberapa mesin, yang bukan urusan utama saya (mengelola sejarah). Saya dapat melihat bahwa itu mungkin alat yang berharga untuk administrator, tapi saya pengguna di sini.
Gilles 'SANGAT berhenti menjadi jahat'
Ini memberi Anda kemampuan untuk membuat cadangan profil pengguna Anda dan dapat mengembalikannya ketika Anda memilih. Bukankah itu yang Anda cari?
jer.salamon
-2

Menurut saya Anda menggambarkan aplikasi basis data di mana Anda melacak kunci registri dan mengindeksnya dengan tag. Meskipun saya tidak cukup teknis dengan kunci registri untuk melakukan ini, dalam contoh Anda, Anda ingin mencari database untuk bagian atas Pink Desk dan mendapatkan instruksi yang akan mengimplementasikan perubahan itu pada komputer yang berbeda. Yaitu, jika saya memahami niat Anda

pengguna50466
sumber