我们在项目中要求我们必须比较两个文本(update1,update2)并提出一个算法来定义多少个单词和多少个句子已经改变.
有没有我可以使用的算法?我甚至没有找代码.如果我知道算法,我可以用java编写代码.谢谢.
考虑一个文件(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) 我正在审查一个能够解决很多问题的补丁,添加了一些东西,并删除了一些东西.我想知道是否有人编写了一个实用程序,用于在通用差异中挑选出独特的添加/删除功能?
也就是说,添加和删除相同的行应该取消它们自己.
显然这并不是一直有用,但有时它正是我想要的:)
在重构源代码时,有时您需要在文件中移动大块文本,甚至移动到新文件.您创建一个分支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)