插入和合并生成文件
GDG 中的新一代通常会插入到当前代之后,从而成为新的当前代。
如果增量与当前代号的总和大于 9999 ,那么将发生 回绕 (减去 9999) ,并且新代号将小于当前代号。 在这种情况下,可能会在当前生成之前插入新一代,成为组中的先前 (较少的当前) 生成。
请考虑以下初始组:
0: base.g0001v00
冒号前的数字 (称为 戳记数字) 用于使插入可预测地发生,并对代号实施限制。
通常,在发生任何换行后,会将新一代插入到由新一代编号指示的位置中,并且不会更改 GDG 中的戳记编号。
在以下每个示例中,将首先列出最不当前的生成,最后列出最当前的生成。 Italics 指示已添加到组的新一代。
请考虑上面显示的示例初始组。 如果指定了 base(+1) ,那么当前代号 (0001) 将按 1 递增。 因此,该组将包含新一代 0002 ,如下所示:
0: base.g0001v00
0: base.g0002v00
如果随后指定 base(+4) ,那么当前代号 (0002) 将按 4 递增。 因此,该组将包含新一代 (0006) ,如下所示:
0: base.g0001v00
0: base.g0002v00
0: base.g0006v00
如果随后指定 base(+9997) ,那么当前代号 (0006) 将递增 9997。 生成的代号 (10003) 大于 9999 ,因此包装为 0004。 在生成的组中,将在当前生成 (0006) 之前插入此新一代 (0004) ,如下所示:
0: base.g0001v00
0: base.g0002v00
0: base.g0004v00
0: base.g0006v00
在最后一次插入之后,打开 base(+9997) 以进行输入不是错误,因为对 base(+9997) 的引用表示现有文件 base.g0004v00 ,并且不会导致对组的结构进行任何更改。
通常,新一代的纪元编号与当前一代的纪元编号相同。 不过有两种情况是对纪元数字进行了调整,新一代的插入位置不太明显:
- 如果当前代号大于或等于 9000 且新代号小于 1000 ,那么将发生回绕。 但新生代的纪元号会增加,让新生代可以插到当代人之后,尽管新生代的代数较低。例如,请考虑以下初始组:
0: base.g1000v00 0: base.g9000v00如果指定了
base(+1499),那么当前代号 (9000) 将递增 1499。 生成的代号 (10499) 大于 9999 ,因此包装为 0500。 在生成的组中,尽管组中的代数最低,但新一代 (0500) 被赋予更高的纪元数,并成为新的当前代数,如下所示:0: base.g1000v00 0: base.g9000v00 1: base.g0500v00 - 如果当前代号小于 1000 且新生代号大于或等于 9000 ,那么除非当前代号的戳记号已经为零,否则将减少新生代的戳记号。 在后一种情况下,将增加现有世代的纪元编号,以便尽管具有更高的代号,但将新一代插入到所有世代之前。例如,请考虑以下初始组:
0: base.g0001v00 0: base.g0999v00如果指定了base(+8501),那么当前生成 (0999) 将增加 8501。 生成的代号 (9500) 小于 9999; 因此不会发生换行。 生成的组将包含新一代 (9500) ,但具有戳记编号 0。 现有世代的纪元编号将增加到 1。 因此,新一代将成为组中当前生成最少的一代,如下所示:0: base.g9500v00 1: base.g0001v00 1: base.g0999v00