如果您之前使用 3.2 版本的服务器,并意图使用 csharp-Protoshift 代理服务器,则我们建议您将服务器更新到 3.4 版本。
您可能之前对 data 进行过一些自己的更改,因此本文主要讲解如何更新服务器所需的 data,或者说,如何将自己的更改合并为服务器可用的新版本 data.
前置准备
本文主要使用软件 WinMerge 操作,以比对各个 data 版本间的差异。也可用类似功能的软件代替。
然后你需要打开软件,建立一个三路比较。使用的有以下文件:
- 你的服务器正在使用的 data 内容的原样版本,即 DIY 前的版本。它应置于第 1 组。
- 你想要更新到的 data 的原样版本。它应置于第 2 组。
- 你的服务器正在使用的 data。它应置于第 3 组。
合并规则
首先,建议另外创建一个文件夹存放更新后的 data.
开始比较后,等待一段时间就可以看到对于“不同”的见解。大约有以下几种情况:
- 完全相同。
这种情况下自然选任意一个版本即可。 - 文件不同(左侧与右侧完全相同)。
也就是说你未曾对其进行过更改,但它进行了更新,所以选择中间的版本即可。 - 文件不同(左侧与中间完全相同)。 这种情况则是你对其进行过更改,而且它的数据没有更新。选择右侧的版本。
- 文件不同。如果是完全不同,则只能发挥自己的智慧进行三个版本间的合并了。
综上所述,你可以:
- 首先,在筛选中勾选:
- 显示相同项
- 显示仅中间存在的项
- 显示二进制文件
- 三路比较 > 显示仅在中间不同的项
- 选择所有符合以下条件其一的文件/文件夹:
- 文本文件/二进制文件完全相同
- 仅在中间
- 文件夹不同(左侧与右侧完全相同)(此条注意与“左侧与中间完全相同”区分)
- 右击任一选中项,选择:复制项目到剪贴板 > 中间;
- 在文件资源管理器中打开输出文件夹,并按 Ctrl+V 粘贴这些项目。
- 以顺序在 WinMerge 中展开剩余的文件夹,在输出文件夹的同位置创建相同的文件夹并打开,并对其重复 2-4 步。
- 在筛选中取消勾选:
- 显示相同项
- 显示仅中间存在的项
- 三路比较 > 显示仅在中间不同的项 并勾选:
- 显示仅右侧存在的项
- 三路比较 > 显示仅在右侧不同的项
- 选择所有符合以下条件其一的文件/文件夹:
- 仅在右侧
- 文件夹不同(左侧与中间完全相同)
- 重复 3-4 步;
- 以顺序在 WinMerge 中展开剩余的文件夹,在输出文件夹的同位置创建相同的文件夹并打开,并对其重复 7-8 步。
- 在筛选中取消所有勾选,仅勾选“选择不同项”,并自行进行处理。
自行合并技巧
在三个版本之间进行合并通常是一件恼人的工作,因此这里作者给出一些个人的见解。
首先,不要使用 WinMerge 的合并器工作。在执行三路比较时,WinMerge 的“复制到左侧”与“复制到右侧”等功能会应用于其他两个版本,如果使用的原样数据版本要长期作为参考那么不应这样做。
应右击想要自行合并的文件,找到“复制项目到剪贴板”,自行选择中间或右侧的文件粘贴到输出文件夹的同等位置(取决于你认为以哪个版本为基会使合并比较容易)。
接下来将会介绍一些常见的合并场景。
少量修改类
你可能修改了位于特定位置的少量数值,而这份文件的新版本添加了一些配置。
在这种情况下,建议直接以中间为基,并将修改的内容在指定的位置覆盖。
顺带一提,如果你有记录过你具体怎样修改了文件,以新版本的数据(中间)为基重新进行一次更改也是可以接受的选项。
格式更改类
如果你在 WinMerge 里看到整个文件都被修改(一般文件是 .txt
后缀的制表符分隔值文件),则可能是文件中添加了列使整个文件的格式都发生了变化。这种情况下:
- 首先,以右侧为基,将文件复制到输出文件夹的指定位置,并以 VSCode 打开。点击右下角的“空格: 4”,选择“使用制表符缩进”,并选定任意一个制表符显示长度。
- 保持在第一行,拖动 WinMerge 下方的滚动条,查看是否在最后一列后新加了一列。
- 如果是:这种情况比较简单。首先将多出的行头复制到输出文件第一行的最后,并确保其以制表符结尾。然后选中一个换行符(即前一行的最后拖到下一行的开始),按右方向键和 End 键,最后按一下 Tab 键,在每行后面插入一个制表符。
- 如果不是,则你可以通过 Excel 修改解决。在 VSCode 中点击右下角“UTF-8”,选择“通过编码保存”,搜索
gb2312
编码并保存,然后拖动到 Excel 内打开。
需要注意的是 Excel 打开一些文件并重新保存时很容易出现格式错误(例如自动科学计数法、日期格式自动转换等),需要多加留意;此外修改完了还要再把它的格式改回 UTF-8,才能供服务器使用。