要求是将两个不同文件中的CHANGES合并到一个文件中。 这不是关于端到端地加入两个文件。
考虑文件 FILE_A , FILE_B & FILE_C ,分别为:
FILE_A
FUNCTION FUNCTION1
STATEMENT STATEMENT11
STATEMENT STATEMENT12
;
FUNCTION FUNCTION2
STATEMENT STATEMENT21
STATEMENT STATEMENT22
;
FILE_B
FUNCTION FUNCTION1
STATEMENT STATEMENT11 #this is comment1
STATEMENT STATEMENT12
;
FUNCTION FUNCTION2
STATEMENT STATEMENT21 #this is comment2
STATEMENT STATEMENT22
;
FILE_C
FUNCTION FUNCTION1
STATEMENT STATEMENT11
STATEMENT STATEMENT12
;
FUNCTION FUNCTION2
STATEMENT STATEMENT21
STATEMENT STATEMENT22
STATEMENT STATEMENT23
;
这里要注意的重要一点是 FILE_A & FILE_C 是系统生成的,而 FILE_B 包含缩进更正和用户发表的评论。
问题在于,每次系统生成此文件时,我们都会丢失用户的缩进和注释。
生成 FILE_C 后,系统应合并 FILE_B & FILE_C 进入新文件 FILE_D ,我将其称为叠加文件。
FILE_D
FUNCTION FUNCTION1
STATEMENT STATEMENT11 #this is comment1
STATEMENT STATEMENT12
;
FUNCTION FUNCTION2
STATEMENT STATEMENT21 #this is comment2
STATEMENT STATEMENT22
STATEMENT STATEMENT23
;
但我不确定如何实现这个程序化!
对于如何解决这个问题的任何建议表示赞赏。我试图在 Scala 中解决这个问题。
已编辑1
系统负责保留用户所做的缩进和注释之外的其他更改,例如函数和语句,但不包括缩进和注释。如何实现相同?请提出建议?
如果这个问题适合这个问题,请告诉我。或者这个问题需要以更好的方式表达。
答案 0 :(得分:2)
这是生成的配置文件的已知问题。试图以某种方式合并这些文件在我看来是错误的方法,因为它也非常容易出错。即使像git这样的大型应用程序也不会在一个文件中合并多个更改(相反,您必须手动执行此操作。它称为合并冲突)。大多数方法都是通过将信息#DO NOT EDIT THIS FILE - ANY CHANGES WILL BE OVERRIDEN
添加到生成的配置文件中来实现此目的。然后,用户意味着将文件复制到另一个目录并在那里进行更改。
config
|
` - generated
| |
| `application.conf # Generate your config to this file
|
|
` - changes
|
`application.conf # Read your config from this file. If it doesn't exist, read config/generated/application.conf instead