我如何合并"变化"从一个文件中的两个文本文件,以编程方式?

时间:2018-04-23 14:16:31

标签: java scala

用例

要求是将两个不同文件中的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

我可以使用哪种替代方法来保留缩进和注释?

系统负责保留用户所做的缩进和注释之外的其他更改,例如函数和语句,但不包括缩进和注释。如何实现相同?请提出建议?

如果这个问题适合这个问题,请告诉我。或者这个问题需要以更好的方式表达。

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