Version control 如何比较两个文件并忽略注释中的任何更改?

Version control 如何比较两个文件并忽略注释中的任何更改?,version-control,merge,comments,Version Control,Merge,Comments,我正在使用C#和VB.NET 我经常(每天…)向现有源文件添加注释。当我签入这些文件时,我想让我的合并工具忽略对注释所做的任何更改——我只是想确保我没有更改代码 我使用WiMySand和Team Foundation控件服务器(是的,没有机会:当我接受这个任务时,颠覆不是一个选项:O)。它们都可以忽略空白,但不能忽略注释。结果:在签入之前,我必须仔细查看我对每个文件所做的所有更改。这相当麻烦 (好吧,因为我的大多数同事根本不发表评论——嘿,他们使用相当长的名称空间/类/方法/属性/类型/常量名称

我正在使用C#和VB.NET

我经常(每天…)向现有源文件添加注释。当我签入这些文件时,我想让我的合并工具忽略对注释所做的任何更改——我只是想确保我没有更改代码

<>我使用WiMySand和Team Foundation控件服务器(是的,没有机会:当我接受这个任务时,颠覆不是一个选项:O)。它们都可以忽略空白,但不能忽略注释。结果:在签入之前,我必须仔细查看我对每个文件所做的所有更改。这相当麻烦

(好吧,因为我的大多数同事根本不发表评论——嘿,他们使用相当长的名称空间/类/方法/属性/类型/常量名称来说明一切,伙计们!——这需要做很多工作。)

有什么建议吗

祝你一切顺利,
Sylvain。

BeyondCompare有一个过滤器,用于忽略“不重要”的更改,默认情况下注释属于该类别。

如果注释的内容不是您关心的内容,也不重要,为什么不删除它们


如果您创建的代码中包含可读性和可理解性良好的文档,那么为什么不查看对元数据的更改呢?

您说过您使用了WinMerge-它可以过滤掉注释。 但是,它仅适用于单独一行上的注释,例如:

int i; // comment
将被检测为不同于

int i;

听起来像是在使用注释作为工具来理解代码。这是一个有趣的想法,相当于突出一本书或做笔记。但在与他人合作之前,您需要确保去掉所有这些暂时的评论

在比较或升级之前,请通过删除注释的筛选程序运行源文件。这可能是一个单行perl脚本

为了更简单,对非永久性评论使用一种独特的模式,使它们更容易过滤(并区分这些临时评论和您真正想保留在源代码中的评论)。如果你在C++中写,总是使用

注释
 //Sylvain: this is my comment here.

或者其他更容易grep的模式。

在代码中添加注释是因为代码很难阅读,代码应该是自描述的,就像有人说过的,好的代码就像好的笑话,不需要解释。最好更改变量名,将代码的一部分放入子例程中。重新考虑因素比评论好。即使你找到了一个工具来解决你的评论问题,它也不能解决真正的问题,那就是让你的代码易于理解。

有一个选项“忽略评论更改”和“忽略纯格式更改”,这应该满足你的要求。

在我的winmerge中有一个选项>比较过滤器评论。不知道它有多好,但可能值得一试。哇,我用它做了一些测试,这正是我想要的!非常感谢你的提示:o)对不起,我的英语很差-事实上,我真的很在乎评论!这就是为什么当我必须弄清楚事情是如何运作的时候,我总是添加一些。很好的提示。我的问题是:大多数时候,我不修改评论,我添加了一些。谢谢你的回答!好吧,大多数时候,我在理解代码时不会对代码进行注释——事实上,我对代码进行注释是为了让我的同事轻松工作。所以我所有的评论都必须签入。但是你的想法很有意思-我们可以去掉比较工具的注释,然后在签入之前把它们带回来。。。谢谢你的回答,亚历克斯!好吧,你是对的:好的代码不需要注释。问题是,我的开发伙伴们编写了相当好的代码(他们总是使用已知的设计模式,而且他们很聪明),但像我这样无知的人无法理解他们做了什么!我不是写软件的人,我是必须维护它的人。而且大多数情况下都相当复杂。为什么不告诉读者这本书的用意呢?对我来说,不说一个班级的目的至少有两行评论是犯罪。