合并 TFS 签入策略以获得正确的文件名
Incorporating TFS check in policy for proper file name
上下文:一些开发人员在签入他们的代码之前没有维护正确的命名约定。因此,这些工件不会被构建过程拾取,因此依赖关系被破坏并导致在目标服务器上部署后失败。例如,包含 db 函数 GetMaxId()
的文件应具有类似 GetMaxId.Function.Ora.Sql
的命名约定
要求:是否可以为此实施任何签入政策,以便开发人员可以在签入之前通知该问题。在该过程中,我们可以节省大量时间和努力。
没有这样的现有签入政策,但是您可以应用 Check-in Notes
在签入前将此问题通知开发人员。
导航至 团队 Explorer-Home --> 设置 --> 源代码管理 --> 添加一个check-in注释,
- 设置标题 例如:
Please make sure maintain proper naming conventions before check in
- 启用
Required on check-ins
因此,系统将阻止开发人员在未输入注释的情况下签入更改,并且 title 将提示开发人员在签入之前保持正确的命名约定。一旦验证,然后输入注释和检查更改...
是的,这可以使用 TFVC 签入策略实现,该策略将 运行 包含在 Visual Studio 中。这是一个需要部署到每个客户端的自定义 dll。签入策略只是一段代码,当用户打开签入待定更改时 运行 windows.
您需要为每个需要支持的 Visual Studio 版本创建一个策略集。 The right set of framework libraries etc can be found here.
您需要覆盖 Evaluate
方法来执行您的检查。您可以通过 this.PendingCheckin.PendingChanges...
访问选定的待定更改列表。下面是一个策略示例,它查看选择要签入的文件:
public override PolicyFailure[] Evaluate()
{
if (PendingCheckin.PendingChanges.AffectedTeamProjectPaths.Length > 1)
{
return new[]{new PolicyFailure("Checking into multiple projects at the same time", this)};
}
var branches = this.PendingCheckin.PendingChanges.Workspace.VersionControlServer
.QueryRootBranchObjects(RecursionType.Full);
var groupedChanges = PendingCheckin.PendingChanges.CheckedPendingChanges.GroupBy(
change => branches.SingleOrDefault(branch => change.ServerItem.StartsWith(branch.Properties.RootItem.Item)));
if (groupedChanges.Count() > 1)
{
return new[]{new PolicyFailure("Checking into multiple branches at the same time", this)};
}
return new PolicyFailure[0];
}
您需要自己对要与文件名匹配的文件进行解析,或者依靠其他库来为您解析。 Checkin 策略框架只允许您访问文件的路径。
如果您要解析文件,您可能需要一些缓存。
上下文:一些开发人员在签入他们的代码之前没有维护正确的命名约定。因此,这些工件不会被构建过程拾取,因此依赖关系被破坏并导致在目标服务器上部署后失败。例如,包含 db 函数 GetMaxId()
的文件应具有类似 GetMaxId.Function.Ora.Sql
要求:是否可以为此实施任何签入政策,以便开发人员可以在签入之前通知该问题。在该过程中,我们可以节省大量时间和努力。
没有这样的现有签入政策,但是您可以应用 Check-in Notes
在签入前将此问题通知开发人员。
导航至 团队 Explorer-Home --> 设置 --> 源代码管理 --> 添加一个check-in注释,
- 设置标题 例如:
Please make sure maintain proper naming conventions before check in
- 启用
Required on check-ins
因此,系统将阻止开发人员在未输入注释的情况下签入更改,并且 title 将提示开发人员在签入之前保持正确的命名约定。一旦验证,然后输入注释和检查更改...
是的,这可以使用 TFVC 签入策略实现,该策略将 运行 包含在 Visual Studio 中。这是一个需要部署到每个客户端的自定义 dll。签入策略只是一段代码,当用户打开签入待定更改时 运行 windows.
您需要为每个需要支持的 Visual Studio 版本创建一个策略集。 The right set of framework libraries etc can be found here.
您需要覆盖 Evaluate
方法来执行您的检查。您可以通过 this.PendingCheckin.PendingChanges...
访问选定的待定更改列表。下面是一个策略示例,它查看选择要签入的文件:
public override PolicyFailure[] Evaluate()
{
if (PendingCheckin.PendingChanges.AffectedTeamProjectPaths.Length > 1)
{
return new[]{new PolicyFailure("Checking into multiple projects at the same time", this)};
}
var branches = this.PendingCheckin.PendingChanges.Workspace.VersionControlServer
.QueryRootBranchObjects(RecursionType.Full);
var groupedChanges = PendingCheckin.PendingChanges.CheckedPendingChanges.GroupBy(
change => branches.SingleOrDefault(branch => change.ServerItem.StartsWith(branch.Properties.RootItem.Item)));
if (groupedChanges.Count() > 1)
{
return new[]{new PolicyFailure("Checking into multiple branches at the same time", this)};
}
return new PolicyFailure[0];
}
您需要自己对要与文件名匹配的文件进行解析,或者依靠其他库来为您解析。 Checkin 策略框架只允许您访问文件的路径。
如果您要解析文件,您可能需要一些缓存。