相关疑难解决方法(0)

文本比较算法

我们在项目中要求我们必须比较两个文本(update1,update2)并提出一个算法来定义多少个单词和多少个句子已经改变.

有没有我可以使用的算法?我甚至没有找代码.如果我知道算法,我可以用java编写代码.谢谢.

comparison diff text compare

28
推荐指数
5
解决办法
4万
查看次数

使用Git diff检测代码移动+如何使用diff选项

考虑一个文件(1.c)包含作者M和J所做的三个函数和更改.如果有人运行git blame 1.c,他将获得以下输出:

^869c699 (M 2012-09-25 14:05:31 -0600  1) 
de24af82 (J 2012-09-25 14:23:52 -0600  2) 
de24af82 (J 2012-09-25 14:23:52 -0600  3) 
de24af82 (J 2012-09-25 14:23:52 -0600  4) public int add(int x, int y)  {
de24af82 (J 2012-09-25 14:23:52 -0600  5)    int z = x+y;
de24af82 (J 2012-09-25 14:23:52 -0600  6)    return z;
de24af82 (J 2012-09-25 14:23:52 -0600  7) }  
de24af82 (J 2012-09-25 14:23:52 -0600  8) 
^869c699 (M 2012-09-25 14:05:31 -0600  9) public int multiplication(int y, int z){
^869c699 …
Run Code Online (Sandbox Code Playgroud)

git git-diff

24
推荐指数
2
解决办法
6532
查看次数

在补丁文件中突出显示添加/删除的行,忽略移动

我正在审查一个能够解决很多问题的补丁,添加了一些东西,并删除了一些东西.我想知道是否有人编写了一个实用程序,用于在通用差异中挑选出独特的添加/删除功能?

也就是说,添加和删除相同的行应该取消它们自己.

显然这并不是一直有用,但有时它正是我想要的:)

git diff

18
推荐指数
3
解决办法
3709
查看次数

告诉git关注移动的内容(不仅仅是移动的文件)

在重构源代码时,有时您需要在文件中移动大块文本,甚至移动到新文件.您创建一个分支refactored并提交:

$git checkout master
$git branch refactored
$git checkout refactored
<move code around>
$git commit -m "refactored code"
Run Code Online (Sandbox Code Playgroud)

但是,人们可能会在旧的预重构分支之上提交,更改已移动的代码:

$git checkout master
<change code that was moved elsewhere on branch refactored>
$git commit -m "bugfix"
Run Code Online (Sandbox Code Playgroud)

在分支上refactored,您希望合并在master以下位置进行的更改:

$git checkout refactored
$git merge master
<giant merge conflict>
Run Code Online (Sandbox Code Playgroud)

这导致了大的合并冲突.如果有办法告诉git简单地移动了内容,应该可以自动合并.

更糟糕的是,即使在解决冲突并提交冲突之后,git仍然无法使用该解决方案来确定进一步的合并:

<fix conflicts>
$git commit -m "merge master into refactored"
$git checkout master
<change more code>
$git commit -m "bugfix2"
$git checkout refactored
$git merge master
<another giant …
Run Code Online (Sandbox Code Playgroud)

git diff merge merge-conflict-resolution

13
推荐指数
1
解决办法
1089
查看次数