Command line 与SourceSafe交互的更快方式是什么?命令行还是对象模型?

Command line 与SourceSafe交互的更快方式是什么?命令行还是对象模型?,command-line,build-automation,visual-sourcesafe,object-model,Command Line,Build Automation,Visual Sourcesafe,Object Model,我们的项目保存在SourceSafe数据库中。我们有一个自动构建,每天晚上在专用构建机器上运行。作为构建过程的一部分,我们从SourceSafe获取安装的源代码和相关数据。这可能需要相当长的时间,并构成构建过程的大部分(否则主要由安装文件的创建控制) 目前,我们使用命令行工具ss.exe与SourceSafe交互。我们使用的命令用于递归获取项目源和数据、签出版本文件、签入更新的版本文件以及标记。但是,我知道SourceSafe还支持对象模型 有没有人对这个对象模型有经验 与使用命令行工具相比,

我们的项目保存在SourceSafe数据库中。我们有一个自动构建,每天晚上在专用构建机器上运行。作为构建过程的一部分,我们从SourceSafe获取安装的源代码和相关数据。这可能需要相当长的时间,并构成构建过程的大部分(否则主要由安装文件的创建控制)

目前,我们使用命令行工具ss.exe与SourceSafe交互。我们使用的命令用于递归获取项目源和数据、签出版本文件、签入更新的版本文件以及标记。但是,我知道SourceSafe还支持对象模型

  • 有没有人对这个对象模型有经验
  • 与使用命令行工具相比,它是否提供了在我们的过程中可能有用的优势
  • 有什么缺点吗
  • 在命令行上使用对象模型会提高性能吗

  • 我们已经将源代码管理升级到Team Foundation Server。当我们使用VSS时,我在CruiseControl.Net构建日志中注意到了同样的事情(注意:我从未研究过CC使用什么;我假设使用命令行)

    根据我的经验,我认为问题在于VSS。我们的TFS位于1000英里以外,比服务器之间用大约6英尺的以太网电缆隔开时速度更快


    编辑:戴上我的商务帽,如果你加上等待构建所花费的时间+尝试加速构建所花费的时间可能足以保证升级或另一篇文章中提到的VSS插件(已经+1'd it)。我不会花太多时间在VSS上构建解决方案。

    VSS使用装载的文件系统来共享数据库。当您从SourceSafe获取文件时,它在文件系统级别工作,这意味着它不只是向您发送文件,而是向您发送磁盘的所有块以查找文件和文件。这将增加更多的事务和额外的数据

    当通过远程或慢速连接或大型项目使用VSS时,它几乎不可用

    有一种产品,当通过网络使用时,将VSS的速度提高了约12倍。它通过实现客户机-服务器协议来实现这一点。此外,还可以对其进行加密,这在通过internet使用VSS时非常有用

    我与他们没有工作或任何联系,我只是在以前的一家公司使用过它


    请参见www.sourcegear.com上的SourceOffSite。

    我可以想象,命令行是在内部使用与对象模型中相同的代码实现的,因此,除非需要大量启动,否则不会有太大的区别

    使用对象模型进行重写的成本可能比让它保持原样所节省的成本要高。除非你对所花的时间有明确的问题,否则我怀疑这对你来说将是一个很大的解决方案

    您可以调查卷影目录,使最新版本始终可用,这样您就不必每次都执行“getlatest”,并且可以确保您正在与本地VSS通信(因为所有命令都直接在文件系统上执行,所以WAN操作的成本非常高)


    否则,除非您想使用不同的SCM,否则您将陷入困境(我建议使用SVN—在codeplex上有一个可供使用的版本,示例代码显示了如何使用VSS ans SVN对象模型)

    关于您问题中唯一一个似乎有实质内容的部分的回答,请参见我的另一个回答,因为“慢度”来自VSS和数据库之间共享文件的协议,因此切换到对象模型不会更快

    我提到的产品可以通过VSS解决您的问题。您仍然使用VSS和ahev来获得使用许可证。。。它只是在你需要的地方加速


    不知道你为什么记下我

    我打赌运行对象模型将至少慢2小时….;-)

    如何使用命令行工具?你不是偶然在每个文件中调用该工具一次吗

    听起来不太像(“递归获取”意味着你不是),但我想我应该把这个想法放进去。其他人可能会遇到与您类似的问题,这在源代码控制系统中似乎非常常见

    ClearCase在一个客户机上的表现就像一只完整的狗,因为客户机的后端脚本做到了这一点。每个命令行调用都会创建一个连接,对用户进行身份验证,获取一个文件,然后关闭连接。数万次。哦,命令行界面和一点Perl的危险


    有了API,您很可能会在操作之间正确地保持会话打开。

    Oh以便能够更改我们的源代码管理系统。不幸的是,这样的奢侈品不是手边的。我知道还有其他的工具。这不是我的问题。我想知道对象模型是否比命令行工具更好。我们没有购买新软件的选择权。我不知道为什么你因为我提出了你问题中唯一实际问题的答案而贬低我。你想要一个答案还是仅仅是要点?我知道有其他的工具,但我们被告知我们不能使用它们。我的问题很清楚,而你的回答并没有解决这个问题。这不是一个可供你使用的工具。抱歉,我应该说“附加”。这就是我自己想象的情况。至于替代方案,我知道它们是存在的,但没有钱购买新软件,而且在免费替代方案的情况下,目前还无法说服各方相信,当我们所做的工作(缓慢地)起作用时,这是一个明智的举措。等到你签入一个非常大的文件,或者从广域网的客户端签入时再这样做。一旦你恢复了你的腐败VS