如何查找谁在hg中编辑了一行

时间:2014-12-21 05:44:33

标签: mercurial

我肯定错过了有关如何使用hg blame的内容。

我在文件Foo.csproj中有一个特定的行是可疑的,我想看看谁修改了它。根据{{​​3}},这应该是hg blame Foo.csproj,也许是hg blame -unl Foo.csproj

其中一个回复给我

abort: Foo.csproj: no such file in rev xxxxx

我尝试过完全合格的路径,而不是。发生了什么事?我使用的功能错了吗?它的意思是什么?我如何找出我想要找到的内容(最后一个修改该文件第1700行的人)。

请注意,虽然我对在Sourcetree和TortoiseHg中如何完成此操作感兴趣,并且我确定其他人也可能感兴趣,但我特别想知道如何使用命令执行此操作线客户端。

1 个答案:

答案 0 :(得分:3)

Blame的工作方式与您期望的完全一样,并且您的示例命令是正确的,因此我怀疑您遇到了一些棘手的问题。这是一个正常情况的例子:

ry4an@four:~$ hg init GeorgeMauer
ry4an@four:~$ cd GeorgeMauer/
ry4an@four:~/GeorgeMauer$ echo test > afile.txt

ry4an@four:~/GeorgeMauer$ hg commit -Am first --user George
adding afile.txt
ry4an@four:~/GeorgeMauer$ echo more test >> afile.txt 
ry4an@four:~/GeorgeMauer$ hg commit -m second --user Other
ry4an@four:~/GeorgeMauer$ hg blame afile.txt
0: test
1: more test
ry4an@four:~/GeorgeMauer$ hg blame -u afile.txt
George: test
 Other: more test
ry4an@four:~/GeorgeMauer$

您是否有可能与Windows(和Mac)默认文件系统中隐藏的“不区分大小写,但保持大小写”属性相冲突?

尝试hg manifest以确保您提供的文件名的大小写是在repo中记录的内容,这可能与您在磁盘上的文件不同。对于上面的示例,我看起来像:

ry4an@four:~/GeorgeMauer$ hg manifest
afile.txt

例如,如果您包含foo.csproj,那么

当您询问存储库中没有的文件时,您收到的错误消息是:

ry4an@four:~/GeorgeMauer$ hg blame filedoesnotexist
abort: filedoesnotexist: no such file in rev 72a94e6fe429

所以要么它从未被添加和提交,要么更有可能是你用错误的名字来称呼它。