有现代的免费D?VCS可以忽略主机序列号吗?

3
我正在考虑将一套大型IBM汇编语言程序从基于“文件名包含版本号”的vcs迁移到现代vcs,以便能够分支和合并等功能。
这些文件有80个字符记录,最后8个字符是几乎没有意义的序列号。
由于种种原因,我需要vcs忽略(但希望以某种明确定义的方式保存)序列号列,并仅基于前72个字符的内容进行差异比较和补丁。
有什么想法吗?
仅仅为了澄清“忽略但保留”:我承认这有点模糊,因为我还没有完全整理好我的想法。
它可能类似于这样:
“在合并/打补丁时,如果一方有序列号,则输出它们;如果多于一方有序列号,则使用文件(1|2|3)中存在的序列号。”
为什么要保留序列号?首先,它们确实是序列号。其次,我想重新将这些东西集成到主机上,其中序列号可能非常重要。(那些知道“SMP/E”意思的人会明白。不知道的人可以高兴,但要颤抖...)
我刚意识到我还没有接受答案。选择很困难,但@Noldorin最接近我的要求。

你说你想忽略,但保留序列号。抱歉,但这听起来像是一个矛盾。如果序列号在修订之间发生变化,那么应该保留哪个? - anon
我猜他所说的“忽略”只是指应该从diff中排除序列号。但是,我仍然不明白这如何与打补丁配合使用。 - mooware
好的,那你应该可以顺序重新排列它们了,对吧?我们过去经常用新的序号来打印新的代码片段。(是的,我说的是"打印新的代码片段"。我用卡片操作。接受这个事实吧。) - Charlie Martin
@Charlie:是的,我仍然使用卡片。我还有几个盒子(未打孔),用于做笔记。对我来说重新排序没问题;但对于主机上的东西(特别是SMP/E)会使生活变得极其复杂。 - Brent.Longborough
4个回答

3
在Mercurial中,您可以轻松地忽略.asm文件的73到末尾列--只需在.hgrc文件中添加以下几行即可:
[encode]
*.asm: cut -b -72

(如果你想支持Windows系统,也可以使用稍微复杂一些的方法;-)。但是这不符合您“忽略但保留”规范中的“保留”部分(正如Neil的评论所指出的那样),这本身就有些问题。)

2
我相信任何现代版本控制系统(我通常推荐SubversionBazaar,分别是集中式和分布式的)都可以利用外部的差异/合并工具。不幸的是,我认为你需要自己编写这个定制的合并工具(至少我从来没有听说过有这样的工具),尽管我想这不应该是一个很大的任务。话虽如此,你可能会在这个StackOverflow问题以及这个问题的建议中找到一些好的建议。抱歉我不能提供更多关于哪些工具你应该特别关注的信息,但是值得浏览一下,以防其中有任何一个满足你的要求。

不知道“合并”部分,但编写一个好的差异工具实际上相当困难。 - Ira Baxter

1

(声明:我代表本答案所描述的工具供应商)。

你需要的是一种差异工具,它理解列72-80中的内容是“空格”,而不管你是否填充了字符。

Semantic Designs COBOL Smart Differencer有一个IBM Enterprise COBOL变体,可以很好地理解这一点。

SD为各种语言制作智能差异工具,IBM Assembler是未来的目标。如果您有兴趣,请联系SD离线讨论IBM Assembler的智能差异工具。


1

我认为“保留”一词在这里是关键。当你说序列号“几乎没有意义”时,这个“几乎”包括除序列以外的任何内容吗?在 Dreamtime 时代,我们曾经在那里编码了一种程序流程图(你可以在 Brooks 的《神话般的人月》第一版中找到一个例子),但这种做法已经幸运地消失了。

如果序列号列的唯一含义是有序的数字序列。我会倾向于使用 @Alex 的方法 - 你可以从任何现代 VC 工具的脚本预处理文件 - 剪切序列号,然后在提取文件时,使用类似的工具重新对记录进行排序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接