有什么简单的方法可以确定使用SharpSVN修改文件的指定行中的哪个提交?
假设我有以下三个提交:
提交1:
Hello
提交2:
Hello, World!
提交3:
Hello, World!
Hi There :D
我正在寻找某种功能来执行以下操作:
LastMod(lineNum: 1); //returns 2, since the first line was last modified in commit 2
LastMod(lineNum: 2); //returns 3, for the same reason
我需要大规模地执行此操作(大型SVN存储库,每个文件有成百上千的行),所以仅仅“蛮力”比较来自先前提交的每一行可能是行不通的。不确定SVN是否提供所需的实现,我是SVN和SharpSVN的新手。
谢谢!
好的,我对SharpSVN不了解,但是我想我可以帮忙...
Subversion有所谓的特殊命令annotate
或blame
或praise
。该命令的作用是列出文件中的所有行,并显示最后一行的更改时间以及更改的对象。
C> REM: produce an annotated report on foo.c#
C> svn blame foo.c#
这将生成一个看起来像这样的报告(嗯,不是这样,因为这是杂乱的Java代码,但是您知道了):
109990 jevans package com.tc.cache.frontend;
109990 jevans
109990 jevans import com.tangosol.net.CacheFactory;
109990 jevans import com.tangosol.net.NamedCache;
140072 dweintraub import java.util.ArrayList;
136130 ihroseline import java.util.List;
136130 ihroseline import java.util.Map;
123931 bfelds import org.apache.commons.logging.Log;
109990 jevans import org.apache.commons.logging.LogFactory;
第一列是更改行的修订版本,第二列是更改行的人。剩下的就是源代码行。
如果不是C#开发人员,我真的无能为力。但是,SharpSVN具有一个名为SvnBlameArgs的类,看起来它可能会做同样的事情。还有一个SvnBlameEventArgs类。
SvnClient类中还包含一个Blame方法。我敢打赌,该SvnBlame
方法是产生我上面显示的相同类型报告的一种方式。
对不起,我无能为力了...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句