如何将我的 Windows 个人配置置于版本控制?
摘要(以下为详细信息和示例):
- 个人配置(例如桌面首选项),而非系统配置(例如驱动程序);无需管理员权限即可工作。
- 版本控制,而不是备份或磁盘映像
以下是我希望能够做的一些事情:
- 将我配置的当前状态提交到存储库,最好具有一定的粒度(如果我做了两处更改,我希望能够提交一项而不提交另一项)。
- 每当我提交时,写入一个更改日志条目,并查看每个配置文件的更改日志条目列表。
- 查看当前状态和存储库版本之间的差异。
- 从新 Windows 机器上的我的存储库中检出并重现我的配置(至少如果新机器具有相同版本的 Windows)。
<添加1> 我不会试图给出“配置”的完全精确的定义;我试图涵盖所有类型的个人喜好(例如,控制面板中无需管理员权限即可设置的任何内容、用户特定的“程序”菜单中的快捷方式,……)。我不想包含我的文档或已安装的应用程序。 </added1>
<添加2> 请注意,我针对的是个人配置,而不是系统配置(这也很有用,但这不是这个问题的目的)。例如,我期望解决方案无需管理员权限即可运行。 </added1>
我在unix中做什么就是把我的版本控制下的点文件。在 Windows 下,我推测我应该将注册表和一些文件(哪些?)提交到 下Application Data
。我希望有比将整个注册表文件置于版本控制之下更好的方法(这不够精细,而且我担心会出现锁定问题)。<添加1>理想情况下,我会将包装器或脚本与一些常见的版本控制软件(Bazaar、CVS、Darcs、Git、Mercurial、Subversion 等)一起使用,但这不是绝对的要求。</added1>
我目前需要使用 Windows 2000 和 Windows XP。由于这是用于工作机器,所以付费软件不行(开源软件是理想的选择)。我更喜欢命令行而不是 GUI。
<添加1> 以下是一个示例工作流程:
- 有一天,我决定将桌面背景改为粉红色。因此,我通过 GUI 进行了更改。这会修改注册表中
配置文件项中的一行。然后,我提交更改,以跟踪它。 - 后来我很奇怪为什么我的桌面背景是粉色的。于是我去更新日志里搜索“桌面颜色”。
- 有一天我需要使用一台新机器。所以我从配置存储库中签出,然后,粉色桌面就出现了。
以下是一些我不想做的事情:
我并不是想做备份。我希望能够跟踪更改(通过语义,或者至少是语法,而不仅仅是通过日期),并在机器之间共享信息(一个存储库,多个签出)。
我并不是想复制 Windows 安装。我不想保留硬件依赖关系、已安装的应用程序或文档。
</added1>
答案1
据我所知,Windows 配置过于分散,无法可靠地备份,因为注册表中有太多文件和位置。
不可能在一台机器上备份注册表并在另一台机器上(甚至在同一台机器上)恢复它,因为太多的键是特定于机器的,而且有些键受 Windows 保护。
系统还原旨在保持机器状态,但对于您的目的来说它是不可靠的,因为它会自行决定删除哪些备份以节省空间,并且存在其他负面问题,例如在 Windows 2000 中不可用。
我能看到的唯一通用解决方案是使用磁盘映像产品对系统磁盘进行完整映像并在需要时进行恢复。
有几种质量非常好的磁盘映像产品,如果您发现此解决方案让您感兴趣,我可以推荐这些产品。其中几个产品保留了带有描述性的图像存储库。虽然最好的是商业产品,但免费软件仍然非常好。
当系统驱动器不包含用户数据时,磁盘映像效果最佳。
答案2
从服务器端来看,你可能会认为我们会非常关注配置更改以及它们的来源,但我可以说,这些更改实际上并不存在。全局配置跟踪在很大程度上是一个完全手动的过程。可以监控(但不能防止) 特定注册表区域的更改,但我知道没有免费/廉价的软件包允许这样做,而且有几个非常昂贵的软件包(这是一个比跟踪文件信息然后区分两个文本文件更复杂的问题;因此,昂贵)。
这让 Unix 管理员抓狂。凯尔·布兰特几周前,StackOverflow Inc 的系统管理员在为 StackExchange 准备一批新的 Windows 机器时,就抱怨过这种事情。Linux/Windows 交叉系统管理员都对他表示同情。根本没有与将 /etc 置于 VCS 下相当的 Windows 版本。有一些丑陋的临时解决方案,例如磁盘映像/快照或仅通过组策略强制配置更改(并手动跟踪对 GPO 的更改),但没有比这更优雅的了。
对不起。
答案3
我个人使用以下方法跟踪 Windows 注册表中的更改登记照片。在更改之前拍摄一张快照,然后在更改之后拍摄第二张快照。您还可以获得一份关于更改的漂亮 HTML 报告。当然,如果您想弄清楚每个更改的作用,您必须确保快照之间只进行了少量更改。Regshot 是一个开源程序。
如果你正在寻找文件系统更改跟踪/备份,最接近的可能是文档盾。您可以使用它跟踪任何文件夹,尽管应用程序数据可能是您对大多数 Windows 用户配置文件感知软件的个人偏好更改的最佳猜测。DocShield 对家庭用户免费。您可以通过使用xcopy /d:{m-d-y}
所需的文件夹然后压缩/7z 输出来模仿它的功能。
然后将两个备份的输出连同您的备注一起添加到任何版本控制存储库。