2
  • 我正在寻找有关如何使用TFS Java SDK在 TFS 服务器中订阅 CheckinEvents 的信息。

我遇到了这个链接,它展示了如何使用 TFS .Net SDK 来做到这一点。

TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(txtTfsURL.Text), new UICredentialsProvider());
tpc.EnsureAuthenticated();
IEventService eventService = tpc.GetService(typeof(IEventService)) as IEventService;
DeliveryPreference delPref = new DeliveryPreference();
delPref.Address = “http://” + System.Environment.MachineName + “:8001/CheckInNotify”;
delPref.Schedule = DeliverySchedule.Immediate;
delPref.Type = DeliveryType.Soap;
subscriptionId = eventService.SubscribeEvent(System.Environment.UserDomainName + “\\” + System.Environment.UserName, “CheckInEvent”, “”, delPref);
lblSubscription.Content = string.Format("A checkin subscription is created with subscription id : {0}",subscriptionId.ToString());

对应的 Java API 是什么?它们和下面的一样吗?

TFSTeamProjectCollection.getVersionControlClient().getEventEngine().addCheckinListener(CheckinListener listener);

另外我怀疑只有当我们使用同一个客户端签入时才会通知这个监听器。那是对的吗?

  • 另外,我们如何从通知 SOAP 响应中识别 TFS 集合和项目?

有一个 GUID 是收集的 guid,但它是其他数据的一部分,因此不确定它是否始终可用和项目名称。有任何想法吗?

  • 你如何确保你不会两次订阅同一个集合?我们可以只订阅一个项目吗?
4

1 回答 1

0
  1. 不,您提供的两个示例不等效。第一个示例设置 SOAP 通知,并且 Team Foundation Server 将在任何用户签入时向配置的端点发送 SOAP 消息。第二个示例将配置客户端的事件“引擎”,以便在您的客户端成功签入时调用您的签入侦听器。

  2. 正如您所注意到的,Java API 将配置 Java API 以在您签入时触发事件。您不能使用 Java API 配置 SOAP 事件 - 或发生在服务器本身上的全局事件。

  3. 我建议您使用唯一的 URI 来标识项目集合。查询参数在这里是合适的。要识别项目,您只需查看服务器路径。

  4. 我不熟悉何时交付项目集合 GUID,但我会通过上面的 #3 来消除歧义。

于 2013-02-22T05:58:07.457 回答