来自VisualStudioOnline的git存档,似乎挂了,,

时间:2016-11-03 17:21:32

标签: git azure-devops

尝试从git repo中获取一些本地化XML文件。旨在定期自动执行此操作。

我成功生成了一个SSH密钥对,将公共密钥对与visualstudioonline相关联,并将我的私钥加载到我的本地身份验证代理中

我执行命令:

git archive --verbose --format=zip --output=/z/a.zip --remote=ssh://user@somedomain.visualstudio.com:22/DefaultCollection/_git/THE_PROJECT master /THE/PATH/TO/WhatIWant/

这只是挂起。它确实创建了一个0字节的zip文件,但它永远不会填充它。它从不向控制台发送任何消息,因此我不确定它在做什么

如果我使用HTTPS,那么git会失败并且"协议"

不支持"操作

-

我注意到如果我在没有--remote开关的情况下运行命令,并确保我的当前目录位于repo的克隆版本中,那么一切都可以解决

这是否意味着VSO永远不会创建一个zip文件?是" git archive"在VSO上支持吗?

1 个答案:

答案 0 :(得分:2)

您可以使用REST API通过TFS Extended Client library以编程方式实现此目的。因此,您可以创建一个带有一些参数的控制台应用程序,以编程方式从存储库下载源文件,然后从命令中调用它。

  1. 将扩展客户端软件包添加/安装到您的项目
  2. 简单代码
  3. var u = new Uri("https://XXX.visualstudio.com");
                    VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("username", "password")));
                    var connection = new VssConnection(u, c);
    
                    var gitServer = connection.GetClient<GitHttpClient>();
                  Stream s=  gitServer.GetItemZipAsync(project:"ScrumGitStarain", repositoryId:"LocalPushTest",path: "/ClassLibrary1").Result;
                    using (var fileStream = File.Create(@"D:\t.zip"))
                    {
                        s.CopyTo(fileStream);
                    }