如何更新 GIO 服务器的 DATA 版本

2023-10-24

如果您之前使用 3.2 版本的服务器,并意图使用 csharp-Protoshift 代理服务器,则我们建议您将服务器更新到 3.4 版本。

您可能之前对 data 进行过一些自己的更改,因此本文主要讲解如何更新服务器所需的 data,或者说,如何将自己的更改合并为服务器可用的新版本 data.

前置准备

本文主要使用软件 WinMerge 操作,以比对各个 data 版本间的差异。也可用类似功能的软件代替。

然后你需要打开软件,建立一个三路比较。使用的有以下文件:

  • 你的服务器正在使用的 data 内容的原样版本,即 DIY 前的版本。它应置于第 1 组。
  • 你想要更新到的 data 的原样版本。它应置于第 2 组。
  • 你的服务器正在使用的 data。它应置于第 3 组。

合并规则

首先,建议另外创建一个文件夹存放更新后的 data.

开始比较后,等待一段时间就可以看到对于“不同”的见解。大约有以下几种情况:

  1. 完全相同。
    这种情况下自然选任意一个版本即可。
  2. 文件不同(左侧与右侧完全相同)。
    也就是说你未曾对其进行过更改,但它进行了更新,所以选择中间的版本即可。
  3. 文件不同(左侧与中间完全相同)。 这种情况则是你对其进行过更改,而且它的数据没有更新。选择右侧的版本。
  4. 文件不同。如果是完全不同,则只能发挥自己的智慧进行三个版本间的合并了。

综上所述,你可以:

  1. 首先,在筛选中勾选:
    • 显示相同项
    • 显示仅中间存在的项
    • 显示二进制文件
    • 三路比较 > 显示仅在中间不同的项
  2. 选择所有符合以下条件其一的文件/文件夹:
    • 文本文件/二进制文件完全相同
    • 仅在中间
    • 文件夹不同(左侧与右侧完全相同)(此条注意与“左侧与中间完全相同”区分)
  3. 右击任一选中项,选择:复制项目到剪贴板 > 中间;
  4. 在文件资源管理器中打开输出文件夹,并按 Ctrl+V 粘贴这些项目。
  5. 以顺序在 WinMerge 中展开剩余的文件夹,在输出文件夹的同位置创建相同的文件夹并打开,并对其重复 2-4 步。
  6. 在筛选中取消勾选:
    • 显示相同项
    • 显示仅中间存在的项
    • 三路比较 > 显示仅在中间不同的项 并勾选:
    • 显示仅右侧存在的项
    • 三路比较 > 显示仅在右侧不同的项
  7. 选择所有符合以下条件其一的文件/文件夹:
    • 仅在右侧
    • 文件夹不同(左侧与中间完全相同)
  8. 重复 3-4 步;
  9. 以顺序在 WinMerge 中展开剩余的文件夹,在输出文件夹的同位置创建相同的文件夹并打开,并对其重复 7-8 步。
  10. 在筛选中取消所有勾选,仅勾选“选择不同项”,并自行进行处理。

自行合并技巧

在三个版本之间进行合并通常是一件恼人的工作,因此这里作者给出一些个人的见解。

首先,不要使用 WinMerge 的合并器工作。在执行三路比较时,WinMerge 的“复制到左侧”与“复制到右侧”等功能会应用于其他两个版本,如果使用的原样数据版本要长期作为参考那么不应这样做。

应右击想要自行合并的文件,找到“复制项目到剪贴板”,自行选择中间或右侧的文件粘贴到输出文件夹的同等位置(取决于你认为以哪个版本为基会使合并比较容易)。

接下来将会介绍一些常见的合并场景。

少量修改类

你可能修改了位于特定位置的少量数值,而这份文件的新版本添加了一些配置。

在这种情况下,建议直接以中间为基,并将修改的内容在指定的位置覆盖。

顺带一提,如果你有记录过你具体怎样修改了文件,以新版本的数据(中间)为基重新进行一次更改也是可以接受的选项。

格式更改类

如果你在 WinMerge 里看到整个文件都被修改(一般文件是 .txt 后缀的制表符分隔值文件),则可能是文件中添加了列使整个文件的格式都发生了变化。这种情况下:

  • 首先,以右侧为基,将文件复制到输出文件夹的指定位置,并以 VSCode 打开。点击右下角的“空格: 4”,选择“使用制表符缩进”,并选定任意一个制表符显示长度。
  • 保持在第一行,拖动 WinMerge 下方的滚动条,查看是否在最后一列后新加了一列。
  • 如果是:这种情况比较简单。首先将多出的行头复制到输出文件第一行的最后,并确保其以制表符结尾。然后选中一个换行符(即前一行的最后拖到下一行的开始),按右方向键和 End 键,最后按一下 Tab 键,在每行后面插入一个制表符。
  • 如果不是,则你可以通过 Excel 修改解决。在 VSCode 中点击右下角“UTF-8”,选择“通过编码保存”,搜索 gb2312 编码并保存,然后拖动到 Excel 内打开。
    需要注意的是 Excel 打开一些文件并重新保存时很容易出现格式错误(例如自动科学计数法、日期格式自动转换等),需要多加留意;此外修改完了还要再把它的格式改回 UTF-8,才能供服务器使用。