gpt4 book ai didi

c# - 取消 "get latest version"在 TFS 中有效吗?

转载 作者:行者123 更新时间:2023-11-30 21:02:27 26 4
gpt4 key购买 nike

我选择从 TFS 连接的解决方案获取最新版本,然后按下取消,这个操作是事务性的,我的意思是取消获取最新版本命令是取消整个操作还是获取部分代码并取消剩余文件?

我的机器:

TFS 2010

VS 2010 SP1

最佳答案

TL;DR:是的,您的工作文件夹中的某些文件可能处于请求的变更集中,而某些文件处于其先前变更集中的状态,这是可能的。您可能希望获取特定的先前版本,以便“回滚”到该版本。

要查看发生了什么,我们可以将其分解为执行 get 时执行的实际步骤:

首先,客户端请求服务器获取特定版本。服务器将计算需要传输哪些文件才能将您从当前所在的变更集带到您请求的变更集。它会将这些作为一系列“获取操作”返回给客户端。

此时,客户端应产生多个线程来为获取操作提供服务。这些线程中的大多数将是下载数据并将其放在磁盘上的线程。将有一个额外的线程专门用于向服务器发送“本地版本更新”。

下载线程从服务器返回的列表中取出 get 操作并将其下载到磁盘的临时位置。下载完成后,他们会将其移动到永久位置,并通知发送本地版本更新的线程文件已完全下载。

本地版本更新线程将对来自下载线程的本地版本更新进行批处理,直到达到某个固定数量,因为本地版本更新消息非常小,一次发送一个消息会产生不必要的网络开销。一旦本地版本更新线程积累了足够的更新,它们将被发送到服务器。这是服务器知道客户端拥有他们请求的文件版本的时间点。

下载线程将继续为 get 操作提供服务,直到没有更多要处理为止,本地版本更新线程将继续,直到所有下载线程都完成下载并且所有本地版本更新都已发送到服务器。一旦这些发生,get 就完成了。

如果客户端支持取消,其逻辑应如下所示:如果用户请求取消(例如,通过在基于 UI 的客户端中按下“取消”按钮),则应通知所有下载工作线程取消。如果他们正在下载文件,他们应该立即停止(只是丢弃他们正在阅读的 HTTP 响应。)但是,一旦他们将文件从其临时位置移动到永久位置,他们必须通知本地版本在他们退出之前更新线程。本地版本更新线程必须等待所有下载线程完成,然后在退出之前刷新任何未完成的本地版本更新。

因此,如果您要在获取过程中取消,您可能在磁盘上有一些您尝试下载的文件,但客户端和服务器应该对每个文件的版本有一致的看法.

如果您要终止客户端,使其无法完全停止工作线程(例如,通过简单地关闭计算机电源),那么您可能会进入项目已停止的状态已提交到磁盘,但客户端尚未将本地版本更新刷新到服务器。在这种情况下,您可能在磁盘上有一个版本,而服务器认为您有一个不同的版本。万一发生这种情况,您需要在获取此文件时使用“强制”选项来解决此问题。

关于c# - 取消 "get latest version"在 TFS 中有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com