问题
I'm trying to whrite my own checkin policy. I want to review if any .cs file contains some code. So my question is, if its possible to get the content of every file from the changeset in the overriden Initialize-Methode and/or Evaluate-Methode (from PolicyBase).
Thanks in advanced!
回答1:
You can't get the contents from the files directly, you'll need to open them yourselves. For each checked In your Evaluate
method, you should look at the PendingCheckin.PendingChanges.CheckedPendingChanges
(to ensure that you only limit yourself to the pending changes that will be checked in.) Each PendingChange
has a LocalItem
that you can open and scan.
For example:
public override PolicyFailure[] Evaluate()
{
List<PolicyFailure> failures = new List<PolicyFailure>();
foreach(PendingChange pc in PendingCheckin.PendingChanges.CheckedPendingChanges)
{
if(pc.LocalItem == null)
{
continue;
}
/* Open the file */
using(FileStream fs = new FileStream(pc.LocalItem, ...))
{
if(/* File contains your prohibited code */)
{
failures.Add(new PolicyFailure(/* Explain the problem */));
}
fs.Close();
}
}
return failures.ToArray();
}
来源:https://stackoverflow.com/questions/8821614/custom-checkin-policy-access-to-filecontent-from-changeset-files