【发布时间】:2018-04-04 08:39:22
【问题描述】:
当我们使用支持 ID 跟踪的 VCS 时,当我们想从给定的实现中提取接口时,我们有共同的模式
Rename file A.java to AImp.java
Create new file A.java
我们这样做是因为想要 AImp.java 的完整历史记录(从旧 A.java 合并的内容将合并到 AImp.java 中)
现在我们转移到 Git,我想重复这个模式:
echo "class A {}" > A.java
git add .
git commit -m "new class A"
git mv A.java AImp.java
git commit -m "rename A->Aimp"
echo "interface A {}" > A.java
git add .
git commit -m "create new interface A"
我在两个单独的提交中进行重命名和添加,因此重命名检测有效。 现在的历史是这样的:
e7579fb (HEAD -> master) create new interface A
610a9b3 rename A->Aimp
b94e8bf new class A
但是(在我看来)A.java 的历史是错误的:
git log --oneline --follow A.java
e7579fb (HEAD -> master) create new interface A
610a9b3 rename A->Aimp
b94e8bf new class A
我只希望看到:
e7579fb (HEAD -> master) create new interface A
你怎么看?
(我知道由于重命名检测算法,我不能指望从旧的 A.java 合并到 Aimp.java)
谢谢
博阿斯
【问题讨论】: